Dalam membangun suatu sistem dengan arsitektur microservice kita perlu menentukan metode yang tepat untuk menjembatani komunikasi antar service yang saling terpisah dan berdiri sendiri, terkadang ada service yang perlu terhubung ke service lain untuk menyelesaikan suatu proses bisnis.

Anggap saja, kita memiliki aplikasi eCommerce dengan menggunakan arsitektur microservice yang didalamnya terdapat aplikasi pemesanan, pembayaran, pemberitahuan, whist list dan review.

Pada proses pemesanan tiap service yang terkait akan saling berkomunikasi untuk menyelesaikan proses pemesanan yang dilakukan oleh pelanggan. Aplikasi pemesanan akan berkomunikasi dengan aplikasi pembayaran untuk membuatkan invoice lalu berkomunikasi lagi dengan aplikasi pemberitahuan yang akan mengirim email ke pelanggan.

Secara umum ada dua jenis cara integrasi di microservice, yaitu :

  • API-Driven Architecture
  • Event-Driven Architecture

Kali ini saya akan membahas secara singkat mengenai Event-Driven Architecture

Arsitektur Event-Driven

Sebelum melangkah lebih jauh kita harus mengetahui apa yang di maksud dengan Event, karena menggunakan bahasa inggris maka saya mengambil pengertian Event dari Oxford dictionary.

Event is A thing that happens, especially something important

Jika di artikan dalam bahasa Indonesia dan di sesuaikan dengan pembahasan arsitektur microservice maka event adalah suatu kejadian yang terjadi terutama suatu yang bersifat penting, misal perubahan dari suatu kondisi yang dapat dikenali. Contohnya data sensor, log, transaksi, atau event klik website.

<strong>Apa yang dimaksud dengan arsitektur event-driven?</strong>

Suatu arsitektur perangkat lunak dan model design aplikasi yang menangkap event yang terjadi pada suatu aplikasi, nantinya event yang ter-capture akan digunakan sebagai mekanisme integrasi antar aplikasi.

<strong>Bagaimana arsitektur event-driven bekerja?</strong>

Dalam event-driven architecture terdapat 3 komponen utama yang saling terhubung satu sama lain, ketiga komponen yang dimaksud yaitu:

  1. Event producer, mendeteksi dan memproduksi event yang berlangsung pada suatu aplikasi lalu merepresentasi-kan sebagai pesan yang akan dikirim ke platform processes atau message broker, proses pengiriman event biasanya berlangsung secara asynchronously,
  2. Message broker, merupakan komponen pada arsitektur event-driven yang bertugas sebagai middleware antara event producer dan event consumer, tugas utamanya adalah untuk mengirim message yang dibuat oleh event producer ke event consumer.
  3. Event consumer, komponen yang menerima message yang dikirim oleh message broker kemudian melakukan proses sesuai dengan perintah yang ada dalam pesan yang diterima.

consumer,producer,message-broker

<strong>Choreography Pattern</strong>

Arsitektur Event-Driven berkaitan erat dengan choreography pattern, tiap service atau aplikasi harus tahu apa yang akan dilakukan ketika ada suatu yang terjadi. Setiap action yang dilakukan oleh service harus sesuai dengan domain-nya, service akan berjalan secara mandiri untuk menyelesaikan tugas yang di delegasi-kan oleh service lain. Gambar dibawah ini menunjukan proses chcoreography yang terjadi ketika order di buat pada suatu sistem eCommerce.

Untuk memudahkan pemahaman kita ambil studi kasus penari, sebagai seorang penari dalam keseharian di tuntut untuk tahu gerakan yang harus dilakukan sesuai dengan kejadian yang sedang berlangsung, salah satunya berdasarkan musik yang sedang diputar.

Choreography pattern akan mempermudah dalam pengembangan suatu sistem, ketika ada service baru yang perlu di terapkan dalam sistem sercive dapat memperoleh data dari service yang sudah ada hanya dengan terhubung dengan message broker, tanpa harus mengubah semua kode pada service yang sudah tersedia.

Keuntungan menggunakan arsitektur event-driven

  1. 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.
  2. 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.
  3. 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.

Kesimpulan

  1. API-Driven Architecture dan Event-Driven Architecture merupakan metode untuk melakukan integrasi antar service dalam arsitektur microservice
  2. Arsitektur Event-Driven merupakan arsitektur yang bekerja berdasarkan event yang di deteksi oleh event producer
  3. Terdapat 3 komponen utama dalam arsitektur Event-Driven yaitu producer, broker dan consumer
  4. Event-Driven Architecture menggunakan metode asynchronous untuk melakukan komunikasi antar service

Bonus

Jika ingin mengetahui lengkap mengenai Event-Driven dapat membuka tautan berikut ini:

  1. Micoservice.io
  2. gist.github.com
  3. tibco.com