4 พ.ค. 2023 เวลา 07:56 • วิทยาศาสตร์ & เทคโนโลยี

มาทำความรู้จักกับ McDonald’s Event-Driven Architecture

McDonald’s ใช้ events ใน distributed architecture สำหรับ use cases ต่างๆ เช่น การประมวลผลแบบอะซิงโครนัส การทำธุรกรรม และการวิเคราะห์ รวมถึงการ tracking ความคืบหน้าของ mobile order และส่งข้อเสนอทางการตลาด เช่น ดีลและโปรโมชันให้กับลูกค้า
แทนที่จะสร้าง event streaming solutions สำหรับแต่ละบุคคลหรือชุดของ microservices พวกเขาสร้างแพลตฟอร์มที่รวมเป็นหนึ่งเพื่อ consume event จาก producer (services) ทั้งจากภายนอกและภาย สิ่งนี้ทำให้มั่นใจได้ถึงความสอดคล้องในแง่ของการใช้งานและหลีกเลี่ยงความซับซ้อนในการ maintain event-streaming modules ต่างๆ
เป้าหมายการออกแบบสำหรับแพลตฟอร์มนี้คือความสามารถในการทำ scalability (แพลตฟอร์มที่จำเป็นในการ auto-scale ในกรณีที่โหลดเพิ่มขึ้น) availability, performance (events ที่จำเป็นในการจัดส่งแบบ real-time) security, reliability, simplicity และความสมบูรณ์ของข้อมูล (data integrity)
Kafka ถูกใช้เพื่อสร้าง event streaming platform และเนื่องจากระบบทำงานบน AWS พวกเขาจึงใช้ประโยชน์จาก AWS-managed streaming for Kafka (MSK) ซึ่งจะช่วยหลีกเลี่ยงค่าใช้จ่ายในการดำเนินการในการทำงานกับบริการ on-prem หรือ public cloud อื่น
เนื่องจากเป็น unified platform ที่ consume events จาก producer หลายราย และ events ก็ถูก consume โดย consumers หลายราย พวกเขาทำให้มี data consistency ได้โดยใช้ schema registry ที่สร้าง contract ที่ชัดเจนในการสร้าง events ที่ producers และ consumers ต้องปฏิบัติตามเมื่อต้องทำงานกับ events ผ่าน unified event streaming platform SDKs
ในกรณีที่ unified platform หยุดทำงาน ที่เก็บข้อมูล event store (AWS Dynamo DB) จะถูกเก็บไว้เป็นที่จัดเก็บชั่วคราวสำหรับ events จนกว่าแพลตฟอร์มจะกลับมาออนไลน์อีกครั้ง
Events ที่เข้ามาผ่านแอปพลิเคชันภายนอกจะผ่าน event gateway สำหรับการรับรองความถูกต้องของ authentication และ authorization
Failed events ทั้งหมดจะถูกย้ายไปยัง dead letter queue Kafka topic คิวนี้คือการทำงานภายใน messaging system หรือ streaming platform ที่เกี่ยวข้องกับ events ที่ประมวลผลไม่สำเร็จ events ใน topic นี้ได้รับการวิเคราะห์โดย admins และจะ retry หรือ discard ต่อไป
ฟังก์ชัน serverless cluster autoscaler จะถูกทริกเกอร์เมื่อการใช้ CPU ของ message broker ผ่าน threshold ที่ระบุ ฟังก์ชันจะเพิ่มโหนดให้กับคลัสเตอร์ จากนั้นฟังก์ชัน workflow อื่นจะถูกเรียกใช้เพื่อแบ่ง events ใน Kafka topics การแบ่ง topic จะแบ่ง partition across shards โดยแบ่งตาม domain เนื่องจาก events ไหลผ่าน producer หลายราย
แผนภาพในโพสต์นี้แสดงลำดับเหตุการณ์ของ events ผ่าน unified event streaming platform
โฆษณา