DEV Community

Cover image for Protocol Buffers di Bahasa Go
Ahmad Wijaya
Ahmad Wijaya

Posted on

Protocol Buffers di Bahasa Go

Protocol Buffers adalah mekanisme bahasa dan platform netral yang dibuat oleh Google dan dapat diperluas untuk membuat serialisasi data terstruktur. Protobuf sendiri hanya bertugas untuk serialisasi data saja, sementara untuk komunikasi antar service harus menggunakan gRPC.

gRPC adalah sebuah remote procedure call atau RPC yang dibuat oleh google. gRPC menggunakan HTTP/2 untuk komunikasinya, dan Protocol Buffers di bagian antarmuka-nya.

Mungkin masih terasa abstrak sebenarnya apa fungsi protobuf ini. Agar lebih mudah Saya akan mengilustrasikan sebuah service origin yang mengkonsumsi data dari service destination (RESTful), dengan data dikirimkan dalam format JSON. Service origin adalah service yang mengkonsumsi data berupa JSON, Sementara service destination adalah service yang menghasilkan data berupa JSON.

Image description

Dari ilustrasi diatas, HTTP digunakan sebagai transport antara service origin dan service destination dan JSON digunakan sebagai format request payload dan response body.

Kalau arsitektur http request response menggunakan JSON dikonversi kedalam bentuk gRPC dan probuf, maka akan menjadi seperti gambar dibawah ini.

Image description

Cukup bisa dipahami bukan?

Sederhananya protobuf itu mirip seperti JSON atau XML, namun perbedaannya protobuf lebih terstruktur dan skema model harus didefinisikan diawal (schema on write).

Skema dalam protobuf didefinisikan kedalam file berekstensi .proto. Dari file tersebut akan digenerate model sesuai bahasa pemrograman yang dipilih. Misalnya bahasa yang dipilih Java, maka model yang digenerate akan berupa POJO. Kalau bahasa yang dipilih Go, maka model yang digenerate berupa struct, dsb.

gRPC dan protobuf merupakan salah satu pilihan terbaik untuk service yang dibangun mengadopsi arsitektur microservices.

Discussion (0)