paint-brush
วิธีการเชี่ยวชาญการวิเคราะห์แบบเรียลไทม์ด้วย AWS: Timestream และ Beyondโดย@ravilaudya
310 การอ่าน
310 การอ่าน

วิธีการเชี่ยวชาญการวิเคราะห์แบบเรียลไทม์ด้วย AWS: Timestream และ Beyond

โดย Ravi Laudya6m2024/12/04
Read on Terminal Reader

นานเกินไป; อ่าน

บทความนี้จะอธิบายวิธีการสร้างแพลตฟอร์มการวิเคราะห์แบบเรียลไทม์ที่ปรับขนาดได้และเชื่อถือได้ โดยครอบคลุมถึงการรวบรวม การประมวลผล การแสดงภาพ และการสอบถามข้อมูลเพื่อแปลงข้อมูลเหตุการณ์ให้เป็นข้อมูลเชิงลึกที่ดำเนินการได้โดยใช้ส่วนประกอบของแพลตฟอร์ม AWS ได้แก่ SQS, Lambda และ Timestream
featured image - วิธีการเชี่ยวชาญการวิเคราะห์แบบเรียลไทม์ด้วย AWS: Timestream และ Beyond
Ravi Laudya HackerNoon profile picture

ใน บทความที่แล้ว เราได้พูดถึงการเติบโตแบบก้าวกระโดดของงานอีเวนต์ในโลกที่ขับเคลื่อนด้วยข้อมูลของปัจจุบัน ด้วยแอป อุปกรณ์อัจฉริยะ และเครื่องจักรจำนวนมากที่อยู่รอบตัวเรา ปริมาณข้อมูลที่สร้างขึ้นจึงมหาศาล นอกจากนี้ เรายังสำรวจว่าแพลตฟอร์มออร์เคสตราสามารถช่วยส่งมอบงานอีเวนต์เหล่านี้ไปยังแอปพลิเคชันที่เหมาะสมได้อย่างไร อย่างไรก็ตาม การจัดงานอีเวนต์อาจไม่เพียงพอสำหรับธุรกิจที่จะสร้างผลกระทบ


การวิเคราะห์เหตุการณ์เหล่านี้เพื่อทำความเข้าใจพฤติกรรมของผู้ใช้ ช่วยให้ธุรกิจสามารถให้บริการลูกค้าได้ดีขึ้นโดยการตัดสินใจที่ชาญฉลาดขึ้น แพลตฟอร์มวิเคราะห์แบบเรียลไทม์สามารถช่วยแปลงข้อมูลของเหตุการณ์เป็นข้อมูลเชิงลึกที่มีความหมายได้


บทความนี้จะอธิบายวิธีสร้างแพลตฟอร์มการวิเคราะห์แบบเรียลไทม์โดยใช้ AWS การประเมินโซลูชันที่เป็นไปได้ และให้คำแนะนำทีละขั้นตอนในการนำแพลตฟอร์มที่ปรับขนาดได้และเชื่อถือได้มาใช้ การสร้างแพลตฟอร์มนี้เกี่ยวข้องกับสามขั้นตอน ได้แก่ การนำข้อมูลเข้ามา การประมวลผล และการสอบถาม การวิเคราะห์แบบเรียลไทม์มักมุ่งเน้นไปที่แนวโน้มและรูปแบบในช่วงเวลาหนึ่ง ไม่ว่าจะเป็นพฤติกรรมของผู้ใช้หรือประสิทธิภาพของระบบ


ข้อมูลแบบไทม์ซีรีส์จะจัดระเบียบเหตุการณ์ตามลำดับ ทำให้สามารถวิเคราะห์ข้อมูลจากช่วงเวลาหนึ่งไปยังอีกช่วงเวลาหนึ่งได้อย่างง่ายดาย การจัดเก็บแบบไทม์ซีรีส์สอดคล้องกับความต้องการนี้อย่างสมบูรณ์แบบ ช่วยให้แอปพลิเคชันสามารถคำนวณเมตริกได้ AWS นำเสนอเครื่องมือต่างๆ เช่น SQS, Lambda, Timestream และ Quicksight ที่ทำงานร่วมกันได้อย่างราบรื่นเพื่อสร้างแพลตฟอร์มนี้


มีสามส่วนหลักที่เกี่ยวข้องในการสร้างแพลตฟอร์มการวิเคราะห์แบบเรียลไทม์

  • การนำข้อมูลเข้ามา : เหตุการณ์ที่เผยแพร่จากแอปพลิเคชันสามารถไหลเข้าสู่ AWS ผ่าน Amazon Kinesis หรือไปยัง SQS โดยตรงได้


  • การประมวลผลข้อมูล : AWS Lambda สามารถประมวลผลข้อมูลและเขียนลงใน Timesream ได้


  • การแสดงภาพและการสอบถาม : แดชบอร์ดที่กำหนดเองหรือ Quicksight สามารถบูรณาการกับ Timestream สำหรับการแสดงภาพและข้อมูลเชิงลึก


    แผนภาพด้านล่างแสดงสถาปัตยกรรมของแพลตฟอร์มการวิเคราะห์


การวิเคราะห์ด้วย AWS 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 สำหรับการประมวลผลและการวิเคราะห์แบบแบตช์

L O A D I N G
. . . comments & more!

About Author

Ravi Laudya HackerNoon profile picture
Ravi Laudya@ravilaudya
Technology expert in software architecture, design, and development utilizing AWS Cloud and AI technologies

แขวนแท็ก

บทความนี้ถูกนำเสนอใน...