Overvåking er ikke skraping — det er å huske forrige gang
Seks moduler holder øye med tre byer. Den tredje er hele forskjellen.
Vi ville doble farten ved å kjøre to løp i parallell. Plattformen sa nei, og den hadde rett.
Vi har et løp som bygger og forbedrer sider i stor skala. Det består av en fabrikk som styrer rekkefølgen, og en motor som gjør selve arbeidet.
Regnestykket for å gå raskere var enkelt: kjør to fabrikker med hver sin del av køen, og du er ferdig på halve tiden. Fem–seks netter i stedet for ti.
Det virket ikke, og grunnen er verdt å skrive ned.
Scenario is already being executed
Motoren er ett scenario. To fabrikker som kaller den samtidig, får ikke to kjøringer — den ene får jobben, den andre får avslag. Ikke en kø, ikke en forsinkelse. Et avslag.
Dette er ikke en innstilling som kan skrus opp. Det er hvordan plattformen fungerer: ett scenario kjører én gang av gangen.
Fordi den naturlige reaksjonen er å prøve igjen med litt forskyvning, se at det stort sett går bra, og konkludere med at man har parallellitet.
Man har det ikke. Man har to løp som av og til krasjer, og der den ene taper uten at noen ser det. Sider blir ikke bygget. Køen ser ut til å gå framover fordi den andre fabrikken gjør sitt. Tallet «vi kjører to fabrikker» blir sant i beskrivelsen og usant i praksis.
Vi har en regel for dette internt, og den står i klartekst i notatet der veggen ble oppdaget: ikke fake parallellitet.
Klon motoren. Én kopi per fabrikk. Da er parallelliteten reell, og prisen er at du har to motorer å vedlikeholde. Endrer du logikken ett sted, må du huske det andre. Det er en kostnad som vokser, og den vokser stille.
La fabrikkene vente på tur. Én fabrikk bygger av gangen; de andre gjør arbeid som ikke krever motoren — metadata, interne lenker, opprydding. Du får ikke halvert tid, men du får en motor og null krasj.
Vi valgte den andre for dette løpet, fordi motoren er der logikken er mest under endring, og to kopier under endring er en verre vegg enn ventetid.
En delt ressurs midt i et løp bestemmer taket for hele løpet. Det spiller ingen rolle hvor mange armer du setter på foran — kapasiteten er motorens.
Så det første spørsmålet når noen sier «kan vi ikke bare kjøre flere i parallell» er: hva deler de? Er svaret et scenario, en API-nøkkel med kvote, en database med lås, eller en fil på Drive, så er svaret som regel nei uten at noe klones.
Og hvis noe skal klones, skal det være noe som ikke endrer seg ofte.
Skal du automatisere noe som skal gå fort, er ikke spørsmålet hvor mange kjøringer du kan starte. Det er hva de alle må innom.
Seks moduler holder øye med tre byer. Den tredje er hele forskjellen.
Vi leste av vår egen plattform. Feil fordeler seg ikke jevnt — og det avgjør hvor stoppunktene skal stå.
Vi lot systemet ta femti reelle beslutninger uten å få lov til å gjennomføre noen av dem. Det var derfor vi fant de tre.
Vi hadde ikke for lite dokumentasjon. Vi hadde fem oversiktssider som alle het en variant av «start her», og ingen av dem visste at de andre fantes.
Denne artikkelen hører til automatisering. Skal noen gjøre jobben for deg, er det dette vi tilbyr: automatisering som sier fra når den knekker.