Event-Driven Architecture (EDA) adalah gaya desain sistem di mana service-service saling berkomunikasi melalui event, bukan panggilan langsung (seperti REST API).
Event = notifikasi bahwa sesuatu telah terjadi, misalnya OrderCreated, PaymentSuccess, atau UserSignedUp.
Alih-alih memanggil service lain secara langsung, komponen cukup mengirim event, dan service lain yang tertarik bisa mendengarkannya dan bertindak sesuai kebutuhan.
Komponen Utama EDA
Untuk memahami EDA, bayangkan alur tiga komponen berikut:
Komponen | Peran |
---|---|
Event Producer | Menghasilkan event (contoh: OrderService ) |
Event Broker | Menyampaikan event ke konsumen (contoh: Kafka, RabbitMQ, Redis Streams) |
Event Consumer | Menerima dan memproses event (contoh: StockService , EmailService ) |
Contoh kasus: Pemesanan Barang
Ketika pengguna membuat pesanan:
User → OrderService → [publish] OrderCreated
OrderCreated event:
- StockService: mengurangi stok
- EmailService: kirim email konfirmasi
OrderService tidak tahu siapa saja yang akan menerima event ini. Ia cukup mem-publish event “OrderCreated”, dan service lain akan merespons sesuai kebutuhan masing-masing.
Keuntungan EDA
- Loose Coupling
Service tidak saling bergantung secara langsung → lebih fleksibel dan mudah diubah. - Scalability
Konsumen bisa ditambah tanpa ubah kode producer. - Asynchronous by Nature
Cocok untuk proses yang tidak butuh respon instan (email, notifikasi, audit log). - Extensibility
Tambah service baru? Tinggal subscribe event-nya.
Kapan Tidak Cocok?
EDA tidak selalu solusi terbaik. Hindari jika:
- Aplikasi masih monolitik dan kecil
- Proses harus sinkron dan cepat (misal: transaksi keuangan)
- Tim belum siap monitoring event trace (EDA butuh observability yang baik)
Kesimpulan
Event-driven architecture memberi kita cara powerful untuk membangun sistem yang scalable dan fleksibel. Tapi pastikan penggunaannya tepat, jangan sampai terlalu kompleks di sistem yang belum membutuhkannya.
Be First to Comment