Meteor 3.5 memungkinkan pengembang untuk meninggalkan SockJS dan beralih ke uWebSockets.js hanya dengan satu variabel lingkungan, menjanjikan biaya CPU, RAM, dan garbage-collection yang jauh lebih rendah untuk aplikasi yang sangat bergantung pada pemanggilan metode.

Mengapa perubahan ini penting

Sejak peluncurannya, Meteor telah mengarahkan setiap pesan DDP (Distributed Data Protocol) melalui SockJS, sebuah fallback JavaScript yang dapat bekerja di mana saja tetapi tidak pernah dirancang untuk kecepatan murni. Rilis baru ini memisahkan lapisan transport, menyediakan titik plug-in yang menerima implementasi WebSocket apa pun yang sesuai dengan ekspektasi DDP. Mengatur DDP_TRANSPORT=uws saat peluncuran akan mengganti default dengan uWebSockets.js, server berbasis C/C++ yang dikenal karena throughput yang tinggi.

Dari sisi performa

Benchmark yang disertakan dalam rilis ini menunjukkan:

  • Penggunaan CPU turun 9%
  • Konsumsi RAM turun 11%
  • Waktu jeda garbage-collection berkurang 26%
  • Throughput naik 1,6× dalam micro-benchmark

Keuntungan ini terlihat ketika sebuah aplikasi melakukan banyak pemanggilan metode bergaya RPC. Transport itu sendiri baru akan menjadi bottleneck setelah logika bisnis aplikasi dioptimalkan, sehingga peralihan ini dapat langsung berdampak pada biaya server yang lebih rendah.

Cara mencobanya hari ini

Tidak diperlukan biner terpisah—cukup Meteor 3.5. Jalankan aplikasi dengan:

DDP_TRANSPORT=uws meteor run

Server uWebSockets.js mendengarkan pada port-nya sendiri (default 5001). Ketika beberapa instans Meteor berbagi host yang sama, masing-masing harus diberikan uws.port yang berbeda melalui METEOR_SETTINGS untuk menghindari tabrakan.

Siapa yang diuntungkan, dan siapa yang mungkin tidak melihat banyak perbedaan

  • Beban kerja berat RPC – layanan yang memanggil banyak metode per permintaan akan menghemat siklus CPU dan memori, sehingga meringankan tekanan skalabilitas.
  • Aplikasi berpusat pada Pub/Sub – sebagian besar latensi dalam pola publish/subscribe berasal dari kalkulasi data-diff, bukan dari transport, sehingga peningkatan kecepatannya tidak terlalu signifikan.

Perubahan ini bersifat opt-in; SockJS tetap menjadi default, menjaga kompatibilitas dengan lingkungan di mana WebSocket asli tidak tersedia.

Pertimbangan dan peringatan

Beralih transport menambah sedikit langkah operasional: mengelola port tambahan dan memastikan tidak bentrok dengan layanan lain. Karena uWebSockets.js adalah modul native, hal ini membawa pertimbangan umum terkait dependensi biner—alat build harus tersedia di host deployment, dan setiap pembaruan library di masa mendatang perlu diuji terhadap basis kode aplikasi.

Apa selanjutnya untuk lapisan transport Meteor

Dengan menyediakan batasan yang jelas, Meteor kini mengundang komunitas untuk bereksperimen dengan transport alternatif—baik untuk persyaratan keamanan khusus, ekstensi protokol kustom, atau penyetelan performa lebih lanjut. Melihat seberapa cepat implementasi pihak ketiga muncul akan menunjukkan apakah model pluggable ini akan menjadi bagian permanen dari arsitektur Meteor.

Kesimpulan: Transport DDP yang bersifat pluggable pada Meteor 3.5 memungkinkan Anda mengganti stack SockJS lama dengan uWebSockets.js dalam satu perintah, memberikan throughput hingga 1,6× lebih tinggi dan penghematan sumber daya yang terukur untuk aplikasi intensif RPC, sambil tetap menjaga pengaturan yang ada tanpa perubahan untuk beban kerja yang tidak memerlukan peningkatan tersebut.