March 26, 2021 - 2 minuters lästid

Ibland önskar vi att vår kod märktes lite mer.

Vår vision och strävan i allt vi gör är kod som inte märks. Ni vet friktionsfri kod som bara fungerar, som man inte tänker på så mycket. Faktum är att riktigt bra kod inte gör så mycket väsen av sig. Vill du förstå lite mer hur vi tänker och vad Kod som inte märks är - häng med när vi i konkreta exempel förklarar hur vi tänker och hur vi fyller Kod som inte märks med innehåll.  

Saker som inte kräver ett direkt resultat kan systemet få sköta själv i bakgrunden.

Kod som inte märks kan vara att implementera köer för att användaren ska slippa vänta i onödan. Varför är det så viktigt?
Ponera att 10 000 användare får vänta i 5 sekunder extra. Det motsvarar 833 minuter eller nästan 14 timmars väntetid. På 14 timmar kan man åstadkomma mycket. Därför är varje sekund viktig.

Som exempelvis om en användare gör någonting som kräver att ett mejl ska skickas, så skickar vi det jobbet till en kö. Vi gör en validering av datan som ska skickas direkt, men själva exekveringen att skicka mailet, lägger vi till i en kö, så slipper användaren vänta på att alla requests relaterade till att skicka mejlet ska ladda klart. Användaren får se nästa sida direkt utan att behöva bry sig om mejlet som skickas i bakgrunden. Mejlet skickas sen när kön har tid med det.
I en kö man man lägga nästan vad som helst. Processing av en order i en e-handel, ett e-post som ska skickas, eller någonting annat som kan ta lite onödigt lång tid för att vänta på.

För att en kö ska fungera finns det en worker som hela tiden sitter och bevakar om det finns saker i kö. Dyker det upp något i kön så plockar workern det, processar och väntar sedan på att något nytt ska komma i kön. Finns det 100 saker som står i kö, betar workern av en sak i taget, i sin egen takt beroende på begränsningar vi har satt, eller serverns kapacitet. Finns det 1000 saker i en kö betar den fortfarande av en sak i taget, men när tillströmmningen och köbildningen är stor kan man också med fördel använda sig av flera köer.

Tänk som ett kösystem på en stormarknad, samma sak fast i kod. För att du ska slippa stå i den långa kön bland människor som handlar mat för att lösa in din tipskupong, finns det ofta en särskild kö som tar hand om spel. Och workers är ju då så klart kassapersonalen i butiken.

Skriven av Jimmie Johansson

I grunden självlärd webbutvecklare som behärskar en lång rad av programmeringsspråk. Tycker Laravels källkod är vacker.