
Senkronizasyon Sırasında Ne Olur? Çevrimdışı POS'u Başarıya veya Başarısızlığa Götüren Gizli An
Pultrack'ı, çift para birimini destekleyen, çevrimdışı-öncelikli işlemlerde çalışan küçük perakendeciler için bir POS ve envanter uygulaması olarak inşa ettik. Bu nedenle sadece sistemin çevrimdışı çalışıp çalışmadığını değil, yeniden bağlandığı anın ne olduğunu düşünmekle çok zaman harcıyoruz. İkinci soru, hak ettiğinden çok daha az ilgi görmektedir.
Neden herkes aniden çevrimdışı-öncelikli mimariden bahsediyor?
POS sistemlerine yönelik son mimari yazılar benzer bir tema üzerinde yakınsıyor: bağlantı, bir bağımlılık değil bir senkronizasyon katmanı olarak ele alınmalıdır. Yerel depolama, kuyruğa alınan yazma işlemleri ve ağ geri geldiğinde otomatik uzlaştırma, artık gelişmiş bir özellik yerine standart model haline geliyor. Elektrik ve internet kesintilerinin sık yaşandığı pazarlardaki dükkanlar için bu değişim önemlidir, çünkü bağlantı kesildiğinde satışlar basitçe durmayabilir. Ortaya çıkan fark şudur: "çevrimdışı-uyumlu" — degradele bir yedek mod — ve "çevrimdışı-öncelikli," burada yerel cihaz birincil bilgi kaynağı ve bulut ikincildir.
Bu fark akademik değildir. Sadece bağlantı kesintisini tolere eden bir kasa, bağlantı düştüğünde indirimleri engelleyebilir, kataloğun bir kısmını gizleyebilir veya makbuz baskısını reddedebilir. Gerçek bir çevrimdışı-öncelikli tasarım fiyatlandırma kurallarını, envanter sayılarını ve makbuz oluşturmayı tamamen yerel tutar, böylece bir kasa görevlisi iyi bağlantı günü ile kötü bağlantı günü arasında hiçbir fark görmez.
Bağlantı geri geldiğinde gerçekte ne oluyor?
Bu, satıcıların daha az konuştuğu kısım ve çevrimdışı-öncelikli tasarımın günlük kullanımda gerçekte tutunup tutunmadığını belirleyen kısımdır. Bir telefon veya terminal saat veya günler boyunca çevrimdışı kaldıktan sonra yeniden bağlandığında, yerel işlemlerin bir kuyruğunu bu arada diğer cihazlarda veya bulutta ne olduğuyla uzlaştırması gerekir. İyi tasarlanmış sistemler idempotent API'ler kullanır, böylece yanlışlıkla iki kez gönderilen bir satış iki kez kaydedilmez. Aynı öğenin son biriminin iki farklı kaydın her ikisinden de satıldığı durumlar gibi çakışma çözme kuralları uygularlar.
Küçük bir dükkan için bu varsayımsal değildir. Bir kiosku düşünün: bir Wi-Fi bağlantılı tablet ve bir güç kesintisi sırasında yedek kasa olarak kullanılan bir telefon. Her ikisi de çevrimdışıyken aynı stok öğesine karşı satış yapıyorsa, birisi fazla satacaktır — tek soru, sistemin bunu senkronizasyon sırasında açıkça işaretleyip işaretlemediği veya sessizce bir satışın envanter ayarlamasını diğerinin ayarlamasıyla üzerine yazıp yazmamasıdır. Bu sistemleri inşa etmekten elde edilen prodüksiyon dersleri, belirli işlemleri (yazdırılmış makbuzu kesinleştirmek gibi) diğerlerine göre önceliklendirmeyi ve senkronizasyon kuyruğunu kritik yazma işlemlerinin kaybolmaması veya yanlış sıralanmaması için tasarlamayı vurgular.
"Çevrimdışı-öncelikli" dükkan tamamen çevrimiçi gibi mi çalışır?
Prensip olarak, evet — bu vaattir. Mevcut ürün literatüründe açıklanan çevrimdışı mod, işletmeyi çalıştırmak için yeterli olan tam bir moddur, sınırlandırılmış bir acil durum modu değildir: tam katalog erişimi, fiyatlandırma ve indirim kuralları, makbuz baskısı ve envanter güncellemeleri tamamen yerel olarak çalışması beklenir. Pratikte, bu çevrimdışı modun eksiksizliği satıcı ve "envanter güncellemesi" anlamına gelenlere göre çok farklılık gösterir.
Bir sistemin gerçekten dükkan açısından bağımsız olduğunu kabul etmeden önce sorulacak birkaç şey:
- Çevrimdışı mod tam fiyat listenizi ve indirim kurallarını destekliyor mu, yoksa sadece önbelleğe alınan bir alt kümesi mi?
- Hiç ağ olmadan, gerekli vergi alanları dahil olmak üzere geçerli bir makbuz yazdırabiliyor mu?
- Aynı anda ayrı ayrı çevrimdışı hale gelen iki cihazda stok sayılarına ne oluyor?
- Senkronizasyon süreci bir çakışmayı çözdüğünde görünür bir günlük veya bildirim var mı, yoksa sessizce mi oluyor?
- Bir kasa görevlisi, kitaplarının geçici olduğunu bilebilmesi için hangi satışların "senkronizasyon beklediğini" ve hangilerinin onaylandığını görebiliyor mu?
Bazı mimariler gerçekten dükkan açısından bağımsız olacak şekilde tasarlanmıştır — mutfak yazıcıları, faturalandırma ve envanter yerel olarak çalışır, çünkü bu kasıtlı bir tasarım seçimidir, afterthought değil. Ancak "çevrimdışı-öncelikli" bir pazarlama ifadesi olarak yeterince gevşek kullanılıyor, bu da etiketin davranışı garantisi verdiğini varsaymaktan ziyade bu özellikleri kontrol etmeye değer.
Bu neden özellikle gelişmekte olan pazarlarda daha önemlidir?
Sık kesintilerin yaşandığı pazarlarda, senkronizasyon anı istikrarlı geniş bant olan bir pazarda yılda bir kez yaşanan edge case'ler yerine çok daha sık gerçekleşir. Her öğleden sonra iki saatlik bağlantı kaybı yaşayan bir dükkan, yılda bir kere edge case'e çarpmıyor — her gün uzlaştırma yolunu yaşıyor. Bu çakışma çözümünü doğru yapmayı daha önemli hale getirir, çünkü küçük hatalar birikendir: her senkronizasyondan sonra bir veya iki birim kadar yanlış olan bir stok sayısı sonunda rafın defterle eşleşmediği bir duruma dönüşür. Bu tam olarak kasa görevlilerinin yazılıma güveni bıraktığı ve bir deftere dönüştüğü tür uyumsuzluktur.
Ayrıca burada kanıt tabanı hakkında dürüst olmak gerekir: çevrimdışı-öncelikli POS mimarisi hakkında şu anda yayınlanan çoğu şey satıcı bloglarından, ürün pazarlama sayfalarından ve kendi çalışmalarını açıklayan bireysel mühendislerden geliyor, bağımsız araştırma veya geniş ölçekli çalışmalardan değil. Mimari mantık sağlamdır ve patern — yerel-önce depolama, arka plan senkronizasyonu, idempotent yazma işlemleri — kaynaklar arasında tutarlıdır, ancak güvenilirlik veya "durdurulamaz" çalışma süresi hakkındaki talepler satıcı konumlandırması olarak okunmalıdır, doğrulanmış sonuçlar değil.
Bir dükkan sahibi sistemini seçmeden önce gerçekte ne kontrol etmeli?
Temel patern — yerel veritabanı önce, daha sonra arka plan senkronizasyonu, makbuz yazdırma gibi kritik görevler için çakışma çözümü — nasıl standartlaşmışsa, ürünler arasındaki fark "çevrimdışı çalışıyor mu" değil "çevrimiçi geri gelmek ne kadar zarif" daha çoktur. Pultrack'te, bu bölümü kozmetik yerine çekirdek olarak ele alıyoruz: çift para birimi toplamları, stok seviyeleri ve makbuzlar cihazlar ve günler arasında bağlantı olmadan temiz bir şekilde uzlaşmalıdır. Bir kasa görevlisi, hangi satışların hala senkronizasyon beklemesine karşı tamamen onaylandığını açık terimlerle görebilmelidir. Bu "çevrimdışı çalışır" ifadesinden daha dar ve daha test edilebilir bir iddiadır ve bir sistemin güç çıkışının çoğu öğleden sonra yaşandığı bir dukkanda tutunup tutunmadığını tahmin eden şeydir.
Herhangi bir çevrimdışı-öncelikli POS'u değerlendiriyorsanız — bizimkini veya başka birinin — kasıtlı olarak bağlantısı kesilmiş bir test çalıştırmasından sonra senkronizasyon günlüğünü görmenizi isteyin. Çakışan bir stok güncellemesini nasıl çözdüğünü tam olarak gösterebilen bir satıcı, gerçek bir şey göstermektedir. Uygulamayı "internetsiz çalışıyor" deyebilen bir satıcı, en önemli olan kısım henüz size gösterilmemiştir.