Este al treilea act, capul de afiș este pe scenă și optzeci de mii de oameni decid deodată că vor o băutură. Coada e de douăzeci de persoane. Fiecare atingere care are nevoie de o secundă întreagă ca să confirme înseamnă o persoană care stă pe loc, un barman care așteaptă, o coadă care crește în spate. La scara asta, latența nu este un moft tehnic. Este debit, venit și dacă mulțimea are sau nu o seară bună. Atingerea trebuie să pară instantanee, iar instantaneu înseamnă sub două sute de milisecunde de la atingere la confirmare.
Rețeaua este inamicul
Nu atingi cifra asta cu un drum dus-întors până la un server. O singură cerere către un procesator de plăți peste o rețea de festival congestionată înseamnă o sută de milisecunde într-o zi bună și câteva secunde într-una proastă, iar rețelele de festival sunt mereu proaste: rețeaua mobilă este saturată de optzeci de mii de telefoane, backhaul-ul Wi-Fi cedează. Așa că nu părăsim dispozitivul. Autorizarea se întâmplă local, față de starea de pe dispozitiv. Fiecare brățară poartă un sold, iar cititorul validează și decrementează față de un registru semnat criptografic pe care îl deține deja. Decontarea cu backend-ul se întâmplă asincron, în loturi, în afara traseului critic. Participantul vede un led verde în timpul în care își ridică mâna.
Precalculează tot ce poți
Cea mai rapidă muncă este munca pe care ai făcut-o deja. Înainte să se deschidă porțile, cheile sunt provizionate, registrele sunt distribuite, iar materialul criptografic pentru validare este pus în cache pe fiecare cititor. În timpul atingerii nu e nimic de adus, nimic de derivat, nimic de negociat; cititorul verifică o semnătură față de cheile pe care le deține și actualizează un sold local. Asta este disciplina din spatele oricărui sistem rapid: scoate munca din traseul fierbinte. O atingere nu este momentul să verifici o politică de la un server sau să rezolvi un profil de client. Este momentul să faci singurul lucru ireductibil, să verifici și să decrementezi, și să amâni restul. Cache-ul nu este o optimizare pe care o presari mai târziu. Este arhitectura.
Bugetează milisecundele, vânează coada
Două sute de milisecunde sună generos până le cheltui. Câmpul NFC energizează cardul și schimbă date, ceea ce înseamnă cincizeci până la optzeci de milisecunde pe care nu le controlezi, dictate de protocol și de antenă. Rămâne cam o sută pentru tine. Verificarea semnăturii este zece. Citirea și scrierea registrului sunt încă zece. Randarea UI și tonul de confirmare sunt douăzeci. Fiecare milisecundă rămasă este rezervă pentru coadă. Scrie bugetul, măsoară fiecare etapă și apără-l rând cu rând, pentru că părțile pe care nu le măsori sunt exact părțile care îl fac praf.
O mediană excelentă este o capcană. Dacă atingerea ta mediană este de 120 de milisecunde, dar p99 este de două secunde, atunci o atingere din o sută se blochează, iar la optzeci de mii de participanți care ating toată noaptea asta înseamnă mii de eșecuri vizibile. Oamenii nu își amintesc media; își amintesc înghețul, secunda stânjenitoare holbându-se la un cititor mort. Așa că măsurăm pe teren, nu în laborator. Fiecare cititor pune un timestamp pe fiecare etapă a fiecărei atingeri și trimite histograma înapoi când se reconciliază, iar noi urmărim distribuția completă în timp real, de la p50 la p999. O pauză de garbage collection, o blocare la scrierea în flash, un cache rece pe un cititor proaspăt: fiecare apare ca latență de coadă cu mult înainte ca cineva să se plângă.
Utilizatorii nu îți simt mediana. Îți simt cea mai proastă atingere, așa că proiectează coada, iar media se rezolvă de la sine.— Protocore · Inginerie plăți
Am rulat această arhitectură pentru optzeci de mii de participanți și am procesat 2,4 milioane de euro cu o mediană de atingere-la-confirmare de 120 de milisecunde, confortabil sub buget, și zero dispute. Cifra aceea nu a venit dintr-un server mai rapid. A venit din refuzul drumului dus-întors, din precalcularea a tot, din cheltuirea bugetului de latență cu disciplină și din tratarea cozii ca fiind lucrul care de fapt ajunge la client. Fă atingerea să pară instantanee, iar mulțimea nu se gândește deloc la plăți. Ăsta este întregul rost.
Ai un sistem de construit?
Spune-ne care e problema. Revenim cu o arhitectură și un plan.
Începe un proiect