8 puan yazan GN⁺ 2024-06-26 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2024-06-26
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.zip kaydedip server.exe/.bin indirerek 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.