- 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
Komentar Hacker News