- Local-First yazılım: verileri öncelikli olarak yerelde depolayan, yalnızca gerektiğinde internet üzerinden senkronize eden veya yedekleyen yazılım
- Local-First yaklaşımının sorunları
- Kullanıcının veriyi sahiplenip kontrol edebilmesi olumlu
- Ancak yine de birden çok cihaz arasında çevrimiçi senkronizasyon için bir senkronizasyon sunucusu gerekiyor
- Şirket batarsa senkronizasyon sunucusu da ortadan kalkar, bu yüzden senkronizasyon imkansız hale gelir
- Bunu nasıl çözebiliriz?
Dropbox kullanarak çözüm
- Bulut senkronizasyonu: Dropbox, iCloud Drive, OneDrive, Google Drive gibi çeşitli bulut tabanlı dosya senkronizasyon çözümleri kullanılabilir
- Avantajlar: Pek çok kişi bunları zaten kullanıyor ve birden fazla uygulama seçeneği olduğu için alternatif bulmak mümkün
- Dezavantajlar: Dosya senkronizasyonu basit bir protokoldür; senkronizasyon olayları ve çakışma çözümü özellikleri sınırlıdır
Sürüm 1: Çok basit yöntem
- Durumu bir dosyaya kaydedip Dropbox ile senkronize etme
- İki cihazda durum değiştirilirse çakışma dosyaları oluşur
- CRDT (Conflict-free Replicated Data Types) kullanılırsa çakışmalar çözülebilir
- CRDT, her zaman birleştirilebilen veri tipleri koleksiyonudur
- Çakışma dosyalarını açıp durumu birleştirdikten sonra yeniden kaydederek sorun çözülür
Sürüm 2: İstemci başına dosya
- Her istemciye benzersiz bir dosya vererek çakışmaları önleme
- Diğer istemcilerin dosyaları değiştiğinde bunu algılayıp birleştirme
- Yalnızca yerelde düzenleme yapıldığı için Dropbox çakışma bildirmez
Sürüm 3: İşlem tabanlı
- Eğer CRDT operation-based ise işlemler ayrı, yalnızca ekleme yapılan dosyalara kaydedilebilir
- Her istemci çakışmayı önlemek için kendi dosyasına yazar
- İşlem günlüğü uzadığında senkronizasyon verimliliğini artırmak için dosya parçalara bölünebilir
Sonuç
- Kullanıcının tam kontrol ve sahipliğe sahip olduğu local-first uygulamalar geliştirmek için veri senkronizasyonu gerekir
- Dropbox gibi dosya senkronizasyon servisleri basit ama etkili bir senkronizasyon yöntemi sunar
- Özel çözümler kadar gerçek zamanlı olmasa da günlük senkronizasyon için yeterlidir
- Örneğin Apple Photos'ta olduğu gibi, günün sonunda kendi fotoğraflarınızı her yerden görebilmek yeterli olabilir
- Kullanıcılar kendi bulutlarını kullanarak ücretsiz ve kalıcı senkronizasyon sağlayabilir
GN⁺ görüşü
- Local-First yazılımın önemi: Kullanıcının veriyi doğrudan sahiplenip kontrol etmesini sağlayarak gizlilik ve veri güvenliği açısından avantaj sunar.
- Senkronizasyon servislerinin sınırları: Dropbox gibi servisler temel senkronizasyonu mümkün kılsa da karmaşık senkronizasyon senaryolarında sınırlı kalır.
- CRDT'nin kullanımı: CRDT kullanımı, çakışma çözümünü kolaylaştırarak senkronizasyonun güvenilirliğini artırabilir.
- Alternatif çözümler: Syncthing gibi açık kaynak senkronizasyon çözümleri de değerlendirilebilir.
- Teknoloji benimsenirken dikkat edilmesi gerekenler: Local-First yazılım benimsenirken senkronizasyon sunucusunun kararlılığı ve veri çakışmalarını çözme yöntemi yeterince incelenmelidir.
1 yorum
Hacker News görüşleri
Local-first uygulamaların backend senkronizasyon sunucusunu yerelde barındırabilmesini sağlamak önemli: Belirli işlevleri sunmak için basit dosya senkronizasyonu yeterli değil. Kullanıcının istediği zaman
workspace.zipkaydedipserver.exe/.binindirerek backend’i kendi kendine host edebilmesi sağlanmalı.Local-first uygulamalarda gelir elde etmenin zorluğu: Obsidian modelinde olduğu gibi temel uygulama ücretsiz sunulup ağ özellikleri için ücret alınabilir. Yjs kullanarak local-first + işbirlikçi uygulamalar geliştirilmesi öneriliyor.
CRDT'ler her zaman en iyi seçenek değil: Dosya senkronizasyonu için uygun olabilirler, ancak iş mantığını merkezi sunucunun doğrulaması ve birleştirme çakışmalarını çözmesi daha iyi olabilir. Dağıtık durum makinesi yaklaşımı karmaşık olabilir ve bakımını yapmak zorlaşabilir.
RemoteStorage protokolü: Tüm uygulamalar bunu uygulayabilir ve kullanıcı kendi RemoteStorage URL’sini sağlayabilir. Ancak çoğu implementasyon artık bakım almıyor.
Bulut tabanlı dosya senkronizasyon çözümlerinin sınırları: İşbirlikçi yazılımlar veya gerçek zamanlı yazılımlar için uygun değiller. Vendor lock-in olmadan işbirliği özellikleri sunan bir modele ihtiyaç var.
Local-first yazılımın avantajları: Geliştirme kolaylaşır ve kullanıcı deneyimi iyileşir. Nuxt veya Next benzeri geliştirici deneyimi sunan local-first framework’lerin ortaya çıkması bekleniyor.
Bulut depolamanın riskleri: Bulut sağlayıcısı verileri silebilir veya erişimi engelleyebilir. Local-first bulut depolama kullanırken tüm dosyaların indirilecek şekilde ayarlanması gerekir.
PWA ile senkronizasyon deneyimi: AWS ve WebDAV kullanarak senkronizasyon yapan bir PWA geliştirildi. Senkronizasyon süresini azaltmak için okuma ve yazma sürelerini en aza indirmek önemli.
Cloud-first fikrinin sınırları: Kıtalar ölçeğinde bir ağ kesintisi yaşanırsa cloud-first yaklaşımının sorunları ortaya çıkacaktır.
Mobilde local-first senkronizasyonun zorluğu: iPhone, Dropbox benzeri dosya senkronizasyonunu arka planda yürütmekte zorlanıyor.