Belajar Basic gRPC Server dengan Golang — Quick start
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
- Go. Untuk petunjuk penginstalan, lihat panduan Memulai.
- Protocol buffer compiler,
protoc
, version 3. Untuk petunjuk pemasangan, lihat Protocol Buffer Compiler Installation. - Go plugins untuk protocol compiler, yang akan kita jelaskan pada postingan ini.
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: