PultrackBlog
TR
Hiç Kimse Konuşmuyor: Çevrimdışı POS Sistemleri İki Kasa Çekmecesini Nasıl Uzlaştırıyor?

Hiç Kimse Konuşmuyor: Çevrimdışı POS Sistemleri İki Kasa Çekmecesini Nasıl Uzlaştırıyor?

ÖzetÇevrimdışı-ilk POS mimarisi artık niş bir hack değil, standart bir mimaridir — ancak çoğu yazı "satışlar çalışmaya devam ediyor" kısmına odaklanıp, bir mağazanın iki fiziksel kasa (veya telefon ve tablet) çevrimdışı olduğunda ve her ikisi de aynı vardiyayı senkronize etmeye çalıştığında ne olduğunu atlar. O uzlaştırma anı, kesinti değil, küçük mağazaların gerçekten para kaybettikleri veya sisteme olan güvenlerini yitirdikleri yerdir.

Biz Pultrack'ı geliştiriyoruz — güvenilmez elektrik, zayıf veri ve genellikle aynı rafa iki farklı para biriminin konduğu küçük perakendeciler için bir satış noktası ve envanter uygulaması. Öyleyse "çevrimdışı-ilk POS" hakkındaki mühendislik yazılarının dalgası dolaşırsa, bunu bir shopkeeper'ın gözüyle okuyoruz: mimari diyagramlar değil, ağ ortasında düştüğü ve iki kişinin hala müşterilere hizmet verdiği bir Salı günü ne olduğu sorusu olarak.

Çevrimdışı-ilk konuşmasında gerçekten yeni olan ne?

Çevrimdışı-ilk satış noktası tasarımı hakkındaki son teknik yazılar bir şeyde anlaş: çevrimdışı işletim artık etrafında oynanacak bir sınır durumu değil, tüm sistem için başlangıç varsayımıdır.[1] Uygulamalar tanıdık bir yığına yakınsıyor — cihazda yerel bir veritabanı (IndexedDB veya SQLite), bekleyen eylemlerden oluşan bir kuyruk, idempotent senkronizasyon API'leri ve bağlantı geri geldiğinde bir çeşit çatışma çözümü.[1] Birkaç satıcı sayfası bunu teknik bir ayrıntı değil, bir iş vaadi olarak çerçeveliyor: internet işbirliği yapmasa bile kasa çalışmaya devam ediyor, bu nedenle mağaza kazanmaya devam ediyor.[2]

Bu çerçeve yararlı ve çoğunlukla doğru. Ama kamuya açık yapılan hemen hemen hiçbir materyal, bir küçük mağazanın sisteme güvenip güvenmediğini belirleyen kısmda gerçek zaman harcamıyor: iki çevrimdışı cihaz yeniden bağlandığı ve her ikisi de aynı öğeyi satıp satmadığını, aynı müşteriyi iade etmedikleğini veya aynı vardiyayı kapatmadığını iddia ettiği saniye ve dakikalardan sonra ne olur.

Tek bir kasa bile neden bu sorunu karşılaşıyor?

Uzlaştırma çatışmalarının bir "multi-store" veya "kurumsal" sorunu olduğunu varsaymak cazip geliyor. Ama öyle değiller. Tek bir köşe mağazası, çevrimdışıyken bir satışı kaydetmesinin birden fazla yolu olduğu anda buna çarpıyor — tezgahta bir telefon ve depo yakınında bir tablet, kasiyer cihazı ve bir sahip cihazı veya basitçe güç kesildikten sonra senkronize ortasında yeniden başlatılan aynı cihaz. Bunların her biri, offline-ilk tasarımlar tarafından kullanılan anlamda bir "düğüm"dür ve her biri sunucuya konuşabilene kadar kendi yerel yazılarını kuyruğa alır.[1]

Mimari desen bunu senkronizasyon kuyrukları ve idempotent işlemleriyle işler, öyle ki bir eylemi iki kez oynatmak çift ücretlendirme veya çift stok düşürüsüne neden olmaz.[1] Bu doğru mühendislik cevabıdır. Perakende sorusu farklı: aynı fiziksel vardiya çevrimdışı olarak iki "gerçek" olay sürümü ürettiğinde — söylenin, bir cihazda uygulanan bir indirim ve başka bir cihazda kaydedilen aynı öğenin tam fiyatlı satışı — mağazanın günlük toplamı hangi versiyonu yansıtıyor ve shopkeeper kasada parayı uzlaştırmadan önce veya sonra fark ediyor mu?

