Last Updated on March 1, 2023 by
Dalam pengembangan API, tentunya sudah familiar dengan REST. Lalu, pernahkah Anda pernah mendengar tentang gRPC? gRPC adalah framework baru untuk pengembangan API yang powerful. Tentunya hal ini akan menarik untuk kita bahas. Yuk, simak sampai akhir!
Table of Contents
API
Untuk masuk ke pembahasan gRPC adalah suatu keharusan untuk mengenal Application Programming Interface (API). Maka dari itu, mari mengenal API terlebih dahulu. API merupakan penghubung atau perantara antar aplikasi. Dengan kata lain, API sebagai jembatan agar aplikasi satu dengan aplikasi yang lainnya dapat berkomunikasi.
Sebagai ilustrasi, anggaplah ada sebuah kedai kopi yang mana terdapat pelanggan, pelayan, dan barista. Pelanggan akan memesan kopi melalui pelayan dan pelayan akan meneruskannya ke barista untuk dibuatkan kopi. Ketika kopi selesai, barista akan kembali ke pelayan agar kopi dapat diantarkan ke pelanggan. Jadi, pelayan di sini diilustrasikan sebagai API, pelanggan dan barista sebagai aplikasinya.
Jika pada aplikasi, misalnya Anda mengakses sebuah aplikasi pemesanan hotel dan memutuskan untuk memesan suatu kamar hotel. Maka aplikasi tersebut akan mengakses API. Dari API akan meneruskannya ke server. Server menerima permintaan tersebut dan mengirimkan respon ke API kembali. API akan menyampaikan respon tersebut ke aplikasi pemesanan hotel.
Dua aplikasi memungkinkan untuk berkomunikasi melalui API meskipun kedua aplikasi tersebut menggunakan dua bahasa pemrograman yang berbeda. Selain itu, adanya API tidak perlu lagi menambahkan data secara manual dan pengembangan aplikasi menjadi lebih efisien. Dengan API dapat menghindari adanya server down.
Ada empat jenis API berdasarkan penggunaannya, seperti Public API yang dapat diakses siapapun, private API hanya diakses secara internal dan tidak terbuka secara umum, Partner API yang digunakan untuk kepentingan umum dengan terbatas pihak yang telah diberikan izin, dan terakhir adalah Composite API digunakan untuk menyimpan data dari berbagai server hanya pada satu tempat.
Selain itu, API memiliki beberapa arsitektur yang salah satunya akan kita bahas lebih dalam pada artikel ini, apa saja itu? Berikut adalah arsitektur API yang sering digunakan oleh pengembang.
1. SOAP
Simple Object Protocol (SOAP) merupakan sebuah protokol untuk melakukan transmisi data pada lintas jaringan dan juga digunakan untuk membangun API. Extensible Markup Language (XML) dimanfaatkan oleh SOAP. SOAP sendiri telah distandarisasi oleh World Wide Web Consortium (W3C).
SOAP lebih aman dibandingkan dengan REST API karena SOAP secara ketat mendefinisikan bagaimana sebuah message dikirim dan apa saja yang harus disertakan di dalamnya. Meskipun lebih aman, tetapi pedomannya lebih kaku dan membuat kode menjadi berat serta lebih sulit diterapkan secara umum.
Karena itu, SOAP lebih sering diterapkan untuk mentransfer data internal yang membutuhkan keamanan yang tinggi. Selain itu, SOAP dapat bekerja dengan komunikasi protocol apapun yang tidak hanya HTTP saja.
2. RPC
Remote Procedural Call (RPC) merupakan protokol yang memanggil proses. Dengan kata lain RPC API dapat mengeksekusi script pada server tidak seperti REST dan SOAP. JSON (JSON-RPC) dan XML (XML-RPC) dapat digunakan untuk panggilan dalam RPC API. Meskipun keduanya mirip, XML lebih aman dan lebih akomodatif dibandingkan dengan JSON.
RPC memang lebih ketat, tetapi RPC relatif sederhana dan mudah untuk mengeksekusi kode pada jaringan jarak jauh. Dari segi kapabilitas dan keamanannya yang terbatas, RPC lebih jarang terlihat dibandingkan dengan REST dan SOAP. Namun, RPC dapat digunakan untuk sistem internal untuk membuat proses permintaan sederhana.
3. REST
Representational State Transfer (REST) populer digunakan sebagian besar pengembang dalam membangun web API. REST cukup mudah untuk digunakan, scalable dan ringan. Lalu, REST API merupakan API yang mengikut panduan REST yang digunakan untuk mentransfer data dari server ke client. REST API cepat dan mentransfer data dengan aman. Adapun beberapa panduan REST, yaitu:
- Client-server separation: bentuk dari REST adalah requestdari client dan diteruskan ke server, lalu server memberikan respon ke client. Server tidak dapat melakukan request. Begitupun sebaliknya, client tidak dapat melakukan respon.
- Uniform interface: semua bentuk protokolkomunikasi adalah dalam bentuk HTTP. Server merespon permintaan client menggunakan format Javascript Notation Object (JSON).
- Stateless: setiap interaksi antara serverdan client sifatnya independen. Server tidak menyimpan data dari request client dan tidak akan mengingat interaksi yang dilakukan sebelumnya.
- Layered system: baik request clientmaupun respon server harus dalam bentuk format yang sama.
- Cacheable: respon dari server harus menunjukkan apakah sumber daya yang disediakan akan di-cachedan dalam waktu berapa lama.
gRPC
gRPC adalah arsitektur open-source yang dikembangkan oleh Google yang memungkinkan berkomunikasi antar microservices dengan kecepatan yang tinggi. Google mengembangkannya dan merilis dengan open-source pada tahun 2015. Banyak perusahaan besar yang menggunakannya, seperti Netflix, Cisco, Uber, dan lainnya.
gRPC menggunakan format pesan protocol buffers (Protobuf) yang mana format message ini efisien untuk melakukan serialisasi data. Jadi, tidak seperti REST API yang menggunakan JSON/XML. Protobuf mampu menserialisasi dan deserialisasi dari struktur data untuk berkomunikasi dengan yang lainnya melalui binary. Selain itu, Protobuf ringan dan cepat, serta dapat membantu untuk mengurangi ukuran dari message.
gRPC berbasis RPC dan dibangun atas HTTP/2.0 sebagai transport layer protocol untuk berkomunikasi. Karena berbasis RPC, clients dapat memanggil service method apapun pada gRPC, baik dalam mesin lokal maupun remote server.
Ada beberapa service method pada gRPC, antara lain:
- Unary, yaitu service methodyang mengambil satu input dan mengembalikan satu output. Unary ideal untuk RPC yang sederhana.
- Server streaming, yaitu service methodyang menerima satu input dari client dan mengirim stream output yang mana dapat dikirim kembali beberapa output saat data tersedia. Server streaming ideal untuk tugas yang membutuhkan pengolahan data yang berat.
- Client streaming, yaitu service methodyang membuatkan koneksi ke server dan ketika server stream dapat dimulai, client side dapat mengirim data hingga stream Client streaming ideal ketika lebih memerhatikan latensi.
- Bidirectional, yaitu service methodyang secara simultan mengirim dan menerima data stream dengan dua arah. Bidirectional ideal untuk komunikasi secara real-time.
Berbeda dengan REST API yang harus menggunakan tools third-party ke auto-generate kode untuk panggilan API dalam berbagai bahasa, gRPC mendukung inbuilt protoc compiler untuk mendukung fitur code generation dalam arsitektur. Protoc compiler dalam gRPC mampu untuk terkoneksi dalam berbagai microservice yang berbeda yang kodenya juga dalam berbagai bahasa dan berjalan di berbagai platform.
Kelebihan dan Kekurangan gRPC
Ada banyak keuntungan gRPC mengapa Anda harus menggunakannya. Berikut adalah berbagai keuntungannya.
1. Dukungan Bahasa yang Luas
Seperti yang telah disebutkan sebelumnya, gRPC mendukung bahasa dan framework, seperti Java, Ruby, Go, Node.js, Python, C#, dan PHP. Selain itu, gRPC juga dapat memanggil fungsi apapun tidak hanya GET ataupun PUT, sehingga gRPC dapat lebih serbaguna.
2. Ukuran Messageyang Lebih Kecil
Message pada gRPC lebih kecil karena menggunakan format binary message (protocol buffers), sehingga lebih cepat.
3. Komunikasi yang Cepat
Karena menggunakan HTTP/2 bukan HTTP/1.1, gRPC lebih efisien karena memungkinkan untuk mengurangi penggunaan bandwidth jaringan dan mengurangi latensi. Selain itu, karena ukuran message lebih kecil, membuat proses transfer menjadi lebih cepat antar server dan client.
4. Koneksi Streaming
gRPC mendukung streaming connection mode. Hal ini dapat meningkatkan performansi, apalagi ketika data terlalu besar untuk dikirim ataupun diterima sekaligus. Dengan mode ini, client dapat secara terus menerus menerima data dari server tanpa harus menunggu semua respon diterima, sehingga pengguna tidak perlu menunggu hingga semua data ditransfer secara lengkap.
5. Dukungan Pluggable
Keuntungan terakhir gRPC adalah mendukung plugin pelacakan, load balancing, pemeriksaan kesehatan, dan autentikasi, sehingga lebih mudah untuk mengatur dan mengelola performansi sistem yang tinggi.
Meski gRPC merupakan tool yang powerful, gRPC sulit untuk melakukan debug ketika aplikasi mengalami error. Selain itu, ekosistem pada gRPC relatif kecil dibandingkan dengan REST.
Kapan Menggunakan gRPC?
Jika mengalami suatu kondisi, maka dapat diselesaikan dengan alat yang sesuai sesuai kondisi itu juga. Maka, kapan menggunakan gRPC ini? Beberapa kondisi yang yang mana ideal menggunakan gRPC adalah sebagai berikut.
- Menggunakan koneksi microservice
- Bandwith jaringan yang lemah
- Real-time streaming
- Ketika dalam lingkungan yang beragam bahasa.
Kesimpulan
Itulah bahasan terkait gRPC. Secara keseluruhan, gRPC adalah framework yang cepat, andal, dan efisien untuk meng-handle remote procedure call. Jadi sudahkah Anda ingin beralih menggunakan gRPC atau tetap menggunakan REST/SOAP?
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.