- 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
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.zipdan mengunduhserver.exe/.binuntuk 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.