Wayan Jimmy

Ngoprek Twirp RPC Framework

Sedikit konteks

Terinspirasi dari talk di channel Insinyur Online tentang Pursuit of Production Ready Software, saya terdorong untuk memulai sesi oprek dan mendokumentasikan-nya dalam beberapa media, salah satunya tulisan ini. (ini cuap cuap saja, sebenarnya saya tertarik hadiah buku-nya wqwq).

Salah satu topik yang sedang saya pelajari adalah tentang Sistem Terdistribusi, dan masih jadi, misteri buat saya gimana caranya membuat komunikasi antar aplikasi yang reliable, scalable dan maintanable (sesuai dengan 3 attributes membuat aplikasi siap guna).

Tapi saya tidak akan membahas dari segi 3 attributes diatas, karena saya ada masalah lain yang ingin telusuri.

Permasalahan

Saat proyek baru dimulai, mengembangkan komunikasi aplikasi sistem terdistribusi dengan REST API mungkin belum muncul banyak masalah, tapi masalah mulai terasa ketika API endpoint terus bertambah seiring penambahan fitur, Pengembang yang terlibat juga bertambah seiring perkembangan organisasi.

Sehingga setiap menulis sebuah endpoint baru, muncul pertanyaan sbb.

Belum ada-nya standarisasi menambah runyam kondisi ini, jadi saya mencari sebuah petunjuk, dan menemukan sebuah konsep yang bernama Remote Procedural Call selanjutnya disebut RPC1. Saya juga breakdown masalah ini dalam bentuk mindmap.

Apa itu RPC?

Yang saya tangkap, RPC ini adalah sebuah fungsi yang sebenarnya di-eksekusi di mesin berbeda dimana fungsi ini dipanggil, namun karena RPC sudah menyembunyikan implementasi-nya, kita seolah-olah memanggil fungsi tersebut dari fungsi utama.

Karena sedang belajar Golang, saya mencari sebuah implementasi RPC dan menemukan Twirp. Module ini menurut saya menarik karena dibuat oleh Twitch dan sudah digunakan secara production, katanya sih begitu, mari kita gali lagi.

Twirp sebuah Framework RPC ditulis dengan Golang

Mengapa memilih Twirp, dari tulisan blog2 ini saya menemukan beberapa hal menarik sbb.

Bagaimana caranya menggunakan Twirp?

Output dari sesi oprek kali ini adalah menghasilkan proof of concept sbb.

  1. Membuat implementasi client dan server menggunakan definisi protobuf dan Twirp
  2. Membuat implementasi client dari browser

Lebih detail tentang langkah-langkah oprekan ini, saya rekam dalam catatan yg lebih kasar disini.

Kesimpulan

Pro

Kontra

Catatan Kaki


  1. Wikipedia: RPC ↩︎

  2. Twirp a Sweet new RPC Framework for Go ↩︎