Sat bez signala: šta vaša operacija radi kad nestane veza
Autor navichain team

Vozač uđe u drumski tunel, u podzemnu utovarnu rampu, na palubu trajekta, ili prosto u dolinu koju pokriva jedan slab predajnik za tri sela, i telefon ostane bez signala na pet minuta ili na četrdeset. To nije kvar sistema niti redak izuzetak — to je uobičajen deo vožnje vozila kroz stvarnu geografiju, i svaka operacija koja vozi više od šačice linija će se s tim susretati redovno. Zanimljivo pitanje nije da li se to dešava. Pitanje je šta aplikacija na držaču na komandnoj tabli, i ekran dispečera nazad u kancelariji, rade povodom toga — i da li iko dalje niz lanac ume da razlikuje „ovde se ništa nije desilo“ od „ovde se nešto desilo, a mi to još nismo saznali.“
Tri različita problema pod jednim imenom
Reč „offline“ se koristi kao da je jedno stanje, ali vozačka aplikacija gubi tri odvojene stvari kad nestane signal, i one se ne ponašaju isto kad se signal vrati.
Prva je stanje koje je već lokalno — današnja lista stajanja, ruta, tovarni list za pošiljku koja je trenutno na vozilu. Ništa od toga ne treba živu vezu da bi bilo korisno; treba da bude preuzeto pre ulaska u mrtvu zonu, a to je pitanje kad se aplikacija poslednji put sinhronizovala, a ne šta radi dok je bez signala. Vozač koji proverava sledeće mesto isporuke u tunelu čita podatke koji su stigli pre sat vremena i uopšte mu više ništa nije potrebno od mreže.
Druga je radnja koja mora da bude zabeležena u trenutku kad se desi, bez obzira da li mreža u tom trenutku pristaje da sarađuje. Isporuka bude odbijena na vratima. Paleta stigne oštećena. Stajanje se zatvara jer je primalac potpisao prijem. To su činjenice sa vremenskom oznakom, a ta oznaka je sada, u mrtvoj zoni, a ne kad god se signal vrati. Aplikacija koja ne može da zabeleži činjenicu dok istovremeno ne može i da je prosledi dalje, traži od vozača ili da čeka pored puta ili da se osloni na pamćenje za verziju koju će uneti kasnije — a „uradiću to kad dobijem signal“ je tačno onaj način na koji operativna evidencija postaje naknadna rekonstrukcija.
Treća je živa veza koja nema naknadni odgovor — pre svega, gde se vozilo nalazi upravo sada. Pozicija nije činjenica koju možete pošteno nadoknaditi kasnije: ako kamion provede osamnaest minuta u tunelu, ne postoji istinit odgovor na pitanje „gde je bio u devetom minutu“ osim „negde u tunelu, između dve tačke sa obe njegove strane.“ Ispravno ponašanje ovde nije da se izmišlja kontinuitet. Ispravno je prikazati poslednju poznatu poziciju sa njenom vremenskom oznakom i pustiti onoga ko posmatra da izvede očigledan zaključak, umesto da se tiho iscrtava prava linija kroz čvrstu stenu i predstavlja kao podatak.
Zapis i njegov dokaz retko se slažu ko ide prvi
Većina operativnih događaja nije jedan upis — to je zapis plus nešto što ga potkrepljuje: isporuka plus potpis, odbijanje plus fotografija, inspekcija plus njene slike kvara. U mrtvoj zoni obično se samo jedno od to dvoje može upisati lokalno i jeftino (sam zapis, koji je mali), dok je drugo — naročito fotografija — dovoljno veliko da „samo ponovi otpremanje“ znači stvarno čekanje, a ne trenutnu radnju.
Ta dva događaja ne žele isti redosled. Zapis o isporuci koji postoji bez fotografije iza sebe mali je rizik, nadoknadiv ako se ikada ospori. Vozač zaglavljen na vratima zato što aplikacija odbija da označi stajanje kao završeno dok se slika ne otpremi preko jedne crtice signala jeste veći i hitniji problem — stajanje je sada zaglavljeno, vozač ili čeka ili zaobilazi aplikaciju, a zaobilaženje aplikacije je način na koji se papirni proces tiho vraća unutar digitalnog. Zato zapis ne treba da čeka da njegov dokaz stigne; ali dokaz takođe ne treba tretirati kao opcioni teret koji je u redu izgubiti. On mora sam nastaviti da pokušava, u pozadini, dok ne stigne ili zaista ne propadne — a ako propadne, to mora biti vidljivo nekome, a ne progutano bez traga.
Taj redosled ipak nije univerzalan, i ovo je deo vredan pažnje: kod nekih događaja prioritet se okreće. Prijava neuspele isporuke verovatno je korisnija kancelariji, čak i bez ijedne fotografije, nego da uopšte nije podneta u trenutku kad se desila, jer neuspelo stajanje menja izgled ostatka dana — ponovni pokušaj, poziv kupcu, ponovno planiranje ture — i to mora da stigne do dispečera pre fotografija, ako mora da se bira. Šta ide prvo ne sme biti tehnička podrazumevana vrednost koju je neko slučajno postavio, na osnovu toga koji poziv je bilo najlakše prvi ispaliti u kodu. To je odluka o tome koje odsustvo bi više naškodilo, doneta namerno, jednom, za svaku vrstu zapisa.
Ponovni pokušaj nije automatski ponovno izvršenje
Nezgodan slučaj je onaj u kome zaista niko ne zna šta se desilo: aplikacija je poslala zahtev, veza je prekinuta usred prenosa, i sa samog uređaja nema načina da se utvrdi da li je server zahtev primio pa nije uspeo da odgovori, ili ga uopšte nije video. Slepo ponavljanje je u redu za nešto idempotentno. Nije u redu za radnju koja svaki put kad se pozove stvara novi zapis — drugi upis „isporučeno“ nakon neizvesnog isteka vremena može se dalje niz lanac pročitati kao drugi pokušaj isporuke, a ne kao potvrda prvog. Pošten sistem mora da nosi tu razliku: „sigurno nije uspelo, bezbedno je ponovo poslati“ je drugačije stanje od „ne znamo“, i ono drugo zaslužuje više opreza — čoveka koji potvrđuje pre nego što se pošalje ponovo, umesto tihog ponavljanja koje bi moglo da udvostruči stvaran događaj na papiru.
Tretirajte poznate mrtve zone kao poznate, a ne kao incidente
Većina ovoga se rešava predviđanjem, a ne dosetljivošću. Ako linija svake nedelje prolazi kroz isti tunel ili kroz istu mrtvu zonu koja pokriva tri sela, taj prekid nije novost — to je poznata osobina rute, i tretiranje desetominutne tišine na toj deonici kao uzbune, umesto kao očekivanog, uči dispečera da juri vozače zbog nečega što nije pogrešno. Vredna navika je poznavati sopstvene mrtve zone dovoljno dobro da se razlikuje „tiho zbog tunela“ od „tiho jer je nešto zaista pogrešno“ — a to je procena koju i dalje mora da donese čovek, ali je može doneti dobro samo ako mu sistem ispred njega govori istinu o tome šta trenutno zna, a šta ne zna.
Gde navichain stoji
Vozačka aplikacija na licu mesta beleži status stajanja, potpis, fotografije i razlog neuspele isporuke, a današnja stajanja, navigacija i tovarni list po stajanju već su na telefonu pre nego što dan počne — vozač koji radi sledeću isporuku čita plan koji je već tu, a ne onaj koji čeka na živo preuzimanje. Stranica platforme pokriva ostatak onoga što radi uz to: dnevne preglede vozila koji odmah otvaraju kvar čim nešto ne prođe, i podatke o opasnoj robi ograničene tačno na stajanje na kome se vozač trenutno nalazi, tako da informacija koja je važna na vratima ne zavisi od toga šta signal radi u trenutku kad se vrata otvore.