Skip to content

Event-Driven Architecture: Penjelasan Simpel dan Contohnya

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:

KomponenPeran
Event ProducerMenghasilkan event (contoh: OrderService)
Event BrokerMenyampaikan event ke konsumen (contoh: Kafka, RabbitMQ, Redis Streams)
Event ConsumerMenerima 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.

Published inSystem Design

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *