Mobil uygulamalarda offline-first yaklaşımı
Kullanıcı asansörde, otoparkta ya da şehir dışında; uygulamanız ise sunucudan cevap bekliyor. Offline-first yaklaşım, bağlantıyı bir varsayım değil bir iyileştirme olarak ele alır: uygulama önce yerel veriyle çalışır, bağlantı geldiğinde sessizce senkronize olur. Bu yazıda bu mimariyi kurarken verdiğimiz temel kararları anlatıyoruz.
Bağlantı bir varsayım değil
Klasik mobil mimaride her ekran bir API çağrısına bağlanır; bağlantı yoksa uygulama bir yükleme göstergesine dönüşür. Offline-first bunun tersinden başlar: uygulamanın tek doğruluk kaynağı yerel veritabanıdır, ağ ise bu veritabanını güncelleyen bir arka plan servisidir. Kullanıcı listeyi anında görür; tazelik, bağlantı geldiğinde sessizce sağlanır.
Senkronizasyon kurgusu
Senkronizasyonda iki yönü ayrı ele alıyoruz. İndirme yönünde delta senkronizasyon — yalnızca son senkrondan beri değişen kayıtların çekilmesi — hem trafiği hem pil tüketimini düşürür. Gönderme yönünde ise yerel işlem kuyruğu kullanıyoruz: kullanıcının her değişikliği önce kuyruğa yazılır, bağlantı geldiğinde sırayla sunucuya iletilir. Kuyruk kalıcıdır; uygulama kapansa da işlemler kaybolmaz.
Offline-first'te zor olan veriyi saklamak değil, iki tarafta birden değişen veriyi barıştırmaktır.
Çakışma çözümü
Aynı kayıt hem cihazda hem sunucuda değiştiyse bir karar gerekir. "Son yazan kazanır" en basit strateji ama sessiz veri kaybı riski taşır. Alan bazlı birleştirme çoğu iş verisi için daha güvenli: farklı alanlara yapılan değişiklikler otomatik birleşir, aynı alana çakışan değişiklikte ise iş kuralı konuşur. Kritik senaryolarda çakışmayı kullanıcıya göstermek, sessizce yanlış karar vermekten iyidir.
Nereden başlamalı
Her uygulamanın tamamen offline çalışması gerekmez; kritik olan, hangi akışların bağlantısız tamamlanabilmesi gerektiğini baştan seçmek. Saha ekibinin form doldurduğu bir uygulamada bu liste uzundur; canlı sohbet uygulamasında kısadır. Mobil mimari yaklaşımımız için hizmetler sayfasına göz atabilirsiniz.