Sistem RPC Cap'n Web Hadapi Pertanyaan Tentang Desain Protokol dan Kelengkapan Fitur

Tim Komunitas BigGo
Sistem RPC Cap'n Web Hadapi Pertanyaan Tentang Desain Protokol dan Kelengkapan Fitur

Cloudflare telah memperkenalkan Cap'n Web , sebuah sistem Remote Procedure Call (RPC) baru yang dirancang khusus untuk browser web dan server. Dibangun dengan TypeScript , sistem ini bertujuan membawa keamanan berbasis kapabilitas dan promise pipelining ke pengembangan web. Namun, diskusi komunitas awal mengungkap beberapa kekhawatiran tentang pilihan desain dan keterbatasan saat ini.

Fitur Utama Cap'n Web:

  • Dibangun dengan TypeScript untuk browser web dan server
  • Model keamanan berbasis kapabilitas
  • Promise pipelining untuk mengurangi latensi jaringan
  • Dukungan panggilan dua arah
  • Serialisasi berbasis JSON
  • Dukungan mode batch HTTP
  • Integrasi dengan Cloudflare Workers, Fastly.js, dan runtime JavaScript lainnya
Gambaran umum Cap'n Web dari Cloudflare, sebuah sistem RPC baru untuk browser web dan server
Gambaran umum Cap'n Web dari Cloudflare, sebuah sistem RPC baru untuk browser web dan server

Protokol Khusus Bahasa Menimbulkan Pertanyaan Fundamental

Kritik paling signifikan berpusat pada ketergantungan Cap'n Web terhadap fitur-fitur khusus JavaScript seperti Promises dan async/await. Anggota komunitas mempertanyakan apakah ini benar-benar dapat disebut protokol ketika fungsionalitas intinya bergantung pada detail implementasi dari satu bahasa pemrograman. Pilihan desain ini berpotensi membatasi interoperabilitas dengan bahasa dan platform lain, yang secara tradisional merupakan kekuatan sistem RPC .

Kekhawatiran Paritas Fitur dengan Cloudflare Workers

Developer mengungkapkan ketidakpastian tentang kelengkapan fitur jangka panjang Cap'n Web dibandingkan dengan Cloudflare Workers . Dokumentasi mengakui bahwa set fitur antara kedua platform tidak identik, dengan rencana mencapai paritas dari waktu ke waktu. Hal ini menimbulkan pertanyaan apakah Cap'n Web akan konsisten tertinggal dari Cloudflare Workers dalam hal kemampuan dan dalam jangka waktu berapa fitur-fitur baru mungkin tersedia.

Kurangnya Peralatan Tingkat Enterprise

Meskipun Cap'n Web mengatasi beberapa keterbatasan GraphQL seperti pengambilan data bersarang, saat ini masih kekurangan peralatan sisi server yang penting yang disediakan sistem matang. Tidak adanya padanan untuk pola dataloader GraphQL berarti potensi masalah performa database ketika menangani query daftar. Tanpa fitur seperti persisted queries dan fungsionalitas allowlist, banyak developer berencana membatasi penggunaannya untuk komunikasi server-ke-server daripada API yang menghadap klien.

Keterbatasan Saat Ini yang Teridentifikasi:

  • Desain protokol spesifik bahasa membatasi interoperabilitas
  • Tidak ada pola dataloader yang setara untuk optimisasi database
  • Tidak ada dukungan persisted/allowlist queries
  • Tidak memiliki kemampuan out-of-band dan third-party handoffs
  • Kesenjangan paritas fitur dengan Cloudflare Workers
  • Status eksperimental dengan potensi masalah stabilitas

Keterbatasan Model Keamanan Kapabilitas

Dibandingkan dengan sistem berbasis kapabilitas lain seperti OCapN , Cap'n Web tampaknya memiliki kesenjangan yang mencolok. Sistem ini kekurangan kapabilitas out-of-band dan third-party handoffs, yang sangat penting untuk aplikasi terdistribusi. Sistem masih memerlukan autentikasi API key tradisional karena siapa pun dapat terhubung ke endpoint, sedangkan sistem kapabilitas yang lebih matang menggunakan token yang tidak dapat ditebak untuk otorisasi.

Ini tidak diperlukan dalam OCapN karena sturdyref adalah token yang tidak dapat ditebak sehingga dengan memilikinya Anda memiliki otoritas untuk mengirim pesan ke endpoint yang ditunjuknya.

Detail Implementasi Promise Pipelining

Fitur promise pipelining satu round trip telah menghasilkan diskusi tentang perilaku aktualnya. Meskipun dipasarkan sebagai pengurangan overhead jaringan, implementasinya masih memerlukan beberapa pesan dari klien ke server untuk panggilan berantai. Optimisasi berasal dari server yang merespons dengan payload tunggal daripada beberapa round trip, tetapi perbedaan ini tidak langsung jelas bagi semua developer.

Ketidakpastian Dukungan Multi-Bahasa

Pertanyaan tetap ada tentang potensi ekspansi Cap'n Web ke bahasa pemrograman lain. Meskipun ada minat untuk membawa desain yang disederhanakan kembali ke implementasi bahasa yang sudah ada di Cap'n Proto , upaya yang diperlukan untuk migrasi semacam itu mungkin tidak dapat dibenarkan mengingat implementasi yang sudah bekerja di berbagai bahasa.

Sistem ini menunjukkan potensi untuk kasus penggunaan spesifik, terutama komunikasi browser-ke-server dan skenario yang memerlukan kontrol kapabilitas yang detail. Namun, status eksperimental saat ini dan keterbatasan yang diidentifikasi oleh komunitas menunjukkan bahwa adopsi luas mungkin bergantung pada penanganan masalah desain dan fitur fundamental ini.

Referensi: Cap'n Web: a new RPC system for browsers and web servers