K3SK1N Logo ← Blog
Mühendislik Notları

Offline-First Mimari Nedir? İnternet Kesildiğinde Uygulama Ne Yapmalı?

Çoğu web uygulaması internet bağlantısı kesildiği anda beyaz ekrana düşer ya da dönen bir yükleme ikonunda takılı kalır. Offline-first yaklaşım bunun tam tersini savunur: uygulama önce yerelde çalışacak şekilde tasarlanır, internet ise bir lüks değil, arka planda senkronizasyon için kullanılan bir imkan olarak görülür.

Güncelleme: 8 Eylül 2026

01 Neden Bu Kadar Önemli

WherZit'i geliştirirken hedef kitlemiz taşınma sürecindeki ya da deposunda çalışan insanlardı. Bodrum katı, asansör, şehir dışı bir depo — bu ortamların ortak noktası zayıf ya da hiç olmayan sinyal. Bir envanter uygulaması tam da sinyalin en kötü olduğu yerde çalışmak zorunda; aksi halde uygulamanın amacı ortadan kalkıyor.

Bu yüzden offline-first bizim için bir "nice to have" değil, ürünün var olma sebebiydi.

02 Teknik Olarak Ne Anlama Geliyor

İşin özü üç parçadan oluşuyor: tarayıcının arka planda çalışan bir servis işçisi (service worker), verilerin cihazda saklandığı bir yerel veritabanı (IndexedDB) ve bağlantı geri geldiğinde bekleyen değişiklikleri sunucuya ileten bir senkronizasyon mekanizması.

Hangi verinin nasıl önbelleğe alınacağı da ayrı bir karar konusu. Statik dosyalar (ikonlar, yazı tipleri) için "önce önbellekten getir" mantıklı, sürekli değişen veriler için ise "önce sunucudan getir, olmazsa önbelleğe düş" daha güvenli. İkisinin ortasında, kullanıcıya önce elde olanı gösterip arka planda güncelleyen bir üçüncü yöntem de var. Doğru kombinasyonu seçmek, uygulamanın hem hızlı hem tutarlı hissettirmesini sağlıyor.

03 WherZit'te Nasıl Uyguladık

Standart kullanıcıda tüm envanter verisi doğrudan cihazda tutuluyor; bulut senkronizasyonu ayrı bir katman olarak üstüne ekleniyor. Kullanıcı bir eşya eklediğinde, taşıdığında ya da bir QR kod ürettiğinde bu işlem önce yerelde tamamlanıyor, bağlantı varsa arka planda sunucuyla eşitleniyor.

Burada öğrendiğimiz en değerli ders şu oldu: bir işlemi kullanıcıya "başarılı" olarak göstermeden önce, o işlemin gerçekten kalıcı hale geldiğinden emin olmak gerekiyor. Aksi halde arayüz bir şeyin olduğunu söylerken, arka planda o şey aslında henüz tamamlanmamış olabiliyor — özellikle sınırlı haklar (günlük QR üretimi gibi) söz konusu olduğunda bu fark ciddi tutarsızlıklara yol açabiliyor. Bu yüzden kritik işlemlerde arayüz, sunucu tarafındaki yazma işlemi kesinleşmeden "tamam" demiyor.

04 Kimler İçin Mantıklı

Her uygulamanın offline-first olmasına gerek yok; sürekli internet bağlantılı bir ortamda çalışan bir yönetim panelinde bu karmaşıklığa girmek zaman kaybı olabilir. Ama saha çalışması, depo/envanter yönetimi, seyahat veya kırsal bölgelerde kullanılan uygulamalar için offline-first, kullanıcının uygulamayı güvenip güvenmeyeceğini belirleyen temel bir tasarım kararı.