Service Komunikasi pada Microservice

Komunikasi adalah Segalanya

D. Husni Fahri Rizal
The Legend
2 min readDec 28, 2019

--

Terdapat berbagai cara untuk berkomunikasi antara satu service dengan service lainnya dalam tatanan microservices arsitektur. Kita dapat menggunakan cara komunikasi yang synchronous request response seperti REST berbasis HTTP atau gRPC. Kita juga dapat memilih cara komunikasi yang asynchronous dan non bloking berbasis message dengan menggunakan teknologi message broker.

Kita akan membahas beberapa teknik komunikasi tersebut dalam serangkaian artikel. Kita akan bahas juga kebutuhan, kelebihan, dan kekurangan dari masing-masing teknik, khususnya ketika kita terapkan pada arsitektur microservice.

Berbagai Cara Komunikasi

Dilihat secara dimensional, komunikasi client-server (dalam hal ini keduanya bisa berupa service tersendiri) dapat dilihat dari jumlah service yang terlibat.

  1. Satu ke satu (one to one) komunikasi. Setiap request akan diproses oleh satu service.
  2. Satu ke banyak (one to many) komunikasi. Setiap request akan diproses oleh lebih dari satu service yang terlibat.

Selanjutnya dapat dilihat dari cara semua service tersebut berinteraksi.

  1. Synchronous, setiap request yang datang akan dibatasi oleh waktu lamanya proses sebelum response didatpatkan. Cara komunikasi ini akan bersifat menganggu proses selanjutnya (blocking).
  2. Asynchronous, setiap request yang datang akan diproses sendiri-sendiri dan tidak mengganngu proses lainnya serta tidak dibatasi waktu response yang akan diberikan sehingga pada proses ini umumnya tidak terjadi block.

Apabila kita gabungkan cara komunikasi di atas maka dapat kita kelompokkan sebagai berikut.

One to One

Untuk kelompok satu ke satu service komunikasi akan terbagi lagi kedalam kelompok seperti berikut.

  • Request / response blocking.
  • Asynchronous request/response nonblocking.
  • One way (request atau perintah yang diberikan tidak membutuhkan response atau request tapna respon dan nonblocking).

One to Many

  • Publish/subscribe. Client mempublish notifikasi message dan akan di dengar oleh satu atau lebih service.
  • Publish / asynchronous response. Client akan mempublish message dan ia akan menunggu beberapa waktu sebelum response didapatkan dari beberapa service yang terlibat.

Timbul sebuah pertanyaan apakah setiap asynchronous request itu bersifat nonbloking? Ternyata pada level implementasi, pada code yang kita buat rata-rata masih banyak bahasa pemograman melakukan asynchronous tetapi masih blocking. Perlu difahami bahwa asynchronous dan non bloking adalah dua pengertian yang berbeda. Salah satunya dijelaskan oleh artikel berikut.

Terdapat beberapa framework yang sudah mengimplementasikan asynchronous dan non bloking seperti framework-framework berikut.

  1. ReactiveX: Rx Java, RxGo, RxAndroid, dll.
  2. Spring WebFlux.

Framework-framework tersebut di atas mengarah pada paradigma pemograman yang baru yaitu reactive programming, yaitu cara pemograman yang telah menadopsi reactive manifesto.

Pada artikel selanjutnya kita akan membahas mengenai bagaimana mendifinisikan api pada arstektur microservice.

Sponsor

Membutuhkan kaos dengan tema pemrograman :

Kafka T-shirt

Elastic T-shirt

Dapat menghubungi The Legend.

--

--

D. Husni Fahri Rizal
The Legend

Engineering Leader | Start-Up Advisor | Agile Coach | Microservices Expert | Professional Trainer | Investor Pemula