Apa itu gRPC?
gRPC adalah framework remote procedure call (RPC) dengan performa tinggi yang dirilis oleh Google pada Agustus 2016. Sejak saat itu, gRPC telah mendapatkan perhatian baik di kalangan komunitas open source maupun perusahaan sebagai cara untuk mengakomodasi interaksi klien-server yang dibutuhkan untuk pengembangan lintas platform dan desain arsitektur mikroservis.
gRPC dapat menyederhanakan proses bagi pengembang untuk membangun sistem terhubung dengan menghubungkan layanan di dalam dan antar pusat data. Ini juga menyediakan dukungan yang dapat dipasang untuk pelacakan, pengecekan kesehatan, penyeimbangan beban, dan otentikasi.
Pengembang sering menggunakan gRPC untuk interaksi klien mobile dan web karena dapat menghasilkan pustaka untuk Android dan iOS. Selain itu, gRPC menggunakan protokol transport HTTP berbasis standar sehingga dapat melewati firewall keamanan dan mengakses proxy perantara.
Bahasa Pemrograman yang Didukung
Klien dan server gRPC dapat dijalankan dan berkomunikasi satu sama lain di berbagai lingkungan, termasuk desktop pengguna atau server di dalam jaringan Google. Selain itu, klien gRPC dapat ditulis dalam berbagai bahasa pemrograman populer, termasuk (tetapi tidak terbatas pada):
- Java
- C# dan C++
- Objective-C
- Ruby
- Python
- Go
Di atas itu, pengembang dapat membuat server gRPC di Java dengan klien di Python, Ruby, atau Go. Selain itu, karena API Google terbaru memiliki versi gRPC dari antarmuka mereka, pengembang dapat membangun fungsionalitas Google ke dalam aplikasi mereka.
Manfaat Menggunakan gRPC
gRPC, seperti sistem RPC lainnya, berputar di sekitar ide mendefinisikan layanan, seperti mengidentifikasi metode yang dapat dipanggil secara jarak jauh beserta parameter dan tipe pengembalian mereka. Namun, gRPC menyediakan teknologi canggih yang efisien dan scalable, seperti HTTP/2 dan stream. Karena bersifat agnostik terhadap teknologi, gRPC dapat digunakan dan berinteraksi dengan server dan klien dari beberapa bahasa pemrograman yang berbeda.
gRPC juga dibangun di atas protocol buffers, yang juga dikenal sebagai protobuf. Protocol buffers adalah alat Google untuk mengurutkan data terstruktur, yang memungkinkan komunikasi dan penyimpanan data yang dapat diprediksi dan dianalisis.
Jenis-jenis gRPC
Saat ini, gRPC memungkinkan pengembang untuk mendefinisikan empat jenis metode layanan, yang mirip dengan metode panggilan RPC tradisional lainnya:
Unary RPC
Panggilan fungsi dasar: Klien mengirim satu permintaan ke server, kemudian menerima satu respons kembali.
Server streaming
Klien mengirimkan permintaan ke server dan menerima stream pesan sebagai balasan. Klien membaca dari stream yang dikembalikan sampai tidak ada pesan yang tersisa. Di sini, gRPC menjaga urutan pesan dalam setiap panggilan RPC.
Client streaming
Sebaliknya dari server streaming, klien menulis serangkaian pesan dan mengirimkannya ke server, menggunakan stream yang disediakan. Setelah klien selesai menulis pesan, ia menunggu server untuk membacanya dan mengembalikan respons. Sekali lagi, gRPC menjaga urutan pesan dalam setiap panggilan RPC.
Bidirectional streaming
Baik klien maupun server mengirimkan serangkaian pesan melalui stream baca/tulis. Kedua stream bekerja secara independen satu sama lain dan, dengan demikian, klien dan server dapat membaca dan menulis dalam urutan apa pun. Misalnya, server membaca sebuah pesan lalu menulis respons. Atau server menunggu untuk menerima semua pesan klien sebelum menulis responsnya. Untuk menjaga urutan, gRPC memelihara urutan pesan dalam setiap stream.