Examples and Use Cases (ตัวอย่างและกรณีการใช้งาน)

ปัญหาทางธุรกิจใดๆ ที่เน้นการตอบสนองต่อสิ่งที่เกิดขึ้นในระบบ (ไม่ว่าจะภายในหรือภายนอก) ล้วนเป็นตัวเลือกที่ดีสำหรับ EDA ตัวอย่างระบบรับคำสั่งซื้อที่เราใช้ตลอดทั้งบทนี้เป็นกรณีการใช้งานที่ดีสำหรับ EDA ตรงที่มันช่วยให้ประมวลผลคำสั่งซื้อแบบขนานและ decoupled ได้ ระบบที่ต้องการ responsiveness, performance, scalability, fault tolerance และ elasticity ระดับสูงก็เป็นตัวเลือกที่ยอดเยี่ยมสำหรับ EDA เช่นกัน

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

ดังที่ Figure 15-40 แสดงให้เห็น มีการกระทำมากมายเกิดขึ้นในระบบเมื่อผู้เสนอราคาส่งราคาเข้ามา การกระทำเหล่านี้ล้วนสามารถเป็นแบบอะซิงโครนัสได้ ไม่ว่าจะเกิดขึ้นพร้อมกันหรือภายหลังเป็นการประมวลผลเบื้องหลัง (เช่น event processor Bidder Tracker ) เมื่อผู้เสนอราคาส่งราคาเข้ามา event processor Bid Capture จะรับ initiating event นี้ พิจารณาว่าสูงกว่าราคาก่อนหน้าหรือไม่ แล้ว trigger event bid placed event processor Auctioneer จะตอบสนองต่อ event นั้นและอัปเดตราคาประมูลใหม่ของสินค้าบนเว็บไซต์ ในขณะเดียวกัน event processor Bid Streamer ก็ตอบสนองต่อ event เดียวกัน โดย stream ราคาเสนอออกไปยังประวัติการประมูลบนเว็บไซต์หรือแม้แต่ไปยังผู้เสนอราคาแต่ละคน (ขึ้นอยู่กับ UI) สุดท้าย event processor Bidder Tracker จะตอบสนองต่อ event เพื่อบันทึกผู้เสนอราคาและราคาที่เสนอไว้สำหรับการติดตามและตรวจสอบ

Event-driven example

Figure 15-40. An online bidding system example using EDA (ตัวอย่างระบบประมูลออนไลน์โดยใช้ EDA)

event processor อีกมากมายมีส่วนเกี่ยวข้องกับ workflow ของ initiating event นี้ และ derived event อีกมากมายก็ถูก trigger ขึ้น แต่ส่วนเล็กๆ ของระบบนี้ก็แสดงให้เห็นการใช้งานสไตล์สถาปัตยกรรมแบบ event-driven ที่ดี แสดงให้เห็นถึง responsiveness, fault tolerance, scalability และ elasticity

Event-driven architecture เป็นสไตล์สถาปัตยกรรมที่ซับซ้อนมาก แต่ก็ทรงพลังมากเช่นกัน วิเคราะห์ workflow และการประมวลผลที่จำเป็นสำหรับปัญหาทางธุรกิจอย่างละเอียดถี่ถ้วน เพื่อพิจารณาว่าการรับมือกับความซับซ้อนของ EDA นั้นคุ้มค่าหรือไม่ เมื่อเทียบกับพลังพิเศษของมัน ถ้าการประมวลผลส่วนใหญ่ที่จำเป็นเป็นแบบ request-based ให้พิจารณาสไตล์สถาปัตยกรรมแบบ microservices แทน (กล่าวถึงใน Chapter 18 ) .