Komunikasi Antar Service Dalam Arsitektur Microservices

Microservices, siapa yang belum pernah dengar istilah tersebut ?

Salah satu arsitektur yang saat ini masih hangat-hangat nya, secara singkat Microservices adalah arsitektur dalam pengembangan aplikasi yang dimana sebuah sistem besar dipecah menjadi lebih kecil serta independen dan memiliki responsibility yang lebih kecil namun tetap saling terhubung, salah satu tujuan nya agar maintenance dan scaling nya pun dapat lebih mudah.

Berbeda dengan Monolith yang dimana semua servis aplikasi disatukan dalam satu aplikasi besar.

sumber:https://media.g2crowd.com/wp-content/uploads/2018/01/23135327/monolithic-v-microservices2.jpg

Jika pada arsitektur Monolith saat kita membutuhkan suatu data kita tinggal mengambilnya dari database maka pada arsitektur Microservices ideal nya ada beberapa cara yang dapat digunakan, yaitu :

  • RPI (Remote Procedure Invocation) atau RPC (Remote Procedure Call)
  • Messaging
Perbedaan alur komunikasi menggunakan RPI/RPC dan Messaging

Cara yang pertama adalah dengan menggunakan metode RPI/RPC, cara ini paling banyak digunakan karena tergolong implementasinya cukup mudah, kenapa ? Mari kita lihat contoh dari RPI/RPC yang biasa digunakan.

  • RESTful API (HTTP)
  • SOAP
  • Java RMI
  • dan lain-lain

Pada contoh di atas pasti ada salah satu yang teman-teman sering dengar atau mungkin pakai.
Saya ambil contoh yang pertama yaitu RESTful API, ini salah satu yang paling sering dan paling banyak digunakan, selain karena mudah untuk di implementasi hampir semua bahas pemrograman sudah mendukung protokol HTTP.

Cara yang kedua adalah dengan menggunakan Messaging, cara ini bekerja secara asynchronous. Messaging sendiri biasanya membutuhkan Message Channel sebagai jembatan atau perantara dan menggunakan aplikasi Message Broker untuk melakukan management message nya.

Contoh Message Broker yang dapat digunakan :

  • Redis (PubSub)
  • Apache Kafka
  • RabbitMQ
  • dan lain-lain

Lalu apa kelebihan dan kekurangan dari kedua cara tersebut ?

Kelebihan :
RPI (Remote Procedure Invocation) atau RPC (Remote Procedure Call)

  • Sederhana dan mudah untuk digunakan
  • Biasanya digunakan untuk komunikasi yang dimana pengirim membutuhkan response dari service yang menerima data

Messaging

  • Proses lebih cepat karena tidak harus menunggu response
  • Service pengirim data tidak perlu peduli terhadap penerima data
  • Biasanya digunakan untuk komunikasi yang tidak perlu menunggu response dari penerima

Kekurangan :
RPI (Remote Procedure Invocation) atau RPC (Remote Procedure Call)

  • Proses nya lama dan tergantung pada response time
  • Jika ada banyak penerima maka proses pengiriman dilakukan lebih dari 1 kali dengan data yang sama

Messaging

  • Perlu adanya error handling tambahan jika penerima data mengalami error yang mengharus kan adanya aksi pada pengirim
  • Implementasi yang membutuhkan aplikasi ketiga

Nah itu tadi penjelasan secara singkat mengenai cara dan contoh komunikasi yang digunakan dalam arsitektur microservices. Bagaimana ? masih bingung ? atau sudah cukup jelas dan siap untuk implementasi ?

Terima kasih sudah berkunjung dan sampai jumpa di artikel selanjutnya!!

--

--