tutorial

1 Apa itu gRPC dan Mengapa Perlu Dipelajari?

Kita hidup di era di mana sistem terdistribusi dan aplikasi microservices telah menjadi fondasi arsitektur software modern. Para engineer kini semakin sering menghadapi tantangan integrasi antar layanan yang berjalan lintas bahasa pemrograman, lintas platform, bahkan lintas lingkungan cloud. Dalam skenario ini, protokol komunikasi yang efisien, konsisten, serta mudah diadopsi—seperti gRPC—menjadi semakin vital.

Tapi, sebenarnya apa itu gRPC? Apa keunggulannya dibanding pola lama seperti REST? Dan mengapa para engineer—baik back-end, mobile, hingga DevOps—perlu menaruh perhatian serius pada teknologi ini? Mari kita bahas dari awal dengan sudut pandang praktisi.


Apa itu gRPC?

Singkatnya, gRPC adalah kerangka kerja Remote Procedure Call (RPC) open-source yang dikembangkan oleh Google, dan sekarang dikelola oleh Cloud Native Computing Foundation (CNCF). gRPC memungkinkan Anda untuk membangun layanan lintas platform dan lintas bahasa pemrograman secara mudah dan sangat efisien.

gRPC menggunakan HTTP/2 sebagai transport layer—yang membawa banyak keunggulan seperti multiplexing, streaming, flow control, header compression, dan keamanan built-in. Untuk serialization data, gRPC memakai Protocol Buffers (protobuf), yang jauh lebih efisien daripada JSON maupun XML yang sering dipakai di komunikasi RESTful API.

Singkatnya: dengan gRPC, Anda bisa membuat service seperti “panggil fungsi di server”, lintas bahasa, dengan performa dan efisiensi tinggi.


Mengapa gRPC Perlu Dipelajari?

Mari kita lihat beberapa alasan utama mengapa gRPC patut masuk dalam toolbox seorang software engineer modern:

1. Efisiensi dan Performa Tinggi

JSON pada REST API itu besar, verbose, dan mahal secara CPU/RAM untuk serialisasi/deserialisasi. Ini masalah besar jika traffic tinggi. Protocol Buffers sangat kecil dan cepat—baik dikirim via wire, maupun di-parse dalam memory.

2. Interoperabilitas Multi-Bahasa

Bayangkan sebuah sistem: Komponen backend pakai Go, frontend atau client-nya di Flutter/Dart, ada pula layanan lain dengan Java, Node.js, dan Python. gRPC mendukung code generation otomatis untuk lebih dari selusin bahasa—cukup satu file protobuf, jadi client-server dalam bahasa apapun.

3. Kontrak API yang Eksplisit

Definisi layanan gRPC dituangkan dalam file .proto. Ini menjadi single source of truth, sekaligus dokumentasi yang machine readable, evolvable, dan mudah diverifikasi dengan tool otomatisasi/CI/CD.

4. HTTP/2: Streaming, Multiplexing, Lebih Aman

Dengan HTTP/2, gRPC bisa melakukan bidirectional streaming, membuka channel panjang dalam 1 connection, dibanding HTTP/1.1 yang harus bolak-balik open-close.

5. Fitur Ekosistem Siap Pakai

gRPC support deadline, cancellation, load balancing, authentication, dan tracing sebagai fitur native.

6. Ekosistem Microservices

Jika Anda ingin microservices yang high performance dan scalable, gRPC adalah kandidat utama—dan kini didukung oleh tooling di berbagai orchestrator (contoh: Istio, Envoy, Kubernetes, etc.).


Bagaimana Cara Kerja gRPC?

Diagram Alur: Client-Server gRPC

