
ในยุคที่ระบบซอฟต์แวร์ต้องการความเร็ว ความยืดหยุ่น และรองรับการสเกลแบบกระจาย (Distributed System) Event-driven Architecture หรือ EDA ได้กลายเป็นรูปแบบการออกแบบระบบที่ได้รับความนิยมอย่างมาก โดยเฉพาะเมื่อใช้ร่วมกับ Apache Kafka ซึ่งเป็นแพลตฟอร์มในการจัดการ Event ขนาดใหญ่
Event-driven Architecture คืออะไร?
EDA เป็นรูปแบบการออกแบบระบบที่มุ่งเน้นการสื่อสารระหว่าง Component ต่าง ๆ ด้วย “Event” แทนการเรียกใช้โดยตรง เช่น แทนที่จะสั่ง “บันทึกข้อมูลลูกค้า” โดยตรง → ระบบจะ “ปล่อย Event ว่ามีลูกค้าใหม่” แล้วระบบอื่น ๆ มาจับ (Subscribe) และดำเนินการต่อเอง
องค์ประกอบของ EDA
- Event Producer: เป็นผู้สร้าง Event เช่น ระบบ Order สร้าง Event “OrderPlaced”
- Event Consumer: ระบบที่รับ Event ไปใช้งาน เช่น ระบบ Inventory ลดสต็อก
- Event Broker: ตัวกลางสำหรับส่งต่อ Event เช่น Apache Kafka, RabbitMQ

Apache Kafka คืออะไร?
Apache Kafka เป็นระบบ distributed streaming platform ที่ออกแบบมาเพื่อจัดการข้อความขนาดใหญ่แบบ real-time ซึ่งเหมาะอย่างยิ่งกับ Event-driven Architecture
จุดเด่นของ Kafka
- รองรับการสเกลสูงมาก
- เก็บ Event ได้หลายวัน/สัปดาห์
- สามารถ Reprocess ข้อมูลได้
- รองรับระบบที่มีหลาย Consumer
คำศัพท์ที่ต้องรู้ใน Kafka
- Producer: ตัวส่ง Event
- Consumer: ตัวรับ Event
- Broker: Server ที่รับผิดชอบการจัดเก็บ Event
- Topic: หมวดหมู่ของ Event เช่น “user-created”, “order-placed”
- Partition: การแบ่ง topic เพื่อรองรับ parallel
ตัวอย่างการใช้ Kafka ในระบบ E-commerce
- User สั่งซื้อสินค้า → สร้าง Event “OrderPlaced”
- ระบบ Inventory ลดจำนวนสินค้า
- ระบบ Email ส่งอีเมลยืนยัน
- ระบบ Payment ตรวจสอบการชำระเงิน
ทั้งหมดนี้สามารถทำงานแยกกันโดยไม่มีการเรียก API ตรง ซึ่งช่วยลด Coupling และเพิ่ม Flexibility
ตัวอย่างโค้ด Python ส่ง Event ด้วย Kafka
from kafka import KafkaProducer import json producer = KafkaProducer( bootstrap_servers='localhost:9092', value_serializer=lambda v: json.dumps(v).encode('utf-8') ) event = {"order_id": 123, "status": "placed"} producer.send('order-topic', value=event) producer.flush()
ข้อดีของ Event-driven Architecture
- ระบบหลวม (Loose Coupling)
- ขยายระบบง่าย เพิ่ม Consumer ได้ทันที
- เก็บ Event ไว้ใช้ในอนาคตได้
- รองรับ High Throughput
ข้อควรระวัง
- ต้องออกแบบ Topic และ Partition อย่างรอบคอบ
- ระบบ Debug อาจยาก เพราะทุกอย่างแยกกัน
- ต้องมีเครื่องมือ Monitor ที่ดี เช่น Prometheus, Grafana
Kafka vs RabbitMQ?
- Kafka: เหมาะกับ Big Data, Logging, Real-time stream processing
- RabbitMQ: เหมาะกับระบบขนาดกลาง-เล็ก ที่ต้องการ reliable queue
สรุป
Event-driven Architecture และ Apache Kafka คือเครื่องมือที่ช่วยให้ระบบซอฟต์แวร์มีความยืดหยุ่นสูง ตอบสนองเร็ว และสามารถเติบโตได้ในอนาคต หากคุณเริ่มสร้างระบบขนาดใหญ่ หรือเน้นการ scale หลาย microservices — การนำ EDA เข้ามาใช้คือการลงทุนที่คุ้มค่ามาก
ภาพประกอบจาก: Unsplash & Medium (Kafka Architecture)