tutorial

Instalasi gRPC di Go Langkah demi Langkah

Jika Anda baru mengenal gRPC atau sedang membangun arsitektur sistem yang scalable dan efisien, memulai dengan setup yang benar adalah fondasi penting. Dalam artikel ini, saya akan memandu Anda melakukan instalasi dan setup gRPC di Go (Golang), dari nol hingga siap digunakan untuk membuat layanan RPC.

Sebagai seorang software engineer yang sudah beberapa kali menangani sistem berbasis microservices, saya menyadari betapa pentingnya tooling dan setup awal yang benar agar tidak menjadi “utang teknis” di masa depan. Yuk, kita mulai dengan langkah yang bersih dan terstruktur.

sequenceDiagram
  participant Client
  participant gRPC Stub
  participant Server

  Client->>gRPC Stub: Call SayHello()
  gRPC Stub->>Server: Send Protobuf via HTTP/2
  Server->>gRPC Stub: Return Protobuf response
  gRPC Stub->>Client: Deserialize and return message

Prasyarat

Sebelum kita masuk ke tahap instalasi, pastikan Anda sudah memiliki:

  • ✅ Go versi terbaru (minimal Go 1.20+)
  • protoc (Protocol Buffers Compiler)
  • ✅ Akses ke terminal/bash
  • ✅ GOPATH dan environment Go telah dikonfigurasi dengan benar

Jika belum menginstal Go, Anda bisa mengunduhnya dari https://go.dev/dl/.


1. Instalasi Protocol Buffers Compiler (protoc)

Protocol Buffers (protobuf) adalah format serialization yang digunakan gRPC untuk mendefinisikan kontrak antara client dan server.

a. Unduh dari GitHub

Kunjungi halaman releases: 👉 https://github.com/protocolbuffers/protobuf/releases

Pilih sesuai sistem operasi Anda (Windows/Linux/macOS), lalu ekstrak dan simpan ke direktori sistem (/usr/local/bin atau set PATH sesuai lokasi protoc).

b. Cek versi

protoc --version
# libprotoc 3.x.x

Jika versi sudah muncul, berarti instalasi berhasil.


2. Instalasi Plugin gRPC untuk Go

gRPC membutuhkan plugin protoc-gen-go dan protoc-gen-go-grpc agar file .proto bisa diubah menjadi kode Go secara otomatis.

a. Instal protoc-gen-go

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

b. Instal protoc-gen-go-grpc

go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

c. Tambahkan $GOPATH/bin ke PATH (jika belum)

export PATH="$PATH:$(go env GOPATH)/bin"

Atau tambahkan ke ~/.bashrc atau ~/.zshrc agar permanen.


3. Struktur Direktori Proyek

Buat struktur direktori awal seperti ini:

grpc-example/
├── proto/
│   └── hello.proto
├── server/
└── client/
  • proto/: Menyimpan definisi layanan dan pesan dalam .proto
  • server/: Implementasi server gRPC
  • client/: Implementasi client gRPC

4. Contoh File .proto Awal

Buat file proto/hello.proto:

syntax = "proto3";

package hello;

option go_package = "santekno.com/grpc-example/proto/hello;hello";

service HelloService {
  rpc SayHello (HelloRequest) returns (HelloResponse);
}

message HelloRequest {
  string name = 1;
}

message HelloResponse {
  string message = 1;
}

5. Generate File Go dari Proto

Setelah plugin terinstal dan file .proto dibuat, generate kode Go dengan perintah:

protoc --go_out=. --go-grpc_out=. proto/hello.proto

Ini akan menghasilkan dua file:

  • proto/hello.pb.go
  • proto/hello_grpc.pb.go

File ini adalah kode hasil generate otomatis dan jangan dimodifikasi secara manual.


6. Verifikasi Setup

Coba buat program Go sederhana di server/main.go dan client/main.go untuk memastikan semuanya berjalan lancar.

Kita akan membuatnya di tutorial selanjutnya. Namun jika perintah protoc sukses dan file Go berhasil digenerate, maka instalasi Anda sudah berhasil.


Troubleshooting Umum

Error: protoc-gen-go: program not found or is not executable

✅ Solusi: Pastikan $(go env GOPATH)/bin sudah ditambahkan ke $PATH

Error: option go_package = ... tidak dikenali

✅ Solusi: Pastikan menggunakan syntax = "proto3"; dan struktur package sesuai.


Mengapa Instalasi yang Benar Penting?

Pengalaman saya menunjukkan bahwa banyak masalah di fase pengembangan gRPC justru berasal dari setup awal yang kurang presisi: PATH tidak dikenali, versi plugin tidak sesuai, atau struktur direktori yang membingungkan.

Dengan mengikuti panduan ini secara teliti, Anda sudah selangkah lebih dekat membangun layanan gRPC yang robust, testable, dan maintainable.


Penutup

Instalasi dan setup gRPC memang tidak seinstan REST atau GraphQL, namun hal ini sepadan dengan performansi dan efisiensi komunikasi yang akan Anda peroleh. Dengan sistem kontrak yang eksplisit melalui .proto, Anda dapat membangun sistem yang scalable, stabil, dan lintas platform.

Jangan lupa untuk commit semua file .proto dan file hasil generate ke dalam VCS Anda — karena kontrak adalah bagian dari dokumentasi sistem Anda.

Ingin membangun microservices modern? Mari kita lanjut ke tahap berikutnya!


---
comments powered by Disqus