Dalam dunia pengembangan aplikasi modern, terutama saat membangun layanan backend yang cepat dan efisien, gRPC menjadi pilihan utama. Namun, gRPC tidak bisa berdiri sendiri. Ia membutuhkan contract definition melalui Protocol Buffers (protobuf), dan lebih penting lagi, dibutuhkan plugin tambahan agar file .proto
bisa diubah menjadi kode Go yang siap dipakai.
Dua plugin paling krusial untuk pengembang Go adalah:
protoc-gen-go
protoc-gen-go-grpc
Artikel ini akan mengupas tuntas: apa fungsi masing-masing, bagaimana cara menginstalnya dengan aman dan benar, serta tips untuk integrasi dengan proyek Go kamu.
Mengapa Plugin Ini Penting?
Saat kamu menulis file .proto
, itu hanyalah blueprint. Untuk menjadikannya kode Go yang bisa kamu import, kamu harus mengubahnya menjadi file .pb.go
menggunakan compiler protoc
dan dua plugin berikut:
protoc-gen-go
→ Menghasilkan kode Go untuk tipe data (message
)protoc-gen-go-grpc
→ Menghasilkan kode Go untuk service gRPC (client dan server stub)
Tanpa kedua plugin ini, kamu tidak akan bisa menggunakan hasil serialisasi protobuf di dalam aplikasi Go.
Persiapan: Pastikan Go dan protoc
Sudah Terpasang
Sebelum menginstal plugin, pastikan kamu sudah memiliki:
- Go (versi 1.20 atau lebih tinggi)
- Protocol Buffers Compiler (
protoc
)
Cek versi dengan:
go version
protoc --version
Jika protoc
belum terpasang:
macOS:
brew install protobuf
Debian/Ubuntu:
sudo apt update
sudo apt install -y protobuf-compiler
Langkah Install Plugin
Go menyediakan cara sederhana untuk menginstal CLI tool via perintah go install
.
1. Install protoc-gen-go
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
Plugin ini bertugas menghasilkan tipe data Go dari definisi message
di .proto
.
2. Install protoc-gen-go-grpc
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
Plugin ini akan menghasilkan interface untuk implementasi service client dan server di gRPC.
Menambahkan Plugin ke PATH
Secara default, tool hasil go install
akan ditempatkan di $GOPATH/bin
atau ${HOME}/go/bin
. Supaya plugin dikenali oleh protoc
, kamu harus menambahkan direktori ini ke dalam PATH
.
Tambahkan ke .bashrc
, .zshrc
, atau .profile
:
export PATH=""$PATH:$(go env GOPATH)/bin""
Kemudian jalankan:
source ~/.bashrc # atau ~/.zshrc tergantung shell kamu
Verifikasi Instalasi
Cek apakah plugin tersedia:
which protoc-gen-go
which protoc-gen-go-grpc
Jika perintah di atas menampilkan path (misalnya /Users/kamu/go/bin/protoc-gen-go
), maka plugin berhasil terinstal.
Contoh Penggunaan
Misalkan kamu punya file .proto
di direktori proto/helloworld.proto
, kamu bisa generate seperti ini:
protoc \
--proto_path=proto \
--go_out=api \
--go-grpc_out=api \
proto/helloworld.proto
Output akan menghasilkan dua file:
helloworld.pb.go
→ hasil dariprotoc-gen-go
helloworld_grpc.pb.go
→ hasil dariprotoc-gen-go-grpc
Kamu bisa langsung import dan gunakan file tersebut di dalam kode Go kamu.
Tips Produksi
✅ Gunakan versi plugin yang eksplisit di CI/CD, agar build kamu stabil.
Misalnya:
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.33.0
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.4.0
✅ Jangan commit file hasil generate ke repo, kecuali kamu benar-benar butuh untuk keperluan distribusi (misalnya library).
✅ Gunakan Makefile
atau script shell untuk automate generate file.
Contoh:
PROTO_DIR=proto
OUT_DIR=api
generate:
protoc \
--proto_path=$(PROTO_DIR) \
--go_out=$(OUT_DIR) \
--go-grpc_out=$(OUT_DIR) \
$(PROTO_DIR)/*.proto
Penutup
Instalasi protoc-gen-go
dan protoc-gen-go-grpc
adalah langkah awal yang krusial dalam membangun layanan gRPC di Go. Meski terlihat teknis, hal ini akan menjadi rutinitas yang natural begitu kamu memahami alurnya.
Ingat, dengan setup yang benar sejak awal, kamu sedang membangun fondasi yang stabil dan scalable untuk aplikasi masa depan. Tidak hanya itu, kamu juga membuat timmu lebih produktif dan kodebase-mu lebih maintainable.
Menyiapkan Protocol Buffers (protobuf) untuk gRPC
Artikel Terhangat
Struktur Proyek gRPC Sederhana di Go
06 Jun 2025
Instalasi gRPC di Go Langkah demi Langkah
06 Jun 2025
Perbandingan gRPC dengan REST dan GraphQL
06 Jun 2025
Apa itu gRPC dan Mengapa Perlu Dipelajari?
06 Jun 2025

Struktur Proyek gRPC Sederhana di Go

Instalasi gRPC di Go Langkah demi Langkah

Perbandingan gRPC dengan REST dan GraphQL
