Att kunna hantera extrema trafiktoppar, såsom exempelvis Black Friday, attraktiva biljettsläpp eller kanske till och med tillgång till eftertraktade vaccinationstider, är en utmaning – men absolut ingen omöjlighet. Ämnet är lika spännande som aktuellt, så vi satte oss ner och pratade med Tripnets systemingenjörer Björn Åberg och Jonas Lindqvist som berättade om sina tankar kring hur man idag sätter upp en modern servermiljö och om sina framgångar med kunden Elkjøp under Black Friday. Nyckelfaktorerna har varit hög automationsgrad och avancerade lasttester.
Elkjøp har varit kund på Tripnet sedan 2010. Det långa och nära samarbetet har lett till en konstruktiv och ibland kreativ dialog kring lösningar och skapat stort förtroende, parterna emellan, samt djup insikt i verksamheten. Långa samarbeten ger högt i tak och då finns det utrymme för ömsesidiga diskussioner och insiktsfulla råd.
– När vi började planera inför vår sjätte Black Friday tillsammans med Elkjøp, insåg vi att pandemin skulle göra en redan tuff utmaning ännu tuffare. Vi förväntade oss högre tryck på e-handeln än någonsin, berättar Jonas Lindqvist, som är Elkjøps kundansvarige tekniker på Tripnet.
![IMG_2770 IMG_2770](https://tripnet.se/wp-content/uploads/2021/06/IMG_2770-768x334.jpg)
Steg 1: Beställning och uppsättning av ny hårdvara
Elkjøp, som under de senaste årens Black Friday, sett volymen öka drastiskt, ville säkra upp 2020. I samråd med Tripnets tekniker beslutades om en större förändring i infrastrukturen som skulle ge en upp till åtta gånger större miljö. Över 100 fysiska servrar beställdes för installation i Tripnets datorhall, men pandemin satte käppar i hjulet. Leveransen försenades och den annars så viktiga framförhållningen i projektet minimerades till bara några månader, istället för det egentligen nödvändiga året.
– När switcharna äntligen dök upp i slutet av april, behövde vi snabbt trolla ihop en mindre miljö så att Elkjøps utvecklare kunde påbörja arbetet med att splittra riggen i fyra silos - en för varje land, minns Jonas. Eftersom testmiljöerna byggdes separat kunde tester göras dagtid vilket förenklar. Verklighetstrogna resultat är viktigt.
Steg 2: Installation och automation
Automatiserade installationer har flera stora fördelar. I Elkjøps fall är installationsprocessen idag helt automatiserad fram tills applikationen är klar att köra.
– Jag byggde detta i två steg, berättar Björn Åberg. Först löste vi operativsystemet med hjälp av PXE, alltså en nätverksboot för servrar och switchar samt RedHat Kickstart. Nu är det bara slå på servern – sedan sköts allt automatiskt.
Själva konfigurationen är byggd av Björn i Ansible. Tillsammans med utvecklarna byggdes allt så servrarna har tre olika roller. Tack vare automationslösningen kunde miljöerna skalas för att hitta bästa möjliga kompositionen för att klara Black Friday – ett event som absolut kräver maximal prestanda. Att installera om en server tar idag cirka tio minuter. Den stora vinsten sitter i hastigheten i att bygga om eller flytta till annan miljö så att skalning blir möjlig.
– Utvecklarna älskar dessutom säkerheten i att arbeta med automatiserade lösningar, istället för manuell hantering som alltid innebär en större risk för fel, konstaterar Björn.
![IMG_2677 IMG_2677](https://tripnet.se/wp-content/uploads/2021/06/IMG_2677-768x576.jpg)
Steg 3: Lasttester för att säkerställa prestanda
I den fullskaliga miljön gjordes därefter de första lasttesterna i maj men man insåg snart att det behövdes mer prestanda… mycket mer! Fler servrar beställdes och riggen byggdes om fyra gånger för att möta de nya kraven.
– Jag och Björn fick skriva om kickstartscriptet utifrån kundens behov. Vi utgick ifrån en Excelfil med exakt info om IP, servicetag och silotillhörighet som exporterades till servern med Kickstartscriptet vilken hämtade all info per automatik och installerade med den önskade profilen beroende på om det var en webserver, appserver, sökserver, databasserver osv, berättar Jonas. Därefter sköt Björn ut Ansible-filerna och installationen av programvara och konfiguration sköttes automatiskt. Sedan var den helt färdig. Smidigt och enkelt!
Lasttestscriptet, som simulerade främst en vanlig användare, togs fram av utvecklarteamet.
– När lasttesterna startades satt vi, tre-sju personer, och bevakade noga. Antalet användare rampades upp sakta. Vi lärde oss bland annat att låta lasttesterna gå längre tid än vi trodde. En del fel hittades efter oväntat lång tid, berättar Jonas.
När alla uppenbara problem var hittade, övergick analysen i funderingar kring hur systemet gick att optimera. Vilka parametrar avgjorde att det ser ut att stanna eller krascha?
– Vi kom en bra bit men det slutade ändå hela tiden med att det blev för kraschbenäget, så jag satt en hel helg och testade olika lösningar. Jag byggde om app-serverna och gjorde dem virtuella, för att se om jag kunde starta fler applikationer i varsin virtuell silo på samma server, och då såg det bättre ut. Men, det var ganska mycket jobb att bygga om, så vi hittade en smidigare lösning, nämligen att knyta applikationens processer till en viss mängd CPU-kärnor. Då nådde vi bättre stabilitet men det var ändå inte riktigt bra…
När systemet började gå i taket såg Jonas att en mängd testanvändare fastnade och köades upp - de kom helt enkelt inte in systemet. Han fann då en inställning i netscalern som begränsade antalet användare som kan gå in på respektive server utan istället köas upp i netscalern.
– Tack vare denna egentligen lilla men superviktiga inställning, kunde vi hamra på jättemycket, utan att få längre svarstider, säger Jonas. Upp till ca 1 000-2 000 som köade i netscalern var det en helt godtagbar svarstid, mer därefter blev det oacceptabelt. Vi utgick då ifrån detta värde och slog sedan på det synliga kösystemet, rätt så lågt, och kunde justera utifrån utfallet.
![IMG_2759 IMG_2759](https://tripnet.se/wp-content/uploads/2021/06/IMG_2759-768x512.jpg)
Steg 4: Visualisera för att kunna agera
För att kunna följa utfall – såväl på systemets prestation som på de pågående affärerna – byggdes flera dashboards med hjälp av visualiseringsverktyget Grafana, understött av InfluxDB.
– All utdata visades i realtid, vilket var lika spännande som behändigt, intygar Jonas. Att vi kunde blanda helt olika typer av värden var en enorm styrka. På detta sätt samlades såväl Elkjøps ledningsgrupp som systemingenjörerna på Tripnet vid samma dashboards! Medan ledningen fokuserade på ordrar per sekund och intäkter, bevakade vi kanske snarare behovet av att eventuellt aktivera det manuella kösystemet, säger Jonas.
Förberedelser är A och O
Elkjøp, med sin otroliga omsättning och hundratals ordrar per minut under black week, hade inte en enda minuts nertid, orsakad av den egna miljön. Däremot fanns det en del stöttande system, exempelvis betallösningar, som inte hade det lika enkelt och som tyvärr i viss grad påverkade shoppingupplevelsen hos Elkjøp på ett negativt sätt.
Sanningen bakom framgången är egentligen väldigt enkel och stavas framförhållning och god planering.
– Vi lyckades väldigt bra tack vare stora förberedelser. Vi påbörjade arbetet i stort sett direkt efter förra årets Black Friday, alltså med ett års marginal. Att debriefa när erfarenheterna är som mest aktuella och då påbörja arbetet med förbättringsåtgärder ger bäst resultat, fastslår Björn och Jonas. Dessutom jobbade vi i ett tight och sammansvetsat team tillsammans med kunden och utvecklarna hela tiden. I skarpt läge – under själva peaken – kunde vi dessutom ta ytterligare hjälp av våra kollegor på Tripnet och på så sätt bemanna upp för alla eventualiteter.
![IMG_2786 IMG_2786](https://tripnet.se/wp-content/uploads/2021/06/IMG_2786-768x447.jpg)
En lättmotiverad satsning
Elkjøp är numera uppskalade året runt, även om det under resten av året egentligen hade räckt med ett system som varit en tiondel så stort.
– Merkostnaden är minimal i relation till vad det hade kostat att inte ha en fungerande miljö och kunnat ta emot alla ordrar under Black Friday. Elkøp slår ju nya rekord varje år. 2020 var omsättningen under Black Week 5 miljarder NOK, säger Björn.
Några aktuella trender
Automation är överlag en starkt växande trend, inte minst använt i samband med integration och installation. I uppbyggnaden av Elkjøps nya miljö som vi beskrivit ovan, har vi nyttjat oss av teknik och metodik i framkant. Björn och Jonas fyller gärna på med några fler tydliga tecken på förändringar:
– Automation kommer starkt i samband med att man börjar nyttja containers. Moderna applikationer med microservices containers blir enklare då man kan skala olika delar av applikationen. Du kör dem oftast i ett public cloud där du kan lägga till prestanda på ett enkelt sätt. De flesta är på väg mot detta håll men det tar tid att flytta till denna typ av arkitektur. Det är trots allt stor skillnad från de stora monolitiska applikationerna. Vi har kunder som gått till containerbaserad applikation men alla delar fungerar fortfarande inte fullt ut, så det behöver byggas om för att bli mer cloud native och kunna autoskala, alltså låta applikationen växa när den själv känner att den behöver, förklarar Björn.
– Infrastructure as Code, alltså att kunna definiera infrastrukturen för en virtuell miljö i en enda fil. Miljön byggs sedan upp enligt denna mall, vilket sparar mycket tid och minimerar många risker, lägger Björn till.
Att inte kunna hantera sin trafik är inte längre en fråga om teknik. Våra kunder och deras kunder ska kunna köpa sin biljett utan större krångel. De ska kunna hitta sin vaccinationstid utan systemstrul och de ska absolut kunna klicka hem sin nya tvättmaskin från Elgiganten, utan risk att bli utkastade ur systemet. Med god analys och planering, bra framförhållning, rätt kompetens och en trovärdig partner att förlita sig på är detta – 2021 – inget problem alls!