15 poin oleh GN⁺ 2023-10-05 | 2 komentar | Bagikan ke WhatsApp
  • Artikel pengantar interaktif tentang Conflict-free Replicated Data Types (CRDT)
    • Jenis struktur data yang disimpan di komputer lain (peer) dan dapat diperbarui seketika tanpa permintaan jaringan atau konfirmasi dengan peer lain
  • CRDT sangat cocok untuk membangun aplikasi kolaboratif kaya seperti Google Docs dan Figma tanpa kebutuhan sinkronisasi dari server pusat
  • Ada dua jenis CRDT: berbasis status dan berbasis operasi
    • CRDT berbasis status mengirimkan seluruh status antar peer, dan status baru diperoleh dengan menggabungkan semua status
    • CRDT berbasis operasi hanya mengirimkan tindakan yang diambil pengguna, yang kemudian dapat digunakan untuk menghitung status baru
  • Artikel ini berfokus pada CRDT berbasis status dan menjelaskan cara membangun CRDT primitif, cara menyusunnya menjadi struktur data yang lebih kompleks, serta cara membangun editor pixel art kolaboratif
  • Memperkenalkan konsep Last Write Wins Register (LWW Register), yaitu jenis CRDT sederhana yang menyimpan satu nilai dan menggunakan timestamp untuk menimpa nilai saat ini dengan nilai yang terakhir ditulis
  • Juga memperkenalkan konsep CRDT yang lebih kompleks bernama Last Write Wins Map (LWW Map), yang menyimpan satu atau lebih nilai
  • Termasuk playground interaktif untuk membantu memahami cara kerja LWW Register dan LWW Map
  • Artikel berikutnya akan berfokus pada pembangunan editor pixel art kolaboratif dengan menggunakan konsep yang dijelaskan dalam artikel ini

2 komentar

 
cosine20 2023-10-06

Isinya cukup menarik. Saya sempat penasaran bagaimana aplikasi yang memungkinkan kolaborasi real-time seperti Google Docs diimplementasikan...

 
GN⁺ 2023-10-05
Pendapat Hacker News
  • Artikel ini dipuji sebagai pengantar yang sangat baik tentang Conflict-free Replicated Data Types (CRDTs) untuk para pengembang, dengan contoh kode nyata dan penjelasan yang jelas
  • CRDTs digunakan dalam pengembangan produk dan meski bisa sulit ditangani, menawarkan manfaat seperti latensi nol dan konsistensi eventual
  • CRDTs memungkinkan cache terdistribusi tanpa logika invalidasi, sehingga menyederhanakan pengelolaan cache dan meningkatkan performa
  • CRDTs memungkinkan penghapusan operasi penulisan lama, yang dapat mengurangi beban sistem dan memungkinkan edge computing
  • Namun, penggunaan CRDTs juga menghadirkan tantangan seperti sulitnya otorisasi berbasis peran, perlunya perubahan pada model data aditif, dan masalah debugging
  • Layanan seperti Liveblocks berupaya menyederhanakan penggunaan CRDTs, tetapi biayanya bisa mahal bagi pengembang independen
  • CRDTs telah digunakan dalam berbagai aplikasi seperti pengelola kampanye TTRPG, database sinkronisasi otomatis, dan alat notebook kolaboratif
  • CRDTs dianggap sangat berguna dan menarik untuk pengelolaan data, tetapi pentingnya bagi aplikasi yang berpusat pada pengguna masih diperdebatkan
  • Sebagian orang berpendapat bahwa manfaat utama CRDTs adalah kolaborasi real-time, yang menurut mereka sudah diselesaikan oleh solusi terpusat seperti Google Docs
  • Sebagian lainnya menunjukkan bahwa CRDTs menawarkan manfaat seperti dukungan multi-perangkat dan akses offline, tetapi fitur-fitur ini juga tersedia dalam solusi terpusat
  • Ada juga kekhawatiran tentang keberlangsungan data jangka panjang dan kontrol pengguna saat memakai CRDTs, karena pembaruan model data tidak mudah dan peer lain dapat mengubah data
  • Terlepas dari perdebatan ini, minat terhadap CRDTs tetap berlanjut, dan riset serta pengembangan di bidang ini terus berjalan