Assalamu‘alaikum wr. wb.
Halo gais! Sebelumnya, kita telah sudah membahas tentang Layered Architecture dalam Arsitektur Perangkat Lunak. Sekarang, kita akan membahas tentang apa itu Event-Driven Architecture. Mari kita bahas pada Artikel ini sampai tuntas.
Sumber Materi : Blog.Hubspot.com, Medium.com (@khannedy), dan Medium.com (@hellodit)
A. Pengertian Event-Driven Architecture
Arsitektur Event-Driven sebenarnya adalah solusi lama yang kembali populer. Sejak dahulu, arsitektur Event-Driven sudah ada sejak lama, hanya dengan istilah yang berbeda, namun sekarang arsitektur Event-Driven kembali populer karena penggunaan Arsitektur Microservices membludak dimana-mana.
Event-Driven Architecture (EDA) adalah pola Arsitektur Perangkat Lunak yang berfokus pada aliran peristiwa dan pesan antara komponen yang berbeda dalam sebuah sistem. Dalam EDA, komponen berinteraksi satu sama lain melalui pertukaran peristiwa, bukan panggilan atau permintaan metode langsung.
Peristiwa didefinisikan sebagai kejadian bermakna dalam Sistem, seperti perubahan keadaan atau terjadinya aksi. Komponen dalam sistem EDA dapat menghasilkan dan menggunakan peristiwa, memungkinkan arsitektur yang terlepas dan asinkron. Produsen peristiwa menerbitkan peristiwa ke broker atau bus peristiwa, yang mendistribusikan peristiwa ke konsumen peristiwa yang tertarik.
EDA memiliki beberapa keuntungan, termasuk keterikatan longgar antara komponen, kemampuan untuk menangani volume data dan alur kerja yang kompleks, serta peningkatan toleransi kesalahan dan skalabilitas. EDA umumnya digunakan dalam aplikasi seperti sistem IoT, analisis real-time, dan sistem perdagangan keuangan.
EDA diimplementasikan menggunakan berbagai teknologi, termasuk antrian pesan, model publish-subscribe, dan event sourcing. Kerangka EDA populer meliputi Apache Kafka, RabbitMQ, dan AWS Lambda.
B. Cara Kerja Event-Driven Architecture
Dalam Event-Driven Architecture terdiri dari 3 komponen utama yang saling berhubungan. Ketiga komponen tersebut adalah :
- Event Producer, mendeteksi dan menghasilkan event yang terjadi di aplikasi dan kemudian menyajikannya sebagai pesan yang akan dikirim ke platform processes atau message broker. Proses pengiriman acara biasanya Asinkron/Asynchronous.
- Message broker, Proses pengiriman acara biasanya asinkron event-driven yang bertugas sebagai middleware antara event producer event consumer, yang tugas utamanya adalah mengirimkan pesan yang dibuat oleh event producer ke event consumer.
- Event Consumer, komponen penerima pesan yang dikirim oleh message broker, kemudian memprosesnya sesuai dengan instruksi dalam pesan yang diterima.
C. Penggunaan Event-Driven Architecture
Organisasi memanfaatkan Event-Driven Architecture (EDA) saat merancang sistem mereka untuk mencapai banyak kasus penggunaan yang berbeda. Berikut ini adalah yang paling umum :
- Replikasi Data (Data Replication) : Satu peristiwa dapat dibagikan di antara beberapa layanan yang perlu menyalin datanya ke dalam basis data mereka.
- Parallel Processing : Beberapa proses dapat dipicu oleh satu peristiwa untuk mengeksekusi satu sama lain secara asinkron.
- Real-time Monitoring : Sistem dapat menghasilkan peristiwa untuk perubahan statusnya sehingga organisasi dapat memindai anomali dan aktivitas mencurigakan.
- Interoperabilitas (Interoperability) : Acara dapat dipertahankan dan disebarkan terlepas dari layanan kode yang ditulis.
- Redundansi : Jika layanan tidak aktif, acara dapat dipertahankan di router hingga layanan tersedia untuk menggunakan acara tersebut.
- Microservices : Event-Driven Architecture biasanya dipasangkan dengan layanan mikro untuk berbagi informasi secara efisien di antara sistem yang dipisahkan dalam skala besar.
D. Kelebihan dari Event-Driven Architecture
Meskipun EDA menawarkan banyak keuntungan, beberapa dari keuntungan ini datang dengan pengorbanan, termasuk yang berikut ini.
- Tidak ada ketergantungan, tiap service tidak saling bergantung dengan service lain. Sehingga dalam proses pengembangan service dapat menghindari bottleneck antar team development, selain itu dapat menghindari terjadinya masalah pada service yang disebabkan oleh service lain.
- Menurunkan waktu response, jika di bandingan dengan API-Driven Architecture dengan menggunakan Resfull API sebagai media komunikasi, Event-Driven Architecture dapat memberikan waktu response yang lebih cepat, hal ini terjadi salah satunya karena komunikasi antar service yang bersifat asynchronous.
- High Availability, karena tiap service berdiri sendiri, jika ada service yang mengalami masalah maka service lain tidak akan terpengaruh. Selain itu akan ada mekanisme recovery service jika terdapat service yang terkena masalah, topik ini akan di bahas selanjutnya.
E. Contoh dari Event-Driven Architecture
Pola EDA menunjukkan bagaimana produsen acara, router, dan konsumen bekerja sama.
1. Pola Koreografi (Choreography Pattern)
Arsitektur Event-Driven sangat erat kaitannya dengan Pola Koreografi (Choreography Pattern), setiap layanan atau aplikasi harus mengetahui apa yang harus dilakukan ketika sesuatu terjadi. Setiap tindakan yang dilakukan oleh layanan harus dilakukan sesuai dengan domain-nya, layanan akan bekerja secara mandiri untuk melakukan tugas yang didelegasikan oleh layanan lain. Gambar di bawah ini menunjukkan proses koreografi yang terjadi saat pesanan ditempatkan di sistem E-Commerce.
Choreography Pattern |
2. Publisher/Subscriber Architecture
Dalam Publisher/Subscriber Architecture (terkadang disingkat menjadi pub/sub), router peristiwa melacak langganan dari konsumen ke saluran peristiwa. Saat sebuah acara dipublikasikan, router memastikan pelanggan menerimanya.
Event Streaming melewati pola berbasis langganan. Dalam pendekatan ini, peristiwa ditulis ke log, dan semua konsumen dapat membaca log untuk mengidentifikasi peristiwa yang relevan. Konsumen dapat membaca dari bagian streaming mana pun, sehingga mereka dapat memutar ulang acara sebelumnya.
Selain model yang berbeda, ada juga pendekatan unik untuk memproses peristiwa setelah mencapai konsumen.
- Simple Event Processing : Konsumen memproses setiap peristiwa saat diterima, seperti pada contoh situs E-Commerce sebelumnya.
- Complex Event Processing : Konsumen memproses serangkaian peristiwa untuk mendeteksi pola dalam data peristiwa.
- Event Stream Processing : Platform streaming data menyerap peristiwa dan membuat jalur pipa untuk mengalirkan prosesor yang mengubah dan menggunakan data.
Demikianlah penjelasan tentang Event-Driven Architecture. Semoga bermanfaat bagi Software Developer/Engineer dan juga untuk Mahasiswa IT (Informatika).
Terima Kasih 😄😘👌👍 :)
Wassalamu‘alaikum wr. wb.