ใน บทความที่แล้ว เราได้พูดถึงการเติบโตแบบก้าวกระโดดของงานอีเวนต์ในโลกที่ขับเคลื่อนด้วยข้อมูลของปัจจุบัน ด้วยแอป อุปกรณ์อัจฉริยะ และเครื่องจักรจำนวนมากที่อยู่รอบตัวเรา ปริมาณข้อมูลที่สร้างขึ้นจึงมหาศาล นอกจากนี้ เรายังสำรวจว่าแพลตฟอร์มออร์เคสตราสามารถช่วยส่งมอบงานอีเวนต์เหล่านี้ไปยังแอปพลิเคชันที่เหมาะสมได้อย่างไร อย่างไรก็ตาม การจัดงานอีเวนต์อาจไม่เพียงพอสำหรับธุรกิจที่จะสร้างผลกระทบ
การวิเคราะห์เหตุการณ์เหล่านี้เพื่อทำความเข้าใจพฤติกรรมของผู้ใช้ ช่วยให้ธุรกิจสามารถให้บริการลูกค้าได้ดีขึ้นโดยการตัดสินใจที่ชาญฉลาดขึ้น แพลตฟอร์มวิเคราะห์แบบเรียลไทม์สามารถช่วยแปลงข้อมูลของเหตุการณ์เป็นข้อมูลเชิงลึกที่มีความหมายได้
บทความนี้จะอธิบายวิธีสร้างแพลตฟอร์มการวิเคราะห์แบบเรียลไทม์โดยใช้ AWS การประเมินโซลูชันที่เป็นไปได้ และให้คำแนะนำทีละขั้นตอนในการนำแพลตฟอร์มที่ปรับขนาดได้และเชื่อถือได้มาใช้ การสร้างแพลตฟอร์มนี้เกี่ยวข้องกับสามขั้นตอน ได้แก่ การนำข้อมูลเข้ามา การประมวลผล และการสอบถาม การวิเคราะห์แบบเรียลไทม์มักมุ่งเน้นไปที่แนวโน้มและรูปแบบในช่วงเวลาหนึ่ง ไม่ว่าจะเป็นพฤติกรรมของผู้ใช้หรือประสิทธิภาพของระบบ
ข้อมูลแบบไทม์ซีรีส์จะจัดระเบียบเหตุการณ์ตามลำดับ ทำให้สามารถวิเคราะห์ข้อมูลจากช่วงเวลาหนึ่งไปยังอีกช่วงเวลาหนึ่งได้อย่างง่ายดาย การจัดเก็บแบบไทม์ซีรีส์สอดคล้องกับความต้องการนี้อย่างสมบูรณ์แบบ ช่วยให้แอปพลิเคชันสามารถคำนวณเมตริกได้ AWS นำเสนอเครื่องมือต่างๆ เช่น SQS, Lambda, Timestream และ Quicksight ที่ทำงานร่วมกันได้อย่างราบรื่นเพื่อสร้างแพลตฟอร์มนี้
มีสามส่วนหลักที่เกี่ยวข้องในการสร้างแพลตฟอร์มการวิเคราะห์แบบเรียลไทม์
- การนำข้อมูลเข้ามา : เหตุการณ์ที่เผยแพร่จากแอปพลิเคชันสามารถไหลเข้าสู่ AWS ผ่าน Amazon Kinesis หรือไปยัง SQS โดยตรงได้
- การประมวลผลข้อมูล : AWS Lambda สามารถประมวลผลข้อมูลและเขียนลงใน Timesream ได้
การแสดงภาพและการสอบถาม : แดชบอร์ดที่กำหนดเองหรือ Quicksight สามารถบูรณาการกับ Timestream สำหรับการแสดงภาพและข้อมูลเชิงลึก
แผนภาพด้านล่างแสดงสถาปัตยกรรมของแพลตฟอร์มการวิเคราะห์
ไทม์สตรีม
Amazon Timestream ซึ่งเป็นฐานข้อมูลลำดับเวลาของ AWS ได้รับการออกแบบมาเพื่อรับมือกับความท้าทายในการประมวลผลและวิเคราะห์ข้อมูลจำนวนมหาศาลอย่างมีประสิทธิภาพ Timestream เป็นแบบไร้เซิร์ฟเวอร์ ปรับขนาดได้ และเหมาะสำหรับแอปพลิเคชันที่ต้องการการวิเคราะห์ข้อมูลแบบเรียลไทม์ คุณสมบัติหลัก ได้แก่:
- การปรับขนาดอัตโนมัติ : สามารถประมวลผลเหตุการณ์ได้นับล้านล้านรายการต่อวัน โดยปรับขนาดโดยอัตโนมัติเพื่อตอบสนองความต้องการ
- ประสิทธิภาพ : ให้ประสิทธิภาพการค้นหาที่เร็วกว่าถึง 1,000 เท่าเมื่อเปรียบเทียบกับฐานข้อมูลเชิงสัมพันธ์
- Serverless : ได้รับการจัดการโดย AWS อย่างสมบูรณ์ จึงช่วยลดค่าใช้จ่าย
- ระดับการเก็บข้อมูลอัจฉริยะ : ระดับการเก็บข้อมูลที่ได้รับการปรับให้เหมาะสมสำหรับข้อมูลล่าสุด (ในหน่วยความจำ) และในอดีต (ที่เก็บข้อมูลแบบแม่เหล็ก)
- รองรับการค้นหา SQL : รองรับการค้นหา SQS สำหรับการดำเนินการค้นหาที่ซับซ้อน การรวมข้อมูล และการวิเคราะห์แบบอนุกรมเวลา
- การบูรณาการ : รองรับการบูรณาการอย่างราบรื่นกับบริการ AWS อื่นๆ
การนำไปปฏิบัติ
เทมเพลตการสร้างคลาวด์ (CFN) สำหรับทรัพยากรทั้งหมดที่จำเป็นสามารถพบได้ใน Github Repo
การนำข้อมูลเข้ามา
บริการสามารถเผยแพร่เหตุการณ์ที่เกี่ยวข้องไปยังคิว SQS ซึ่งทำหน้าที่เป็นคิวข้อความสำหรับระบบ เพื่อเพิ่มความน่าเชื่อถือ คิวจดหมายที่ส่งไม่ได้ (DLQ) จะถูกกำหนดค่าควบคู่ไปกับคิว SQS หลัก เหตุการณ์ที่ไม่สามารถประมวลผลได้จะถูกส่งไปที่ DLQ หลังจากเกณฑ์การลองใหม่ เหตุการณ์เหล่านี้ยังสามารถใช้ในการดีบัก การจัดการความล้มเหลว และการสืบสวนได้อีกด้วย
ด้านล่างนี้เป็นตัวอย่างของเทมเพลต CFN เพื่อสร้างคิว SQS และ DLQ ที่เกี่ยวข้อง:
EventQueueDLQ: Description: 'An DLQ queue that receives failed events' Type: AWS::SQS::Queue Properties: FifoQueue: true ContentBasedDeduplication: true QueueName: !Ref DLQQueueName SqsManagedSseEnabled: true VisibilityTimeout: 240 EventQueue: Description: 'An SQS queue that receives events' Type: 'AWS::SQS::Queue' Properties: QueueName: !Ref SQSQueueName FifoQueue: true ContentBasedDeduplication: true KmsMasterKeyId: alias/aws/sqs VisibilityTimeout: 240 RedrivePolicy: deadLetterTargetArn: !Sub ${EventQueueDLQ.Arn} maxReceiveCount: 5
การประมวลผลข้อมูล
ฟังก์ชัน AWS Lambda ถูกกำหนดค่าให้ทำหน้าที่เป็นตัวประมวลผลข้อมูล ซึ่งรับผิดชอบในการจัดการและประมวลผลเหตุการณ์ที่เผยแพร่ไปยังคิว SQS โดยจะส่งเหตุการณ์เป็นเมตริกไปยังฐานข้อมูล Timestream หลังจากการประมวลผล
ด้านล่างนี้เป็นตัวอย่างเทมเพลต CFN สำหรับ Lambda และการแมปไปยัง SQS:
EventProcessorLambda: Type: 'AWS::Lambda::Function' Description: 'Lambda function that processes events from the SQS queue and writes to Timestream.' Properties: FunctionName: !Ref LambdaFunctionName Handler: 'index.lambda_handler' Role: !GetAtt LambdaExecutionRole.Arn Runtime: 'python3.12' MemorySize: 1024 Timeout: 120 Environment: Variables: TIMESTREAM_DATABASE_NAME: !Ref EventsDatabaseName TIMESTREAM_TABLE_NAME: !Ref EventsTableName Code: ZipFile: | # Lambda function code goes here SQSToLambdaEventSourceMapping: Type: 'AWS::Lambda::EventSourceMapping' Description: 'Maps the SQS queue as the event source for the Lambda function.' Properties: BatchSize: 10 EventSourceArn: !GetAtt EventQueue.Arn FunctionName: !GetAtt EventProcessorLambda.Arn Enabled: 'True'
คลังข้อมูล
Amazon Timestream ทำหน้าที่เป็นที่จัดเก็บข้อมูลหลักสำหรับเหตุการณ์ทั้งหมดที่สร้างขึ้นในบริการต่างๆ การตั้งค่าประกอบด้วย:
- ฐานข้อมูล : ทำหน้าที่เป็นคอนเทนเนอร์เชิงตรรกะสำหรับตารางหนึ่งตารางหรือมากกว่า
- ตาราง : ภายในฐานข้อมูล ตารางจะจัดเก็บข้อมูลเมตริกที่แท้จริง
ด้านล่างนี้เป็นตัวอย่างสำหรับเทมเพลต CFN เพื่อสร้างฐานข้อมูล Timestream และตาราง:
EventsDatabase: Description: 'Timestream database to store event data' Type: 'AWS::Timestream::Database' Properties: DatabaseName: !Ref EventsDatabaseName KmsKeyId: alias/aws/timestream EventsTable: Description: 'Timestream table that stores event metrics' Type: 'AWS::Timestream::Table' DependsOn: EventsDatabase Properties: DatabaseName: !Ref EventsDatabase TableName: !Ref EventsTableName RetentionProperties: MemoryStoreRetentionPeriodInHours: 72 MagneticStoreRetentionPeriodInDays: 365
การแสดงภาพและการสอบถาม
สอบถามข้อมูล
Timestream นำเสนอคอนโซล Query ที่ให้ผู้ใช้สามารถรันแบบสอบถามกับตารางได้ ตัวอย่างเช่น:
-- Get the 10 most recent metrics in the past 15 minutes. SELECT * FROM "events-db"."events-metrics" WHERE time between ago(15m) and now() ORDER BY time DESC LIMIT 10
การสร้างภาพ
AWS มีการบูรณาการแบบพร้อมใช้งานมากมาย (เช่น QuickSight , Grafana ) ร่วมกับ Timestream ช่วยให้วิเคราะห์ แสดงภาพ และดึงข้อมูลเชิงลึกได้อย่างง่ายดาย
การทดสอบ
บริการสามารถเผยแพร่เหตุการณ์ในรูปแบบต่อไปนี้ไปยัง SQS เพื่อกระตุ้นกระบวนการประมวลผลทั้งหมด:
{ "order_id": "test-order-1", "customer_id": "test-customer-1", "event_type": "order_success", "metric_value": 1 }
บทสรุป
สถาปัตยกรรมนี้นำเสนอวิธีการที่เรียบง่ายและมีประสิทธิภาพในการสร้างแพลตฟอร์มการวิเคราะห์ที่ปรับขนาดได้และเชื่อถือได้ มีทางเลือกอื่นๆ ขึ้นอยู่กับความต้องการเฉพาะ เช่น AWS Kinesis Streams สำหรับการประมวลผลเหตุการณ์ Prometheus สำหรับการจัดเก็บข้อมูล และ S3+Athena สำหรับการประมวลผลและการวิเคราะห์แบบแบตช์