Kontakt
Produkt

Januna kann jetzt mehrere Kassen

Vier Kassen, ein Laden, kein Server im Hinterzimmer. Das Sync-Modell ist mit Absicht langweilig, und das Interessante ist die Liste dessen, was wir nicht zusammenführen.

Von Ovadev2 Min. Lesezeit

Alle Beiträge
  • januna
  • sync
  • offline
WhatsAppLinkedInX

Ein Laden mit vier Kassen hat vier Computer, die alle glauben, sie seien der Laden. Die meisten Kassensysteme lösen das mit einem Server im Hinterzimmer, und das funktioniert genau so lange, wie die Steckerleiste im Hinterzimmer es tut.

Was jedem Terminal gehört#

Das Modell ist eine Zeile lang: Ein Terminal besitzt die Verkäufe, die es kassiert, und sonst nichts. Alles andere ist entweder nur lesende Replikation oder eine Ressource mit genau einem Schreiber. Diese Einschränkung ist es, die die Merge-Logik klein genug hält, um beim Ladenschluss noch darüber nachdenken zu können.

DatenBesitzerBei Konflikt
Verkäufe, Retourendas Terminal, das sie gemacht hatkein Konflikt möglich: nur anhängend
Produktkatalogdas Backofficeletzter Schreibvorgang gewinnt, nach Version
Preisedas Backofficeletzter Schreibvorgang gewinnt, nach Version
Lagerbestandein gewähltes Terminalwird nicht zusammengeführt, siehe unten
Offene Rechnung / Tischvon einem Terminal beanspruchtder Anspruch ist eine Lease, 30 s

Lagerbestand ist kein CRDT#

Man kann Lagerbestand durchaus als Zähler modellieren, der konvergiert. Er konvergiert dann auf eine Zahl, die zu keinem Zeitpunkt gestimmt hat, und der Laden hat das letzte Stück zweimal verkauft. Also hat der Bestand einen einzigen Schreiber: Ein Terminal wird gewählt, die anderen fragen es, und wenn es verschwindet, übernimmt das nächste, sobald eine kurze Lease abgelaufen ist.

  1. 01
    Wahl

    Die Bestands-Lease hält das Terminal mit der niedrigsten Kennung, das in den letzten zehn Sekunden gesehen wurde. Kein Konsensalgorithmus: Die Menge sind vier Geräte in einem LAN, und eine falsche Wahl kostet eine Lease-Periode.

  2. 02
    Abbuchen beim Verkauf

    Das verkaufende Terminal bittet den Halter, abzubuchen. Erreicht es ihn nicht innerhalb von 400 ms, verkauft es trotzdem und markiert die Position als ungeprüft. Ein Laden, der nicht mehr verkauft, weil ein Peer langsam ist, ist schlimmer als ein Bestand, der abgeglichen werden muss.

  3. 03
    Abgleich beim Abschluss

    Ungeprüfte Positionen werden beim Ladenschluss gegen den massgeblichen Bestand nachgespielt. In acht Monaten Pilotbetrieb waren das im Schnitt weniger als zwei Positionen pro Laden und Tag.

Wie das an der Kasse aussieht#

Nichts davon ist an einem normalen Tag zu sehen, und genau das ist der Punkt. Die einzige Oberfläche, die das Modell bekommt, ist ein kleiner Statuspunkt: grün, wenn das Terminal jeden Peer kürzlich gesehen hat, gelb, wenn es ungeprüfte Positionen verkauft, dazu die Anzahl dessen, was noch abzugleichen ist.

Ovadev

Ein Softwareunternehmen in Baar, Zug. Wir bauen eigene Produkte, betreiben sie danach selbst und schreiben auf, was uns das beibringt.

Kontakt aufnehmen
Weiterlesen

Mehr aus dem Studio: zuerst Produkt, dann der Rest.

Alle Beiträge
© 2026 Ovadev GmbHAus der Schweiz