Özel yazılım ve teknik servis
Offline Çalışan Yazılım: İnternet Kesildiğinde Durmayan İş Uygulamaları
Atölyede, spor salonunda veya sahada internet kesildiğinde işin durmaması gerekir. Offline-first yaklaşımla çalışan yazılımın mantığı, avantajları ve dikkat edilecek noktalar.
Yazar: AYM FlowYayın tarihi: 5 dk okuma
Offline çalışan yazılım, internet bağlantısı kesildiğinde bile kullanıcının çalışmaya devam etmesini sağlayan ve bağlantı geri geldiğinde verileri sunucuyla kendiliğinden eşitleyen uygulamadır. Bu yaklaşıma offline-first denir: uygulama veriyi önce cihazda saklar, değişiklikleri bir kuyrukta tutar ve bağlantı olduğunda gönderir. Böylece kullanıcı “kaydedilemedi” uyarısıyla karşılaşmaz, iş yarıda kalmaz. Kendi ürünümüz Multi Score Screen canlı skor yazılımı da bu ilkeyle çalışır: spor salonunda Wi-Fi zayıfladığında hakem skor girmeye devam eder, bağlantı geri geldiğinde veriler otomatik senkronize olur ve maç kesintiye uğramaz. Bu yazıda offline-first yaklaşımın nasıl çalıştığını, hangi işletmeler için kritik olduğunu ve yazılım seçerken veya geliştirirken nelere dikkat etmeniz gerektiğini anlatıyoruz.
Neden önemli? İnternet her yerde kesintisiz değildir
Ofis masasında kesintisiz görünen internet, işin yapıldığı yerde çoğu zaman öyle değildir. Marinalardaki teknik atölyeler, bodrum katlardaki depolar, beton ve çelik yapılı spor salonları, şantiyeler ve sahada çalışan servis ekipleri bağlantının zayıfladığı ya da tamamen kesildiği yerlerdir. Yalnızca bulutta çalışan bir uygulama bu anlarda durur: form kaydedilmez, stok düşülmez, skor güncellenmez. Kullanıcı ya bekler ya da bilgiyi kâğıda yazıp sonra sisteme girer; ikinci yol hem zaman kaybıdır hem de hata kaynağıdır.
Offline-first yaklaşım bu sorunu tersinden çözer: uygulama, bağlantının olmadığını varsayarak tasarlanır ve bağlantıyı bir bonus olarak görür. Kullanıcı açısından fark nettir; uygulama her durumda hızlı açılır ve her işlem anında yanıt verir, çünkü önce cihazdaki veriyle çalışır.
Offline-first nasıl çalışır?
- Yerel veri deposu: Uygulama verileri cihazda tutar. Web uygulamalarında bu genellikle tarayıcının IndexedDB deposu, masaüstü ve mobil uygulamalarda SQLite gibi yerel bir veritabanıdır.
- Değişiklik kuyruğu: Kullanıcının yaptığı her değişiklik hem yerel veriye yazılır hem de “gönderilecekler” kuyruğuna eklenir.
- Senkronizasyon: Bağlantı geldiğinde kuyruk sırayla sunucuya gönderilir; sunucudaki yeni veriler de cihaza çekilir.
- Benzersiz kimlikler: Kayıtlar cihazda oluşturulduğu için kimliklerin sunucuya sorulmadan, çakışmayacak şekilde (örneğin UUID ile) üretilmesi gerekir.
- Çakışma çözümü: Aynı kayıt iki cihazda farklı değiştirildiyse hangisinin geçerli olacağına dair kural belirlenir.
Aşağıdaki basit örnek, bu mantığın özünü gösteriyor: önce yerel kayıt, sonra kuyruk, bağlantı varsa gönderim.
// Offline-first in a nutshell: write locally, queue the change, sync when online
async function savePoint(matchId: string, team: "A" | "B") {
const change = { id: crypto.randomUUID(), matchId, team, at: Date.now() };
await localDb.put("points", change); // 1. the UI updates from local data at once
await localDb.put("outbox", change); // 2. remember what still has to reach the server
if (navigator.onLine) void flushOutbox(); // 3. try to sync now, otherwise later
}
async function flushOutbox() {
for (const change of await localDb.getAll("outbox")) {
const res = await fetch("/api/points", { method: "POST", body: JSON.stringify(change) });
if (!res.ok) return; // keep it queued and retry on the next "online" event
await localDb.delete("outbox", change.id);
}
}
window.addEventListener("online", () => void flushOutbox());Çakışmalar: en zor kısım
Offline-first uygulamalarda asıl tasarım sorusu, iki kişinin aynı veriyi bağlantısızken değiştirmesidir. Üç yaygın strateji vardır. “Son yazan kazanır” yaklaşımı basittir ama bazı değişikliklerin sessizce kaybolmasına yol açabilir. Alan bazlı birleştirme, aynı kaydın farklı alanlarındaki değişiklikleri birleştirir; örneğin biri telefon numarasını, diğeri adresi değiştirdiyse ikisi de korunur. Bazı durumlarda ise kullanıcıya sormak en doğrusudur: iki teknisyen aynı iş emrinin durumunu farklı işaretlediyse sistem bunu gösterip karar ister. Stok gibi sayısal verilerde ise değeri değil hareketi senkronize etmek (“3 adet çıktı”) çakışmaların büyük bölümünü ortadan kaldırır.
Web, PWA ya da masaüstü?
Offline çalışma yalnızca masaüstü uygulamalara özgü değildir. Progresif web uygulamaları (PWA), service worker ile uygulama dosyalarını önbelleğe alır ve verileri tarayıcıda saklayarak bağlantısız çalışabilir. Masaüstü uygulamalar ise doğası gereği yerel çalışır; senkronizasyon katmanı eklendiğinde birden fazla cihazla da uyumlu hale gelir. Hangi yolun doğru olduğu kullanıcıların cihazlarına, yazdırma ve donanım ihtiyaçlarına ve dağıtım tercihlerinize bağlıdır; ayrıntıları masaüstü uygulama mı web uygulaması mı yazımızda anlattık. Bulut tabanlı abonelik yazılımlarının genel mantığını ise SaaS nedir yazımızda bulabilirsiniz.
Kullanıcı deneyimi: bağlantı durumunu dürüstçe gösterin
- Senkronizasyon durumunu gösterin: “Tüm değişiklikler kaydedildi” veya “3 değişiklik gönderilmeyi bekliyor” gibi net bir gösterge güven verir.
- Veriyi asla sessizce kaybetmeyin: Gönderilemeyen bir değişiklik kullanıcıya bildirilmeli ve yeniden denenmelidir.
- Neyin çevrimdışı yapılabildiğini belirtin: Örneğin yeni kayıt açılabilir ama ödeme alınamaz; bu sınırlar açıkça gösterilmelidir.
- Geri alma imkânı verin: Bağlantısız çalışırken yapılan hatalar da kolayca düzeltilebilmelidir.
Güvenlik ve yedekleme
Veri cihazda saklandığında cihazın kaybolması veya çalınması da bir risk haline gelir. Hassas verileri şifreli saklamak, oturum sürelerini sınırlamak ve cihaz kaybında uzaktan oturum kapatabilmek temel önlemlerdir. Senkronizasyon, sunucuda düzenli yedeklenen bir merkezi kopya oluşmasını da sağlar; ancak senkronize edilmemiş değişiklikler yalnızca cihazdadır. Bu yüzden kullanıcıya uzun süre bağlantısız kalındığında bir hatırlatma göstermek iyi bir uygulamadır. Cihaz değiştirme veya tamire gönderme durumları için de bir kural belirleyin: cihaz teslim edilmeden önce bekleyen tüm değişikliklerin sunucuya gönderildiğinden emin olunmalıdır.
Offline çalışmayı test etmek
Offline-first bir uygulamayı yalnızca iyi bağlantıda test etmek yeterli değildir. Tarayıcı geliştirici araçlarındaki ağ kısıtlama ve çevrimdışı modunu, telefonlarda uçak modunu kullanarak şu senaryoları deneyin: bağlantı yokken kayıt açma, işlem yarıdayken bağlantının kopması, iki cihazda aynı kaydı değiştirme, uzun süre bağlantısız kaldıktan sonra senkronizasyon. Stok ve iş emri gibi işlemler için bu senaryoların önemini barkodlu stok ve iş emri yazımızda da ele aldık.
Ne zaman offline-first seçmeli?
En sık karşılaştığımız kullanım alanları
Pratikte bağlantısız çalışma ihtiyacıyla en çok dört alanda karşılaşıyoruz: sahaya çıkan servis ekiplerinin iş emirleri ve servis raporları, depoda mal kabulü ve sayım, etkinliklerde satış ve sipariş alma ile spor salonlarında skor girişi. Bu alanların ortak noktası, bir kesintinin yalnızca can sıkıcı olmaması, doğrudan para veya veri kaybına yol açmasıdır. Sahada çalışan bir teknisyen müşterinin imzasını alamazsa iş kapanmaz; depoda okutulamayan bir sevkiyat ertesi güne kalır; bir turnuvada skor girilemezse maç bekler. Bu süreçleri dijitalleştirirken bağlantısız çalışma sorusunu en başta sormak gerekir. Senkronizasyon katmanını sonradan bir uygulamaya eklemek, baştan tasarlamaktan çok daha zahmetli ve pahalıdır; veri modeli, kimlik üretimi ve çakışma kuralları en baştan bu ihtiyaca göre kurulmalıdır.
Ne zaman offline-first seçmeli?
Offline-first mimari ek bir karmaşıklık getirir: senkronizasyon, çakışma çözümü ve test için daha fazla geliştirme süresi gerekir. Kullanıcılarınız her zaman güvenilir bir bağlantıya sahip bir ofiste çalışıyorsa buna ihtiyacınız olmayabilir. Ancak işin sahada, atölyede, salonda veya etkinlik alanında yapıldığı ve kesintinin doğrudan iş kaybı anlamına geldiği durumlarda bu yatırım hızla geri döner. Multi Score Screen'in sık sorulan sorular sayfasında da belirtildiği gibi, zayıf bağlantıda kesintisiz skor girişi, bir maçın yarıda kalmaması için tasarlanmış bir özelliktir. Ürünün ekranlarını Multi Score Screen sayfamızda görebilir, kendi işiniz için bağlantısız çalışan bir uygulama geliştirmek isterseniz özel yazılım geliştirme hizmetimizi inceleyebilirsiniz.
Sık sorulan sorular
Offline-first ne demek?
Uygulamanın veriyi önce cihazda saklaması, değişiklikleri bir kuyrukta tutması ve bağlantı geldiğinde sunucuyla eşitlemesi demektir; kullanıcı internet olmadan da çalışmaya devam eder.
Web uygulamaları internetsiz çalışabilir mi?
Evet. Progresif web uygulamaları service worker ve tarayıcı içi depolama sayesinde bağlantısız çalışabilir ve bağlantı geldiğinde senkronize olabilir.
İki kişi aynı veriyi bağlantısızken değiştirirse ne olur?
Önceden belirlenmiş bir çakışma kuralı uygulanır: son değişiklik geçerli olabilir, alanlar birleştirilebilir veya kullanıcıdan karar istenebilir.
Multi Score Screen internet kesilince çalışır mı?
Zayıf bağlantıda skor girişine devam eder ve bağlantı geri geldiğinde verileri otomatik senkronize eder; maç kesintiye uğramaz.
İlgili yazılar
Multi Score Screen
Turnuva Fikstür Programı: Eleme, Lig Usulü ve Canlı Skorla Turnuva Yönetimi
Eleme mi, lig usulü mü, grup aşaması mı? Maç sayısını hesaplamaktan kortları planlamaya ve turnuva günü canlı skoru ekranlara taşımaya kadar pratik rehber.
Multi Score Screen
Skorbord Fiyatları: Elektronik Tabela, Ücretsiz Seçenekler ve Yazılım
Elektronik tabela, çevirmeli skor kartı mı, televizyonda çalışan yazılım mı? Kulübünüz için skorbord maliyetini doğru hesaplamanın ve düşürmenin yolları.
Multi Score Screen
Televizyonu Skorborda Dönüştürme: Adım Adım TV'de Canlı Skor Kurulumu
Kortun yanındaki televizyon, birkaç adımda canlı skor gösteren bir skorborda dönüşebilir. Ekran seçiminden TV ayarlarına kadar adım adım kurulum rehberi.
