Apa Itu Event Driven Architecture? Yuk, Kenalan dengan Gaya Arsitektur yang Lagi Hits!
Pernah nggak sih kamu ngalamin saat belanja online, terus dapet notifikasi “Pesananmu sudah dikirim” padahal kamu nggak nge-refresh halaman? Atau pas lagi main game, tiba-tiba musuh muncul tanpa kamu pencet tombol apa pun? Nah, di balik mulusnya pengalaman itu, ada satu konsep keren yang namanya Event Driven Architecture atau disingkat EDA. Ibaratnya, ini adalah “sistem bisik-membisik” antarkomponen di dalam perangkat lunak. Penasaran? Ayo kita bedah satu-satu.
Inti Poin: Cara Kerja yang Mirip dengan Party
Bayangkan kamu lagi mengadakan pesta. Kamu nggak perlu ngecek setiap detik apakah tamu sudah datang atau belum. Cukup pasang bel pintu, dan ketika ada tamu yang menekan bel (ini dia event-nya), kamu langsung bereaksi: buka pintu, sambut, kasih minum. Nah, EDA bekerja persis seperti itu.
Dalam dunia _software_, EDA adalah arsitektur di mana komponen-komponen sistem (misalnya aplikasi pembayaran, database, notifikasi) saling berkomunikasi melalui event. Event adalah sesuatu yang terjadi—misalnya “user klik tombol bayar” atau “stok barang berkurang”. Setelah event terjadi, sistem nggak langsung sibuk sendiri; ia “memberitahu” komponen lain yang tertarik untuk bereaksi.
Komponen utama dalam EDA ada tiga:
– Event Producer: Pihak yang menghasilkan event. Misalnya, aplikasi front-end saat user checkout.
– Event Bus: Semacam “papan pengumuman” atau antrian pesan tempat event disebarkan.
– Event Consumer: Pihak yang mendengarkan event tertentu dan melakukan aksi. Misalnya, service pengiriman email yang otomatis mengirim konfirmasi setelah event “checkout berhasil”.
Yang bikin keren, producer dan consumer nggak perlu saling kenal. Mereka hanya terhubung melalui event bus. Jadi kalau ada consumer baru (misal nambah fitur diskon instan), tinggal “daftar” di event bus tanpa harus mengubah producer. Ini namanya loose coupling — fleksibel banget.
Kenapa Banyak yang Pakai EDA?
1. Responsif Seketika
Dengan EDA, sistem bisa langsung bereaksi begitu ada perubahan. Ini penting untuk aplikasi real-time seperti live chat, trading saham, atau monitoring IoT.
2. Scale-Up Lebih Gampang
Karena komponen independen, kita bisa meningkatkan kapasitas satu bagian (misalnya service notifikasi) tanpa mengganggu yang lain. Cocok untuk layanan yang penggunanya tiba-tiba meledak—seperti pas flash sale.
3. Toleransi Error Lebih Baik
Kalau satu consumer error, producer tetap bisa menghasilkan event. Event bisa diproses ulang nanti. Jadi nggak ada efek domino yang bikin seluruh sistem jebol.
4. Fleksibel dan Mudah Dikembangkan
Ingin menambahkan fitur baru? Tinggal tulis consumer baru yang “nguping” event yang sudah ada. Nggak perlu utak-atik kode lama.
Contoh Sederhana Biar Makin Paham
Misalkan kamu punya toko online. Traditional architecture biasanya begini: ketika user checkout, sistem langsung memanggil fungsi kirim email, update stok, dan generate invoice secara berurutan. Kalau ada yang lemot, semuanya ikut lemot.
Dengan EDA, prosesnya jadi lebih elegan:
– Setelah checkout, producer (app belanja) mengirim event `order_created` ke event bus.
– Consumer stok langsung dengar dan update database.
– Consumer email juga dengar, lalu kirim konfirmasi.
– Consumer loyalty juga bisa dengar, lalu tambah poin.
Semua berjalan paralel dan independen. Kalau suatu saat kamu mau tambah fitur “rekomendasi produk setelah checkout”, tinggal bikin consumer baru yang mendengarkan event `order_created`. Simpel, kan?
Penutup: Insight yang Bisa Dipetik
Event Driven Architecture bukan cuma soal teknis—ini soal cara pandang. Di era di mana segala sesuatu berjalan serba cepat dan tak terduga (user bisa login dari mana saja, data datang dari banyak sumber), kita nggak bisa lagi mendesain sistem yang kaku dan saling menunggu. EDA mengajarkan kita untuk berpikir dalam bentuk aliran peristiwa, bukan sekuensial.
Ini seperti perbedaan antara “ngantre di kasir” (tradisional) dan “pesan online, barang langsung dikerjakan di berbagai tempat secara simultan” (event-driven). Efisien, scalable, dan lebih tahan banting.
Jadi, kalau kamu lagi membangun sistem yang dinamis—apalagi yang melibatkan microservices, real-time data, atau banyak integrasi—coba deh pertimbangkan EDA. Awalnya mungkin agak rumit karena harus mengelola event bus dan konsistensi data, tapi begitu jalan, kamu akan merasakan betapa “hidup” sistemmu. Selamat mencoba!