ใน บทความที่แล้ว เราได้พูดถึงการเติบโตแบบก้าวกระโดดของงานอีเวนต์ในโลกที่ขับเคลื่อนด้วยข้อมูลของปัจจุบัน ด้วยแอป อุปกรณ์อัจฉริยะ และเครื่องจักรจำนวนมากที่อยู่รอบตัวเรา ปริมาณข้อมูลที่สร้างขึ้นจึงมหาศาล นอกจากนี้ เรายังสำรวจว่าแพลตฟอร์มออร์เคสตราสามารถช่วยส่งมอบงานอีเวนต์เหล่านี้ไปยังแอปพลิเคชันที่เหมาะสมได้อย่างไร อย่างไรก็ตาม การจัดงานอีเวนต์อาจไม่เพียงพอสำหรับธุรกิจที่จะสร้างผลกระทบ
การวิเคราะห์เหตุการณ์เหล่านี้เพื่อทำความเข้าใจพฤติกรรมของผู้ใช้ ช่วยให้ธุรกิจสามารถให้บริการลูกค้าได้ดีขึ้นโดยการตัดสินใจที่ชาญฉลาดขึ้น แพลตฟอร์มวิเคราะห์แบบเรียลไทม์สามารถช่วยแปลงข้อมูลของเหตุการณ์เป็นข้อมูลเชิงลึกที่มีความหมายได้
บทความนี้จะอธิบายวิธีสร้างแพลตฟอร์มการวิเคราะห์แบบเรียลไทม์โดยใช้ AWS การประเมินโซลูชันที่เป็นไปได้ และให้คำแนะนำทีละขั้นตอนในการนำแพลตฟอร์มที่ปรับขนาดได้และเชื่อถือได้มาใช้ การสร้างแพลตฟอร์มนี้เกี่ยวข้องกับสามขั้นตอน ได้แก่ การนำข้อมูลเข้ามา การประมวลผล และการสอบถาม การวิเคราะห์แบบเรียลไทม์มักมุ่งเน้นไปที่แนวโน้มและรูปแบบในช่วงเวลาหนึ่ง ไม่ว่าจะเป็นพฤติกรรมของผู้ใช้หรือประสิทธิภาพของระบบ
ข้อมูลแบบไทม์ซีรีส์จะจัดระเบียบเหตุการณ์ตามลำดับ ทำให้สามารถวิเคราะห์ข้อมูลจากช่วงเวลาหนึ่งไปยังอีกช่วงเวลาหนึ่งได้อย่างง่ายดาย การจัดเก็บแบบไทม์ซีรีส์สอดคล้องกับความต้องการนี้อย่างสมบูรณ์แบบ ช่วยให้แอปพลิเคชันสามารถคำนวณเมตริกได้ AWS นำเสนอเครื่องมือต่างๆ เช่น SQS, Lambda, Timestream และ Quicksight ที่ทำงานร่วมกันได้อย่างราบรื่นเพื่อสร้างแพลตฟอร์มนี้
มีสามส่วนหลักที่เกี่ยวข้องในการสร้างแพลตฟอร์มการวิเคราะห์แบบเรียลไทม์
การแสดงภาพและการสอบถาม : แดชบอร์ดที่กำหนดเองหรือ Quicksight สามารถบูรณาการกับ Timestream สำหรับการแสดงภาพและข้อมูลเชิงลึก
แผนภาพด้านล่างแสดงสถาปัตยกรรมของแพลตฟอร์มการวิเคราะห์
Amazon Timestream ซึ่งเป็นฐานข้อมูลลำดับเวลาของ AWS ได้รับการออกแบบมาเพื่อรับมือกับความท้าทายในการประมวลผลและวิเคราะห์ข้อมูลจำนวนมหาศาลอย่างมีประสิทธิภาพ Timestream เป็นแบบไร้เซิร์ฟเวอร์ ปรับขนาดได้ และเหมาะสำหรับแอปพลิเคชันที่ต้องการการวิเคราะห์ข้อมูลแบบเรียลไทม์ คุณสมบัติหลัก ได้แก่:
เทมเพลตการสร้างคลาวด์ (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 สำหรับการประมวลผลและการวิเคราะห์แบบแบตช์