sequenceDiagram
    participant Client
    participant Stub
    participant Server
    participant Handler

    Client->>Stub: Call Method("param")
    Stub->>Server: Send binary request via HTTP/2
    Server->>Handler: deserialize, process
    Handler-->>Server: generate response
    Server-->>Stub: send binary response via HTTP/2
    Stub-->>Client: return result
  1. Client: Menggunakan library gRPC di bahasa yang didukung.
  2. Stub: gRPC auto-generate kode client (“stub”) berdasarkan .proto, sehingga client bisa ‘memanggil’ layanan remote layaknya fungsi lokal.
  3. Server: Server menerima, mendeserialisasi data protobuf, menjalankan handler, mengirim respon.
  4. Semua komunikasi lewat HTTP/2, menggunakan serialization yang efisien.

Contoh Praktis: Hello World dengan gRPC

Mari kita lihat contoh sederhana layanan Hello World menggunakan gRPC. Kita akan lihat versi Go, namun Anda dapat mengenerate client/server untuk berbagai bahasa hanya dengan mengubah tool dan library.

1. Definisikan Proto file (helloworld.proto):

syntax = "proto3";

package helloworld;

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Setelah file ini selesai, Anda jalankan protocol buffer compiler (protoc) untuk mengenerate kode client/server.

2. Implementasi Server (Go)

// server.go
type server struct {
    helloworld.UnimplementedGreeterServer
}

func (s *server) SayHello(ctx context.Context, req *helloworld.HelloRequest) (*helloworld.HelloReply, error) {
    return &helloworld.HelloReply{Message: "Hello " + req.Name}, nil
}

func main() {
    lis, _ := net.Listen("tcp", ":50051")
    s := grpc.NewServer()
    helloworld.RegisterGreeterServer(s, &server{})
    s.Serve(lis)
}

3. Implementasi Client (Go)

// client.go
conn, _ := grpc.Dial("localhost:50051", grpc.WithInsecure())
client := helloworld.NewGreeterClient(conn)
resp, _ := client.SayHello(context.Background(), &helloworld.HelloRequest{Name: "Dunia"})
fmt.Println(resp.Message)

Dengan kode konsisten seperti ini, komunikasi client-server jadi mudah, type-safe, dan lintas bahasa.


Tabel Perbandingan Singkat: gRPC vs REST API

AspekgRPCREST API
TransportHTTP/2HTTP/1.1, HTTP/2
Data SerializationProtocol BuffersJSON/XML
Multi-language GenYA (otomatis)Terbatas (manual)
StreamingYA (bi-directional)Terbatas (SSE/ws)
PerformanceCepat, Low-latencyLebih lambat
Schema ContractKetat (.proto)Tidak wajib
Binary SupportYATidak

Kapan gRPC Sebaiknya Digunakan?

  • Microservices yang kerap saling komunikasi dengan data intens (inter-service communication)
  • Layanan backend untuk aplikasi mobile/IOT dengan bandwidth terbatas
  • Realtime stream (video, chat, telemetry, etc)
  • Sistem polyglot (multi bahasa pemrograman), butuh interoperabilitas tinggi

Catatan: Untuk API publik diakses browser, REST (JSON/XML) tetap lebih portabel, karena gRPC hanya didukung terbatas di browser saat ini (meski ada gRPC-web).


Kesimpulan

gRPC bukan sekadar “cara baru” bikin API, ia adalah lompatan evolusi untuk aplikasi modern—lebih performant, robust, tipe data lebih konsisten, dan integrasi multi-bahasa yang asli. Dengan makin banyak arsitektur microservices diadopsi, tidak heran jika gRPC kini menjadi standar de facto banyak perusahaan besar (Google, Netflix, Square, dll).

Jika Anda engineer yang ingin membangun sistem scalable dan efisien, inilah saat terbaik untuk belajar gRPC. Mulailah bereksperimen dengan protokol ini, buat POC kecil, dan rasakan sendiri bedanya!

Sudah siap berevolusi dari RESTful menuju RPC yang lebih modern dan efisien?


Referensi:

  1. grpc.io
  2. Protobuf Language Guide
  3. Official Examples

Selamat mencoba dan eksplorasi gRPC!

comments powered by Disqus

Topik Terhangat

programming
172
tips-and-trick
43
tutorial
38
jaringan
28
hardware
11
linux
4
kubernetes
1