7 poin oleh GN⁺ 2023-10-19 | 1 komentar | Bagikan ke WhatsApp
  • Reflect adalah framework baru untuk membangun aplikasi web multipemain yang mirip dengan Figma, Notion, dan Google Sheets.
  • Ini merupakan versi evolusi dari Replicache, framework sinkronisasi sisi klien, dan menambahkan server yang dikelola sepenuhnya untuk mempermudah pengembangan aplikasi multipemain.
  • Reflect kini tersedia untuk publik untuk pertama kalinya.
  • Framework ini menangani masalah penyelesaian konflik dalam pengeditan kolaboratif, sehingga semua pengguna melihat hal yang sama dan konflik terselesaikan secara alami.
  • Berbeda dari alat ekosistem web populer seperti CRDTs (Conflict-Free Replicated Data Types), Reflect menggunakan teknik Transactional Conflict Resolution yang populer di industri video game.
  • Keunggulan dan perbedaan unik Reflect berasal dari pilihan inti pada mesin sinkronisasi ini.
  • Reflect menggunakan fungsi JavaScript yang disebut mutator untuk menerapkan perubahan, dan menghasilkan mutation record saat mutator dipanggil.
  • Mutation diterapkan secara lokal dan dialirkan ke server, lalu server melinearkan mutation berdasarkan waktu kedatangan untuk menghasilkan status otoritatif berikutnya.
  • Reflect dapat menangani aplikasi yang bergerak cepat dan menambahkan mutation sambil menunggu konfirmasi atas mutation sebelumnya.
  • Framework ini memerlukan penyimpanan data cepat yang mendukung rewind, fork, dan pembuatan branch, serta penyimpanan sisi server cepat yang mampu mengejar mutation yang masuk.
  • Pendekatan Reflect dapat digeneralisasi dengan baik, sehingga cocok untuk berbagai operasi seperti operasi aritmetika, operasi daftar, dan penegakan invarians tingkat tinggi.
  • Server Reflect bersifat otoritatif, menghitung ulang sendiri hasil mutation, dan memungkinkan semua klien melihat hasil tersebut.
  • Otoritas server ini memungkinkan autentikasi yang terperinci dan eksekusi kode lain di server.
  • Reflect juga memberikan manfaat seperti validasi skema dan migrasi.
  • Strategi sinkronisasi Reflect, yaitu Transactional Conflict Resolution, sederhana, fleksibel, dan kuat, sehingga menjadi pilihan yang baik untuk membangun aplikasi multipemain.

1 komentar

 
GN⁺ 2023-10-19
Komentar Hacker News
  • Artikel ini membahas Reflect, framework aplikasi web multipemain dengan sinkronisasi bergaya gim.
  • Demo Reflect di halaman utama bersifat interaktif dan terlihat sangat menarik, karena para pengguna tampak mengekspresikan antusiasme saat tugas selesai.
  • Reflect bukan open source, sehingga hal ini dapat membatasi adopsinya di perusahaan yang memprioritaskan perangkat lunak open source untuk infrastruktur inti.
  • Reflect sebelumnya dikenal dengan nama Replicache, dan kini menyertakan server sinkronisasi cepat.
  • Framework ini memungkinkan pengguna menentukan cara menangani konflik dengan kode yang sederhana dan berurutan, yang dianggap sebagai keunggulan dibandingkan CRDT.
  • Model data dan model pemrograman Reflect dipuji karena kesederhanaannya.
  • Ada pembahasan tentang tantangan mengimplementasikan operasi daftar di Reflect, khususnya dalam skenario ketika pembaruan terjadi secara bersamaan dari banyak pengguna.
  • Seorang pengguna menyoroti istilah yang membingungkan yang digunakan di Reflect, dan mengusulkan "multi-pengguna" alih-alih "multipemain" untuk perangkat lunak non-gim.
  • Ada pertanyaan tentang bagaimana Reflect menangani autentikasi, karena library CRDT sering kali tidak memiliki otoritas pusat untuk memverifikasi mutasi.
  • Strategi Reflect dibandingkan dengan "sinkronisasi deterministik" yang digunakan dalam pengembangan gim untuk menyinkronkan status banyak entitas.
  • Muncul pertanyaan tentang bagaimana Reflect menangani upgrade pada mutator, serta potensi ketidaksesuaian antara operasi klien dan server.
  • Seorang pengguna menyatakan bahwa protokol UDP di dalam browser diperlukan untuk menangani pengiriman pesan berfrekuensi tinggi pada engine multipemain, sambil mengkritik overhead TCP dan WebSocket.