Fintech / trgovanje
Berza kriptovaluta
Sigurna, visokoperformansna berza kriptovaluta — obrada naloga, uparivanje i tokovi računa napravljeni da ostanu brzi i tačni pod naletima opterećenja, uz zaštitu korisničkih sredstava.
Pregled
Mesto za trgovanje je neoprostiva stvar za izgradnju. Mora da bude brzo, mora da bude tačno i mora da bude sigurno — a te tri stvari se povlače jedna protiv druge upravo pod uslovima koji najviše znače: nalet opterećenja kada se tržište pomeri. Ovo je bila sigurna berza kriptovaluta izgrađena sa visokim performansama i skalabilnošću kao ciljevima prvog reda, a ne kao naknadnim optimizacijama.
Problem
Na berzi su i otkaz performansi i otkaz tačnosti odmah skupi, a otkaz bezbednosti je katastrofalan — to su korisnička sredstva. Opterećenje je po prirodi i skokovito: tišina, pa skok kada se tržište pomeri, pa opet tišina. Sistem mora da zadrži svoju latenciju i tačnost tačno onda kada se svi pojave istovremeno, i mora to da radi tretirajući zaštitu korisničke imovine kao nešto o čemu se ne pregovara.
Rešenje
Berzu sam izgradio oko delova koji moraju biti i brzi i tačno ispravni: obrada naloga, mašina za uparivanje i tokovi računa. Svaki je napravljen da izdrži kako obim raste — putanja uparivanja održana tesnom i predvidljivom, operacije nad računima i saldom održane strogo tačnim, a celina projektovana tako da propusnost skalira sa potražnjom umesto da se ruši u vršnom opterećenju.
Stack ovde odražava dizajn servisa visoke propusnosti i niske latencije; navedena tehnologija je oblik za kojim bih posegao i na kojem bih gradio ovakav sistem.
Arhitektura
Definišuće ograničenje je da novac nikada ne sme biti stvoren ili uništen greškom. To gura stanje salda i naloga ka jakoj konzistentnosti i pažljivim transakcionim granicama, dok se okolne površine sa mnogo čitanja (tržišni podaci, prikazi knjige naloga) mogu opsluživati iz brzih, eventualno konzistentnih keševa. Razdvajanje ta dva sveta — knjige koja mora biti tačno ispravna od prikaza koji moraju biti tek brzi — jeste središnji arhitektonski potez.
Uparivanje je vruća putanja i dizajnira se u skladu s tim: kritičnu sekciju drži malom i determinističkom, spori posao (obaveštenja, analitika, sve što nije autoritativno) drži van nje i iza redova, a ceo servis učini horizontalno skalabilnim tako da nalet bude pitanje kapaciteta, a ne pitanje tačnosti.
Tehnički izazovi
Konkurentnost je čitava igra. Mnogo naloga koji se u istom trenutku otimaju za isti nivo cene je normalan slučaj, a ne rubni, i to mora da se razreši pravično, tačno i brzo. Zaštita korisničkih sredstava dodaje drugi skup ograničenja bezbednosnog oblika povrh toga — svaki tok računa je mesto gde se susreću zahtevi za tačnošću i za bezbednošću, i oba moraju da pobede.
Naučene lekcije
Odluči koje su invarijante svete i sagradi tvrđavu oko samo njih. Pokušaj da se sve učini jako konzistentnim i niske latencije odjednom daje ti sistem koji nije ni jedno ni drugo. Berze koje rade povlače tvrdu liniju između autoritativne knjige — male, stroge, zaštićene — i svega ostalog, kome je dozvoljeno da bude brzo i približno. Ispravno postaviti tu granicu je najveći deo posla.