Mengapa Memilih gRPC?
gRPC dirancang untuk komunikasi antar-service dengan performa tinggi. Menggunakan Protocol Buffers sebagai format binary dan HTTP/2, gRPC membuat pertukaran data lebih efisien serta mendukung komunikasi yang type-safe melalui code generation.
Berbeda dengan REST yang umumnya menggunakan JSON, gRPC menggunakan format binary sehingga cocok untuk sistem yang membutuhkan komunikasi cepat dan konsisten, terutama pada arsitektur microservices.
Mendefinisikan Proto File
Buat file seperti user.proto untuk mendefinisikan service, method, dan message yang digunakan antar-service.
Proto file berfungsi sebagai kontrak komunikasi. Struktur request dan response dapat digunakan secara konsisten oleh berbagai service bahkan ketika dikembangkan menggunakan bahasa pemrograman yang berbeda.
Setup gRPC Server
Pada User Service, install package berikut:
npm install @grpc/grpc-js @grpc/proto-loader
Load proto file, implementasikan service handler, lalu jalankan server pada port yang telah ditentukan. Server kemudian siap menerima request dari service lain melalui gRPC.
Setup gRPC Client
Pada Order Service, gunakan proto file yang sama untuk membuat client atau stub.
Remote procedure dapat dipanggil seperti function biasa. Pendekatan ini membuat komunikasi antar-service lebih terstruktur karena kontrak API sudah didefinisikan melalui proto file.
Streaming dengan gRPC
gRPC juga mendukung beberapa jenis streaming:
-
Server streaming — server mengirim beberapa response
-
Client streaming — client mengirim beberapa request
-
Bidirectional streaming — kedua sisi dapat mengirim data secara bersamaan
Fitur tersebut berguna untuk data streaming, monitoring, notifikasi, dan komunikasi real-time yang membutuhkan pertukaran data secara terus-menerus.
Deployment dan Load Balancing
Infrastruktur yang digunakan harus mendukung HTTP/2 agar traffic gRPC dapat berjalan dengan baik. Load balancer seperti AWS ALB atau Nginx dapat digunakan untuk meneruskan request ke service yang tersedia.
Pada lingkungan Kubernetes, service mesh seperti Istio dapat membantu menangani load balancing, observability, dan mTLS antar-service.
Kapan Sebaiknya Menggunakan gRPC?
gRPC sangat cocok untuk komunikasi internal microservices, terutama ketika performa, kontrak API yang kuat, dan efisiensi transfer data menjadi prioritas.
Namun, untuk public API yang dikonsumsi langsung oleh browser atau banyak client eksternal, REST atau GraphQL terkadang lebih praktis karena dukungan dan tooling yang lebih luas.
Kesimpulan
gRPC cocok untuk sistem yang membutuhkan komunikasi antar-service yang cepat, efisien, dan type-safe. Dengan Protocol Buffers, HTTP/2, dan dukungan streaming, gRPC menjadi pilihan menarik untuk membangun arsitektur microservices modern yang scalable dan terstruktur.