8 poin oleh GN⁺ 2024-06-26 | 1 komentar | Bagikan ke WhatsApp
  • Perangkat lunak Local-First: perangkat lunak yang terutama menyimpan data secara lokal, lalu menyinkronkan atau mencadangkannya melalui internet hanya saat diperlukan
  • Masalah Local-First
    • Bagus karena pengguna dapat memiliki dan mengendalikan datanya
    • Namun, untuk sinkronisasi online antar beberapa perangkat, tetap dibutuhkan server sinkronisasi
    • Jika perusahaannya bangkrut, server sinkronisasi juga akan hilang sehingga sinkronisasi menjadi tidak mungkin
    • Bagaimana cara mengatasinya?

Solusi menggunakan Dropbox

  • Sinkronisasi cloud: dapat menggunakan berbagai solusi sinkronisasi file berbasis cloud seperti Dropbox, iCloud Drive, OneDrive, dan Google Drive
  • Kelebihan: sudah digunakan oleh banyak orang, dan ada banyak implementasi sehingga bisa digantikan
  • Kekurangan: sinkronisasi file adalah protokol yang sederhana, sehingga minim event sinkronisasi maupun fitur penyelesaian konflik

Versi 1: cara yang sangat sederhana

  • Simpan state ke file lalu sinkronkan dengan Dropbox
  • Jika state diubah di dua perangkat, file konflik akan muncul
  • Dengan menggunakan CRDT(Conflict-free Replicated Data Types), konflik dapat diselesaikan
    • CRDT adalah kumpulan tipe data yang selalu bisa digabungkan
  • Penyelesaiannya adalah dengan membuka file konflik, menggabungkan state, lalu menyimpannya kembali

Versi 2: file per klien

  • Berikan file unik untuk setiap klien agar konflik dapat dicegah
  • Saat file milik klien lain berubah, deteksi perubahan tersebut lalu gabungkan
  • Karena perubahan hanya dilakukan secara lokal, Dropbox tidak melaporkan konflik

Versi 3: berbasis operasi

  • Jika CRDT bersifat operation-based, pekerjaan dapat dicatat ke file append-only yang terpisah
  • Setiap klien menulis ke filenya sendiri untuk mencegah konflik
  • Jika log pekerjaan menjadi panjang, file dapat dipecah menjadi beberapa chunk untuk meningkatkan efisiensi sinkronisasi

Kesimpulan

  • Untuk membangun aplikasi local-first di mana pengguna memiliki kendali dan kepemilikan penuh, sinkronisasi data tetap dibutuhkan
  • Layanan sinkronisasi file seperti Dropbox menyediakan cara sinkronisasi yang sederhana tetapi efektif
  • Walaupun tidak se-real-time solusi kustom, ini sudah cukup untuk sinkronisasi sehari-hari
  • Misalnya, seperti Apple Photos, cukup sampai pengguna bisa melihat foto-fotonya sendiri dari mana saja di akhir hari
  • Pengguna dapat memakai cloud miliknya sendiri untuk melakukan sinkronisasi permanen secara gratis

Opini GN⁺

  • Pentingnya perangkat lunak Local-First: pengguna dapat memiliki dan mengendalikan data mereka secara langsung, sehingga menguntungkan untuk privasi dan keamanan data
  • Keterbatasan layanan sinkronisasi: layanan seperti Dropbox memungkinkan sinkronisasi dasar, tetapi memiliki batasan dalam skenario sinkronisasi yang kompleks
  • Pemanfaatan CRDT: penggunaan CRDT memudahkan penyelesaian konflik dan dapat meningkatkan keandalan sinkronisasi
  • Solusi alternatif: solusi sinkronisasi open source seperti Syncthing juga layak dipertimbangkan
  • Hal yang perlu dipertimbangkan saat mengadopsi teknologi: saat mengadopsi perangkat lunak Local-First, stabilitas server sinkronisasi dan strategi penyelesaian konflik data perlu ditinjau dengan cermat.

1 komentar

 
GN⁺ 2024-06-26
Opini Hacker News
  • Penting untuk memungkinkan server sinkronisasi backend aplikasi local-first di-host secara lokal: sinkronisasi file sederhana tidak cukup untuk menyediakan fungsi tertentu. Pengguna harus bisa kapan saja menyimpan workspace.zip dan mengunduh server.exe/.bin untuk self-host backend mereka.

  • Sulitnya monetisasi aplikasi local-first: ada pendekatan seperti model Obsidian, di mana aplikasi dasarnya gratis dan fitur jaringan dikenakan biaya. Disarankan membangun aplikasi local-first + kolaborasi menggunakan Yjs.

  • CRDTs tidak selalu merupakan pilihan terbaik: mungkin cocok untuk sinkronisasi file, tetapi server terpusat yang memvalidasi logika bisnis dan menyelesaikan konflik merge bisa jadi lebih baik. Pendekatan distributed state machine bisa kompleks dan sulit dipelihara.

  • Protokol RemoteStorage: semua aplikasi bisa mengimplementasikannya dan pengguna dapat memberikan URL RemoteStorage mereka sendiri. Namun, sebagian besar implementasinya tidak lagi dipelihara.

  • Keterbatasan solusi sinkronisasi file berbasis cloud: tidak cocok untuk perangkat lunak kolaboratif atau perangkat lunak real-time. Diperlukan model yang menyediakan fitur kolaborasi tanpa vendor lock-in.

  • Keunggulan perangkat lunak local-first: pengembangan menjadi lebih mudah dan pengalaman pengguna meningkat. Diperkirakan akan muncul framework local-first yang menawarkan developer experience mirip Nuxt atau Next.

  • Risiko cloud storage: penyedia cloud dapat menghapus data atau memblokir akses. Saat menggunakan cloud storage local-first, sebaiknya atur agar semua file diunduh.

  • Pengalaman sinkronisasi menggunakan PWA: membangun PWA yang melakukan sinkronisasi dengan AWS dan WebDAV. Penting untuk meminimalkan waktu baca dan tulis agar waktu sinkronisasi berkurang.

  • Keterbatasan gagasan cloud-first: jika terjadi gangguan jaringan skala antarbenua, masalah pada gagasan cloud-first akan terlihat jelas.

  • Sulitnya sinkronisasi local-first di perangkat mobile: iPhone sulit menangani sinkronisasi file seperti Dropbox di latar belakang.