Belajar Basic gRPC Server dengan Golang — Quick start

Cecep Aprilianto
3 min readNov 29, 2022

--

Postingan ini akan membantu Anda mengenal gRPC di Golang dengan cepat. Sebenarnya tidak hanya di golang saja, namun bisa juga untuk java, kotlin, c, c++, php, dll.

Apa itu gRPC?

Sebuah framework yang dibuat oleh Google untuk meng-handle RPC (Remote Procedure Call), dan lebih cepat dibandingkan REST. Biasanya kita menggunakan REST untuk mengirim data, yang payloadnya berbentuk JSON, di gRPC data yang dikirim di encode dan berbentuk protocol buffers.

Untuk dokumentasi official bisa Anda lihat di grpc.io

Apa itu Protocol Buffers?

Mekanisme bahasa-netral, platform-netral, dan dapat diperluas dari Google untuk serialisasi data terstruktur — bayangkan XML, tetapi lebih kecil, lebih cepat, dan lebih sederhana. Anda menentukan bagaimana Anda ingin struktur data Anda hanya sekali, kemudian Anda dapat menggunakan source code khusus yang dibuat untuk dengan mudah menulis dan membaca data terstruktur Anda ke dan dari berbagai aliran data dan menggunakan berbagai bahasa.

Prerequisites

Install Go Plugins

Install protocol compiler plugins untuk go dengan perintah berikut:

$ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2

Perbarui PATH Anda sehingga compiler protoc dapat menemukan plugin:

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

Membuat Proyek

Langkah pertama, kita buat dulu module untuk proyeknya:

mkdir belajar-grpc-go
cd belajar-grpc-go
go mod init github.com/USERNAME/belajar-grpc-go

Ganti USERNAME dengan nama username github Anda.

Kemudian install go-grpc package dengan perintah:

go get -u google.golang.org/grpc

Compile proto file

Buat folder dengan nama hello dan buat file protocol dengan extensi .proto, misal nama filenya helloworld.proto, lalu isi dengan kode berikut:

Kemudian, ketikan perintah berikut pada terminal atau cmd, untuk regenerate kode gRPC

$ protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
hello/helloworld.proto

Maka akan terlihat file yang sudah di generate seperti berikut:

Implementasi gRPC Server

Sebelum menjalankan gRPC Server, kita harus meng-implementasikan method yang sudah kita buat di file helloworld.proto tadi. Dalam kasus ini adalah

rpc SayHello (SayHelloRequest) returns (SayHelloResponse);

Buat file main.go dan isi dengan kode berikut:

Jalankan server dengan perintah berikut:

go run main.go

Test gRPC Server dengan BloomRPC

BloomRPC adalah GUI Client untuk RPC Service, ya samalah seperti Postman. Anda bisa mendownloadnya disini.

Setelah di instal, Anda harus memasukan proto yang sudah didefinisikan sebelumnya, dan selanjutnya tinggal di test, seperti gambar berikut:

Test gRPC Server dengan BloomRPC

Source Code

--

--