"Gelir Sürekliliği" Ne Bırakıyor?

Satıcılar giderek çevrimdışı yeteneğini gelir sürekliliği açısından tanımlıyor: ağ çalışmayı durdurduğu için kasa satış yapmayı bırakmıyor.[3] Bu, özellikle bağlantı kesintilerinin nadir değil rutin olduğu pazarlar için adil ve önemli bir taleptir. Ama kesinti sırasında gelir sürekliliği hikayenin yalnızca yarısı. Diğer yarısı kesintiden sonra uzlaştırma doğruluğu — sonunda sisteme geri senkronize olan toplamların tezgahta ne olduğu ile madde madde, para birimi para birimine eşleşip eşleşmediğidir.

İki para birimini yan yana çalıştıran bir mağaza için bu daha fazla, daha az değer taşımıyor. Yerel para biriminde kaydedilen çevrimdışı bir satış bir oranla, oran hareket ettikten saatler sonra senkronize edilen farklı bir oranla, raf ile kitaplar arasında küçük ama gerçek bir boşluk oluşturur. İncelediğimiz kamuya açık çevrimdışı-ilk yazılarının hiçbiri çok-para birimleri uzlaştırmasını özel olarak ele almıyor — bu, üstüne çalıştırılmaktan daha ziyade adlandırılmaya değer bir boşluk.

"Yerel-ilk" ile "Uzlaştırma-Güvenli" Aynı mı?

Otomatik değildir. Mevcut çevrimdışı-ilk materyal içindeki daha geniş argüman, küçük tüccarların "çevrimdışı modlu bulut POS" değil, interneti bağlantı kanalı olarak değil, bir bağımlılık değil, olarak ele alınan ticaret altyapısına ihtiyaç duyduğudur.[4] Bu ses tasarım ilkesidir ve bağlantı hakkında düşünmenin doğru yoludur. Ama "yerel-ilk" verilerin nerede yaşadığını ve nasıl yakalandığını tanımlar; kendisi tarafından iki yerel gerçeğin bir doğru vardiya toplamında birleşmesini garanti etmez. Çatışma çözüm mantığı — son-yazı-kazanır, manuel inceleme kuyrukları, olay-kaynağı oynatması — bir tasarım seçimidir ve kapanış zamanında ekrandaki sayıya shopkeeper'ın güvenip güvenemediğini belirleyen kısımdır.

Uygulamada "çevrimdışı-yeteneğinden" "uzlaştırma-güvenliğine" ayıran birkaç pratik desen:

  • Her çevrimdışı işlem kuyruğa alınmadan önce kararlı, cihaz tarafından oluşturulan benzersiz bir kimlik alır, bu nedenle oynatma veya yinelenen senkronizasyon asla bunu çift sayamazsa.
  • Çatışmalar bir insana yüzeyde çıkar — hatta basit bir "bu iki kayıt anlaşmıyor, birini seçin" istemi — hangi cihaz en son senkronize oldu tarafından sessizce çözülmek yerine.
  • Para birimi ve döviz kuru değerleri satış anına kilitlenir, senkronize sırasında yeniden hesaplanmaz, bu nedenle geç bir senkronizasyon bir vardiya raporlanan değerini sessizce değiştirmez.
  • Vardiya toplamları sadece son bilinen durum değil, tam olay günlüğünden yeniden yapılandırılır, bu nedenle bir inceleme hangi cihazın ne ve ne zaman kaydedildiğini gösterebilir.

Küçük Bir Mağaza Satın Almadan Önce Bunu Nasıl Değerlendirmeli?

