Skip to content
Ercan Labs
← Notlar

Sunucuyu kaldırınca mimari neye dönüşüyor

Çevrimdışı bir özellik anahtarı değil. Sunucu gidince kimlik, saat ve çakışma yerel problem oluyor.

· 5 dk

Bir kasada sunucu yoksa "kullanıcı girişi" diye bir şey de yok. Ama kasanın kimin açtığını bilmesi gerekiyor: vardiya devri, iptal yetkisi, gün sonu sayımı.

Bulut kasa yazarken bu soruları oturum ve yetki servisi çözüyor. Masada tek makine varken aynı soruların cevabı dosya sisteminde.

Üç soru, üç yerel cevap

  • Kimlik: 4-8 haneli PIN, scrypt ile hash'lenmiş. Oturum yok, kilit var; iki dakika hareketsizlikte ekran kapanıyor.
  • Zaman: sunucu saati yok. Makine saati yanlışsa gün sonu raporu yanlış. Saat, kapanış kaydına yazılıyor ki sonradan fark edilebilsin.
  • Çakışma: iki kasa aynı dosyaya yazamıyor. Bu bir eksik değil, tek terminal tasarımı. İkinci kasa istenirse yazma yolu yeniden tasarlanacak.

En çok zorlayan şey veritabanı değildi

SQLite kolaydı. Zor olan, "her şeyi sunucuya soran" alışkanlıkları kaldırmaktı: stok miktarını her açılışta sunucudan tazelemek, fiş numarasını merkezden almak, kullanıcıyı token'la tanımak. Hepsinin yerel bir karşılığı var ama hiçbiri birebir aynı değil.

Stok sayaç değil, defter

İlk sürümde `stock` diye bir sayı vardı. Biri fiş iptal ettiğinde sayı kaydı. Şimdi alış, satış ve düzeltme birer satır; eldeki miktar toplamdan hesaplanıyor. Sorgu maliyeti arttı, mutabakat derdi bitti.

Bedeli açıkça

Tek terminal. Yedekleme kullanıcının sorumluluğunda (bu yüzden Faz 7'de yedek/geri yükleme var). Uzaktan destek yok: sorun olduğunda telefonda anlatmak gerekiyor. Çevrimdışı, kolaylık değil taahhüt.

İLGİLİ VAKA

Bakkal Kasa

Mahalle bakkalı için çevrimdışı kasa, stok ve veresiye. Sunucu yok, abonelik yok.

DİĞER NOTLAR