gRPC (Google Remote Procedure Call)  adalah kerangka kerja yang kuat untuk bekerja dengan Panggilan Prosedur Jarak Jauh. RPC memungkinkan Anda untuk menulis kode seolah-olah akan dijalankan di komputer lokal, meskipun mungkin dijalankan di komputer lain.



Apa itu gRPC? Protokol Buffer, Streaming gRPC?


Tentang gRPC

Pada 2015, Google membuka sumber proyek mereka yang pada akhirnya disebut gRPC. Tapi apa arti "g" di gRPC sebenarnya?

Banyak orang mungkin menganggap ini untuk Google karena Google yang membuatnya, tetapi ternyata tidak.

Google mengubah arti "g" untuk setiap versi ke titik di mana mereka bahkan membuat README untuk mencantumkan semua artinya.

Sejak gRPC diperkenalkan, gRPC telah mendapatkan popularitas yang cukup besar dan banyak perusahaan menggunakannya.


Kelebihan gRPC


gRPC memiliki berbagai keunggulan yaitu:

  1. Dibangun dengan protokol HTTP 2 sehingga fitur streaming dan komunikasi dua arah (bidirectional) dapat digunakan.
  2. Memiliki fitur untuk melakukan generate code tanpa aplikasi tambahan.
  3. Sebuah gRPC baik sisi server atau klien dapat diimplementasikan ke berbagai bahasa pemrograman yang berbeda. Sebagai contoh, sebuah gRPC server yang menggunakan Golang dapat berkomunikasi dengan gRPC klien yang menggunakan bahasa lain seperti Java dan JavaScript.

HTTP/2 dan gRPC




HTTP telah bersama kami sejak lama. Sekarang, hampir semua layanan backend menggunakan protokol ini.

Grafik HTTP2
Sejarah HTTP
Seperti yang ditunjukkan gambar di atas, HTTP/1.1 tetap relevan untuk waktu yang lama.

Kemudian pada tahun 2015, HTTP/2 keluar dan pada dasarnya menggantikan HTTP/1.1 sebagai protokol transport paling populer di internet.

Jika Anda ingat bahwa tahun 2015 juga merupakan tahun keluarnya gRPC, itu sama sekali bukan kebetulan. HTTP/2 juga dibuat oleh Google untuk digunakan oleh gRPC dalam arsitekturnya.

HTTP/2 adalah salah satu alasan utama mengapa gRPC dapat bekerja dengan sangat baik. Dan di bagian selanjutnya, Anda akan tahu alasannya.


Protocol Buffer, alias Protobuf


Protobuf adalah IDL (Interface Definition Language) yang paling umum digunakan untuk gRPC. Ini tempat Anda menyimpan data dan kontrak fungsi dalam bentuk file proto.

message User {
    required string name = 1;
    required int32 id = 2;
    optional string email = 3;
}

Karena ini dalam bentuk kontrak, klien dan server harus memiliki file proto yang sama. File proto bertindak sebagai kontrak perantara bagi klien untuk memanggil fungsi apa pun yang tersedia dari server.

Protobuf juga memiliki mekanismenya sendiri, tidak seperti REST API biasa yang hanya mengirimkan string JSON sebagai byte. Mekanisme ini memungkinkan muatan menjadi jauh lebih kecil dan memungkinkan kinerja yang lebih cepat.

Streaming

Streaming adalah salah satu konsep inti gRPC di mana beberapa hal dapat terjadi dalam satu permintaan. Ini dimungkinkan oleh kemampuan multiplexing HTTP/2 yang disebutkan sebelumnya.


Ada beberapa jenis streaming:


  • Server Streaming RPC: Di mana klien mengirim satu permintaan dan server dapat mengirim kembali beberapa tanggapan. Misalnya, saat klien mengirimkan permintaan untuk beranda yang memiliki daftar beberapa item, server dapat mengirim kembali respons secara terpisah, memungkinkan klien menggunakan pemuatan lambat.
  • RPC Streaming Klien: Di mana klien mengirim beberapa permintaan dan server hanya mengirim kembali satu tanggapan. Misalnya, zip/potongan yang diunggah oleh klien.
  • RPC Streaming Dua Arah: Di mana klien dan server saling mengirim pesan pada saat yang sama tanpa menunggu tanggapan.


Tambahan

Google bahkan mengklaim kalau gRPC memiliki kecepatan 10x lipat dibanding Rest API biasa.

Kemudian jika Client seperti ReactJS ingin mengakses langsung gRPC harus menggunakan proxy seperti Envoy, karena gRPC tidak bisa langsung di akses oleh client.

Kemudian untuk tools testing bisa menggunakan Postman atau Kreya.


Baca Juga: