รูปแบบ Event-driven ด้วย EventBridge

การ Deploy แอปพลิเคชันบน AWS

Dunieski Otano

Amazon Web Services Solutions Architect

คำสั่งซื้อหนึ่งรายการ สี่ปฏิกิริยา

  • คำสั่งซื้อหนึ่งรายการต้องส่งถึง billing, fulfillment, analytics และ email
  • การเรียกตรงทั้งสี่ระบบนั้นเปราะบางและช้า
  • event เดียวกระจายไปยังทุก consumer

event หนึ่งรายการกระจายออกจาก topic กลางไปยังหลาย service ปลายทางพร้อมกัน

การ Deploy แอปพลิเคชันบน AWS

เลือก messaging service ให้เหมาะกับงาน

ตาราง 2x2 ของ AWS messaging services: SQS queue แบบ producer-consumer, SNS pub-sub fanout ไปยังหลาย subscriber, EventBridge event bus พร้อม rule-based routing และ Kinesis ordered shards ที่รองรับ replay

  • SQS: หนึ่ง queue, หนึ่ง consumer group, at-least-once
  • SNS: pub/sub, push ข้อความเดียวไปยังหลาย subscriber
  • EventBridge: กำหนดเส้นทาง event ตามเนื้อหาไปยังหลาย target
  • Kinesis Data Streams: streaming แบบเรียงลำดับและ replay ได้
การ Deploy แอปพลิเคชันบน AWS

รูปแบบ fanout

  • event หนึ่งรายการต้องส่งถึงหลาย consumerพร้อมกัน
  • publish ไปยังSNS topic
  • แต่ละSQS queueสมัครรับ topic นั้น
  • ทุก consumer ได้รับสำเนาของตัวเองโดยอิสระ

รูปแบบ SNS-to-SQS fanout: SNS topic หนึ่ง publish ไปยัง SQS queue หลายตัว แต่ละ queue ให้บริการ consumer ของตัวเองอย่างอิสระ

การ Deploy แอปพลิเคชันบน AWS

การกรองเพื่อให้ consumer ได้รับเฉพาะสิ่งที่ต้องการ

  • หากไม่มี filter ทุก subscriber จะได้รับทุก event
  • SNS subscription filter policies: กรองตาม message attribute
  • EventBridge content filters: จับคู่กับฟิลด์ใน event
  • แต่ละ consumer ได้รับเฉพาะ event ที่เกี่ยวข้อง

SNS subscription filter policy และ EventBridge content filter: แต่ละ consumer ได้รับเฉพาะ event ที่ตรงกับกฎ filter ช่วยลดการประมวลผลและค่าใช้จ่ายที่ไม่จำเป็น

การ Deploy แอปพลิเคชันบน AWS

การกำหนดเส้นทางด้วย EventBridge

แผนภาพ EventBridge routing: event bus รับ event จากหลายแหล่ง, rule จับคู่ event pattern และส่ง event ที่ตรงกันไปยัง Lambda, SQS และ service อื่น

  • Event bus: รับ event จากหลายแหล่ง
  • Rule: รูปแบบ event ที่ใช้จับคู่ event ที่ต้องการ
  • Target: ปลายทางที่ส่ง event ที่ตรงกัน
  • event หนึ่งรายการสามารถส่งไปยังหลาย target
การ Deploy แอปพลิเคชันบน AWS

Streaming ด้วย Kinesis Data Streams

  • ข้อมูลไหลแบบต่อเนื่อง real-time
    • ระเบียนภายใน shard เดียวกันเรียงลำดับ
    • Replay ได้: consumer อ่านย้อนหลังจากจุดใดก็ได้
    • หลาย consumer อ่าน stream เดียวกันอย่างอิสระ
    • เหมาะกับ clickstream, telemetry และข้อมูล throughput สูง

สถาปัตยกรรม Kinesis Data Streams: producer เขียนระเบียนเรียงลำดับลง shard ที่มีหมายเลข, consumer สาม consumer อ่านอิสระจากตำแหน่งต่างกัน พร้อมลูกศร rewind แสดงความสามารถ replay

การ Deploy แอปพลิเคชันบน AWS

Lambda ในฐานะ event consumer

  • Lambda ทริกเกอร์ได้จากSQS, SNS, EventBridge และ Kinesis
  • Event source mapping คอย poll SQS และ Kinesis แทน
  • SNS และ EventBridge push event ไปยัง Lambda โดยตรง
  • ประมวลผลใกล้ real-time โดยไม่ต้องจัดการ server

Lambda ทริกเกอร์จาก 4 แหล่ง: event source mapping poll SQS และ Kinesis แบบ batch ขณะที่ SNS และ EventBridge push event ตรงไปยัง Lambda

การ Deploy แอปพลิเคชันบน AWS

มาฝึกกันเถอะ!

การ Deploy แอปพลิเคชันบน AWS

Preparing Video For Download...