Ebizapple
Ta kontakt Logg inn i kundeportalen

+47 464 69 500 [email protected]

AutomatiseringMakeSkalering

Kollisjonsveggen: to fabrikker kan ikke dele én motor

Vi ville doble farten ved å kjøre to løp i parallell. Plattformen sa nei, og den hadde rett.

Daglig leder, Ebizapple Oppdatert 8 min lesetid
To fabrikker peker mot én motor. Den øverste slipper gjennom, den nederste avvises. To utveier — klon motoren, eller la fabrikkene vente på tur.

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.


To fabrikker peker mot én motor. Den øverste slipper gjennom, den nederste avvises. To utveier — klon motoren, eller la fabrikkene vente på tur.
Den stiplede pilen er ikke en feil vi kan rette. Den er en egenskap.

Feilmeldingen

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.


Hvorfor det er verdt en artikkel

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.


De to ekte utveiene

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.


Det som er verdt å ta med til andre oppsett

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.


Kort vei til svaret

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.

Se hvordan vi bygger automatisering med stoppunkt

Mer om automatisering

47 riktige, 3 feil — og null utført

Vi lot systemet ta femti reelle beslutninger uten å få lov til å gjennomføre noen av dem. Det var derfor vi fant de tre.

middels Les

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.