Bu konuda yayınlanan çoğunluk satıcı bloglarından, mühendislik olay incelemelerinden ve ürün pazarlama sayfalarından gelip bağımsız denetimlerden ziyade, "çevrimdışı-ilk" etiketi kendisine pazarlama kısaltması olarak değil garanti olarak muamele etmeye değer. Temel mimari — yerel depolama, senkronizasyon kuyrukları, idempotent API'leri — ürünlere gerçekten yakınsıyor.[1] Ne çok değişiyor ve nadiren kamuya açık olarak belgeleniyor, her satıcıyı karışık orta kısımda nasıl işledikleri: multi-cihaz çatışmaları, senkronizasyon gecikmesi sırasında para birimi sapması ve bir shopkeeper gerçekten tartışmalı bir işlemi görebilir mi ve düzeltebilir mi veya sadece toplamı güvenmeli midir.

Pultrack'ta, bu tam olarak çalıştığında görünmez ve çalışmadığında pahalı olan bir kısım olduğundan en fazla mühendislik zamanı harcadığımız kısımdır: her çevrimdışı satış kendi zaman damgası, cihaz menşei ve kilitli döviz kurunu taşır ve çatışan kayıtlar sessizce birbirlerini üzerine yazmak yerine inceleme için yüzeyde çıkar. Biz bunu çevrimdışı esnekliğin konuşmasının daha dürüst yolu olarak düşünüyoruz — sadece "satış yapmaya devam ediyor" değil, "daha sonra doğru saymaya devam ediyor."

Çevrimdışı-ilk POS seçeneklerini karşılaştırıyorsanız, bir satıcıdan sormaya değer sorular çalışma süresi talepleri hakkında değildir. Bunlar iki cihazın aynı anda çevrimdışı olduktan sonra çevrimiçi geri geldiğinde sayılarınıza ne olduğu hakkındadır.

Sıkça Sorulan Sorular

Bir POS sistemi için 'çevrimdışı-ilk' gerçekten ne anlama geliyor?

Bu, uygulamanın merkezi bir sunucuya canlı bağlantı gerektirmek yerine, yerel olarak cihazda varsayılan olarak satışları kaydetmek ve işlemek için oluşturulmuş olduğu anlamına gelir — yerel bir veritabanı ve senkronizasyon kuyruğu kullanarak. İnternet, her satışı yetkilendirmek için değil, uygun olduğunda verileri senkronize etmek için kullanılır.

Tek bir kasaya sahip bir mağaza yine de senkronizasyon çatışması yaşayabilir mi?

Evet. Çatışmalar, ikiden fazla cihaz veya oturum bağımsız olarak olayları kaydedebilir — bir telefon ve bir tablet, bir kasiyer cihazı ve bir sahip cihazı veya hatta güç kesildikten sonra senkronize ortasında yeniden başlatılan aynı cihaz. Çevrimdışı satış kaydetme yolundan birden fazlasını kullanan herhangi bir mağaza buna çarpabilir.

Çevrimdışı-ilk çok-para birimleri doğruluğu sorunları çözer mi?

Kendisi tarafından değil. Çevrimdışı-ilk mimari, bir satışın internet olmadan kaydedilebileceğini çözer; o satışın senkronize olduktan sonra hangi döviz kuruyla değerlendirilmesi gerektiğini otomatik olarak çözmez, özellikle kesinti sırasında oran hareket etmişse. Bu, satış anında oranı kilitleme gibi kasıtlı bir tasarım seçimi gerektirir.

Bir mağaza sahibi bir POS satıcının uzlaştırmayı iyi işledikten sonra, sadece çevrimdışı modu değil, nasıl anlayabilir?

Özellikle iki çevrimdışı cihaz aynı vardiya için çatışan kayıtları senkronize ettiğinde ne olacağı soruyorum — sistem çatışmayı inceleme için işaretliyor mu yoksa sessizce bir sürümü seçer mi. Ayrıca tarihsel döviz kurlarının işlem başına korunup korunmadığını yoksa daha sonra yeniden hesaplanıp hesaplanmadığını sorun.

Güncel çevrimdışı-ilk POS eğilimi bağımsız araştırmaya dayanıyor mu?

Çoğunlukla hayır. Bu konuyla ilgili kamuya açık malzemenin çoğu satıcı blogları, ürün sayfaları ve mühendislik olay incelemelerinden ziyade, güvenilirlik veya 'gelir sürekliliği' hakkındaki talepleri kendi mağazanızın koşullarına karşı doğrulanmaya değer satıcı çerçevelendirmesi olarak okuyun.

Kaynaklar

Pultrack'ı deneyin✈ Telegram