Skip to content
Santekno.com | Level Up Your Engineering Skills
ID
📖 0%
14 Jun 2025 · 4 mnt baca ·Artikel 6 / 110
Go

6 Cara Menginstall Plugin protoc-gen-go dan protoc-gen-go-grpc

IH
Ihsan Arif
Penulis di Santekno · Backend Engineer

Dalam pengembangan layanan berbasis microservices, komunikasi antar layanan menjadi kunci utama—dan Protocol Buffers (protobuf) hadir sebagai salah satu solusi serialization yang cepat dan efisien. Untuk menggabungkan Protocol Buffers dengan aplikasi Golang, kita memerlukan beberapa tools penting, khususnya plugin protoc-gen-go dan protoc-gen-go-grpc.

Pada artikel ini, saya akan membagikan langkah demi langkah proses instalasi kedua plugin tersebut, beserta tips troubleshooting, best practice, simulasi sederhana, hingga penjelasan bagaimana tools ini berintegrasi ke dalam workflow development Anda.


Kenapa Harus protoc-gen-go dan protoc-gen-go-grpc?

Sebelum ke implementasi, mari kita pahami dulu peran masing-masing plugin:

PluginFungsi
protoc-gen-goMeng-generate kode Go dari file .proto untuk konsumsi data (messages, enums, dsb).
protoc-gen-go-grpcMenghasilkan stub client dan server untuk gRPC menggunakan kode Go.

Jadi, jika Anda ingin membangun aplikasi Go yang berkomunikasi menggunakan gRPC dan mendefinisikan API menggunakan file .proto, kedua plugin ini sangat vital.


Alur Penggunaan (Workflow)

Agar lebih jelas, berikut diagram sederhana alur penggunaan plugin-plugin ini dalam workflow build aplikasi Go berbasis prostobuf dan gRPC.

MERMAID
flowchart TD
    A[Menulis file .proto] --> B{Menjalankan
protoc compiler} B -->|--plugin=protoc-gen-go| C[Kode Go untuk data] B -->|--plugin=protoc-gen-go-grpc| D[Kode Go untuk gRPC Stub] C --> E[Integrasi ke dalam aplikasi Go] D --> E

1. Persiapan Lingkungan

Sebelum mulai menginstall plugin, pastikan sudah memenuhi beberapa prasyarat berikut:

  • Go v1.18+
  • protoc (Protocol Buffer Compiler) v3.20+
  • GOPATH sudah di-set

Cek Go dan protoc:

bash
1go version
2protoc --version

Jika protoc belum terpasang, Anda dapat menginstallnya di Linux/macOS melalui Homebrew:

bash
1brew install protobuf

2. Instalasi Plugin

a. Menginstall protoc-gen-go

Plugin ini digunakan untuk generate kode .pb.go dari file protobuf.

Jalankan perintah berikut:

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

Catatan:
Setelah proses ini, binary protoc-gen-go akan ditemukan di $GOPATH/bin atau $HOME/go/bin. Pastikan path ini ada di $PATH environment variable Anda.

b. Menginstall protoc-gen-go-grpc

Plugin ini khusus generate kode stub untuk gRPC server dan client.

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

Sekali lagi, binary akan ada di $GOPATH/bin atau $HOME/go/bin.


3. Verifikasi Instalasi

Cek hasil instalasi dengan:

bash
1which protoc-gen-go
2which protoc-gen-go-grpc

Jika outputnya berupa path ke binary, pemasangan berhasil.


4. Contoh Penggunaan

Kita akan coba simulasi project sederhana.

a. Struktur Proyek

bash
1.
2├── proto/
3│   └── hello.proto
4└── go.mod

b. Contoh File hello.proto

proto
 1syntax = "proto3";
 2
 3package hello;
 4
 5service Greeter {
 6    rpc SayHello (HelloRequest) returns (HelloReply) {}
 7}
 8
 9message HelloRequest {
10    string name = 1;
11}
12
13message HelloReply {
14    string message = 1;
15}

c. Generate Kode Go

Buka terminal pada root project, lalu jalankan:

bash
1protoc \
2  --go_out=. \
3  --go-grpc_out=. \
4  --proto_path=./proto \
5  proto/hello.proto

Setelah dieksekusi, akan muncul file baru:

  • proto/hello.pb.go (hasil dari plugin protoc-gen-go)
  • proto/hello_grpc.pb.go (hasil dari plugin protoc-gen-go-grpc)

5. Simulasi Integrasi di Kode Go

Anda dapat menggunakan kode hasil generate tersebut sebagai base implementasi server atau client gRPC.

Contoh Implementasi Server (Singkat)

go
 1package main
 2
 3import (
 4    "context"
 5    "log"
 6    "net"
 7
 8    pb "path/to/proto/hello"
 9    "google.golang.org/grpc"
10)
11
12type server struct {
13    pb.UnimplementedGreeterServer
14}
15
16func (s *server) SayHello(ctx context.Context, req *pb.HelloRequest) (*pb.HelloReply, error) {
17    return &pb.HelloReply{Message: "Hello " + req.Name}, nil
18}
19
20func main() {
21    lis, _ := net.Listen("tcp", ":50051")
22    grpcServer := grpc.NewServer()
23    pb.RegisterGreeterServer(grpcServer, &server{})
24    log.Println("gRPC Server listening on port 50051")
25    grpcServer.Serve(lis)
26}

6. Troubleshooting Umum

MasalahSolusi
protoc-gen-go: program not found or is not executablePastikan $GOPATH/bin atau $HOME/go/bin sudah masuk di $PATH environment variable.
Kode tidak di-generateCek path file .proto dan argument --proto_path, serta pastikan plugin sudah terpasang.
Versi tidak kompatibelCek versi protoc, Go, dan plugins agar sesuai rekomendasi dokumentasi terbaru.

7. Kesimpulan

Dengan menginstall dan mengkonfigurasi protoc-gen-go dan protoc-gen-go-grpc, proses pengembangan aplikasi microservices berbasis Go dan gRPC menjadi jauh lebih mudah dan terstandarisasi. Pastikan juga untuk selalu update plugin agar menikmati fitur terbaru dan compatibility dengan protobuf serta ekosistem gRPC-Go.

Danger
Selamat bereksperimen! Jika ada pertanyaan atau pengalaman menarik saat setup plugin ini, silakan tulis di komentar.

Referensi

Artikel Terkait

💬 Komentar