utvikling

Elkjøp sparer millioner i året etter å ha byttet til Kubernetes-basert skyløsning

Den nødvendige innsikten får selskapets IT-avdeling fra en «service mesh» kalt Linkerd.

Elkjøp-selger med mobilutgaven av det nye Blueberry-systemet til selskapet. Dette kjøres på toppen av mikrotjenestene som omtales i artikkelen.
Elkjøp-selger med mobilutgaven av det nye Blueberry-systemet til selskapet. Dette kjøres på toppen av mikrotjenestene som omtales i artikkelen.

Elkjøp er for tiden på en omfattende moderniseringsreise på IT-siden. Prosjektet ble startet for drøyt to år og kalles for Next Generation Retail. Det går ut på at både frontend- og backend-systemer hos Elkjøp skal moderniseres.

– Selv om vi er mest kjente for å selge dingser, så må vi ha en hel del systemer i bakkant, forteller Henry Hagnäs, som er nettskyarkitekt hos Elkjøp, til Digi.no.

– Mange har nok sett at selgerne bruker et system med et tekstbasert grensesnitt med blå bakgrunn. Dette systemet, som kalles for Elguide, er mer enn 20 år gammelt. Det er kjært for mange, men det tar litt tid å komme inn i, og det er ikke så fleksibelt dersom vi ønsker nye tjenester og slikt. Dette er ikke det eneste systemet vi har vært nødt til å modernisere, men det er det mest synlige for kundene, sier Hagnäs.

Elkjøp-konsernet har rundt 10.000 ansatte. Ikke alle er selgere, men andelen er ganske høy. Så det er ganske mange som har brukt Elguide-systemet.

Fra Elguide til Blueberry

Elguide har nå bli erstattet av et nytt system i alle butikkene i Danmark, alle butikkene som Elkjøp-kjeden selv eier i Sverige, samt alle Elkjøp Phonehouse-butikkene i Norge. Dette utgjør 198 av de 403 butikkene. I hver butikk er det rundt ti terminaler. Planen er at alle butikkene skal ta i bruk det nye systemet innen utgangen av året. Butikkene under franchiseordningen i Sverige er under oppgradering nå, og forventes ferdig oppgradert før påsken.

Det nye systemet kalles for Blueberry.

– Det er en mye mer moderne løsning som selgere kan bruke både på mobil og PC, forteller Hagnäs.

Og fra Web Apps til Kubernetes

I praksis er likevel det selgerne ser på skjermen bare et skall til en mengde mikrotjenester. Disse har allerede eksistert i noen år.

– Elkjøps mikrotjenester ble bygget for fem år siden. Men i forbindelse med at Next Generation Retail-prosjektet begynte, så måtte vi også modernisere plattformen som mikrotjenestene kjøres på, forteller Hagnäs.

Tidligere ble mikrotjenestene kjørt på en «managed» løsning i Microsofts nettsky som heter Azure Web Apps.

– Det kostet en hel del penger. Denne løsningen er veldig bra for å komme i gang, men du får med en egen, privat server, egen Internet Information Server og hele pakken, så den er dyr. Da vi startet prosjektet, hadde vi under hundre slike mikrotjenester, men da prosjektet var ferdig, hadde vi mer enn 200. Dette fordi vi skapte nye tjenester til nettopp Next Generation Retail-prosjektet, sier Hagnäs.

Det Elkjøp gjorde, etter å ha modernisert mikrotjenestene litt, var å flytte dem over i Azure Kubernetes Service, hvor de ble «puttet i» konteinere i tjenesten.

Fikk innsikt med Linkerd

– Men dersom du kun løfter tjenestene inn i Azure Kubernetes Service, så får du en veldig grunnleggende Kubernetes-tjeneste. Du får blant annet ikke noe nettverksinnsyn og mindre sikkerhet, forteller Hagnäs.

For å få den innsikten som selskapet hadde behov for, valgte Elkjøp en åpen kildekode-basert løsning som heter Linkerd.

Linkerd omtales som en «service mesh», et verktøy som utstyrer applikasjoner med funksjonalitet knyttet til blant annet observerbarhet, sikkerhet og pålitelighet i plattformlaget, istedenfor i applikasjonslaget.

I praksis innebærer dette at Linkerd injiseres i mikrotjeneste-konteinerne, slik at den fanger opp all nettverkstrafikk.

– Det betyr at du som utvikler ikke trenger å tenke på kryptering, sertifikater og alt annet rundt dette. Linkerd pakker inn applikasjonen, tar imot all trafikk og sørger for at den er kryptert. Den kan også ha policyer som sier at applikasjonen kun får snakke med spesifikke tjenester. Dessuten måles alt som går gjennom Linkerd, noe som betyr at du kan se at konteiner A snakker med konteiner B, hvor mye nettverkskapasitet den bruker, og du får til og med informasjon om HTTP-status. Dermed kan du feilsøke ved hjelp av Linkerd, forklarer Hagnäs.

Sidevogn

Under prosjektet har Elkjøp fått bistand fra Fredrik Klingenberg i konsulentselskapet Aurum. Han forteller videre at det å ta i bruk Linkerd blir som å sette inn en liten proxy (også kalt sidecar – sidevogn) foran hver applikasjon. Denne delen kalles gjerne datapanelet.

Fredrik Klingenberg er innleid seniorkonsulent fra Aurum. Foto: Aurum
Fredrik Klingenberg er innleid seniorkonsulent fra Aurum.

– Så har du kontrollpanelet, som dytter proxyene inn, fikser alt med sertifikater for deg, men som også gir deg et API (Application Programming Interface, journ.anm.) som du kan snakke med, for eksempel med et kommandolinjeverktøy – hvor du kan gjøre ganske bra debugging underveis, forteller Klingenberg.

– Fra et operasjonelt perspektiv fikk vi med Linkerd enda bedre innsyn i hvordan applikasjonene våre fungerer enn det vi hadde i Azure Web Apps. Det er dette som er styrken i Linkerd-plattformen, legger Hagnäs.

Det er relativt mange som etter hvert har tatt i bruk Linkerd. Det skal dreie seg om flere tusen klynger, men noe nøyaktig tall finnes ikke. I en rapport CNCF kom med i fjor, opplyses det at 41 prosent av dem som bruker en service mesh i produksjon, bruker Linkerd. Bare Istio brukes av flere, men Consul brukes av omtrent like mange. Det ser ut til å være relativt vanlig å bruke flere slike løsninger på en gang.

Roser fellesskapet

På spørsmål om det finnes alternativer til Linkerd, svarer Klingenberg at det finnes flere.

– Det er noen grunner til at vi valgte å prøve Linkerd. Det ene er at vi hadde fått det anbefalt av Microsoft, som sa at det var et bra alternativ. Vi hadde også sett en del blogger som skriver at Linkerd er veldig effektivt når det gjelder minne og CPU. Det er skrevet i programmeringsspråket Rust. I tillegg er Linkerd en del av Cloud Native Computing Foundation (CNCF), sier Klingenberg.

Han forteller at CNCF har et veldig bra fellesskap med inkluderende miljø, noe han mener er veldig viktig.

– Det hjelper ikke å ha et utrolig bra produkt dersom det er veldig vanskelig å få hjelp. Etter hvert som vi har jobbet med det, har inntrykket om at det er et veldig community forsterket seg, sier Klingenberg.

Hagnäs legger til at det at et prosjekt er med i CNCF, garanterer at regler og betingelser for hvordan prosjektet får brukes, for eksempel i lisensavtalene, ikke endrer seg.

To problemer skulle løses

– Det var også lett å implementere gradvis. Vi ønsket ikke en løsning der du må gå «all in» på alt, slik at dersom noe ikke fungerer, så fungerer ingenting. Med Linkerd kan du legge inn én og én applikasjon etter hvert i datapanelet, samtidig som at alt kan snakke sammen, fortsetter Klingenberg.

Han forteller at det var to problemer de ønsket å løse ved å ta i bruk teknologien – automatisk kryptering av all trafikken mellom applikasjonene internt i Kubernetes, og det å få innsikt i kommunikasjonen og applikasjonene.

– Dette løste Linkerd, mens et alternativ som Istio, ville blitt litt vel mye i vårt tilfelle, forteller han.

Feilet under avsluttende test

På spørsmål om Linkerd i ettertid har svart til forventningene, svarer Hagnäs bekreftende.

– Noe som var litt spennende, var at rett før vi skulle ta systemene i produksjon i Danmark i mai 2020, så gjorde vi en lasttest. Vi var sikre på at det ville gå kjempebra og hadde derfor planlagt å gjennomføre testen veldig nærme lanseringen, bare for å verifisere at alt fungerte. Vi startet lasttesten, og så merket vi at alt sluttet å fungere. Vi kunne ikke se noen feil. Serverne så friske ut, det var masse minne tilgjengelig og alt så veldig pent og fint ut. Likevel begynte spørringene mot mikrotjenestene å feile, forteller Hagnäs.

Måtte frigjøre portene

Henry Hagnäs er nettskyarkitekt hos Elkjøp. Foto: Rune Dyrhaug/Elkjøp
Henry Hagnäs er nettskyarkitekt hos Elkjøp.

– Har man brukt skyen en stund, så ser man at det er visse fundamentale ting som kan gå galt. Én av disse er at man går tom for Source Network Address Translate-porter (SNAT). Det er egentlig slik at når en server sender ut en spørring til en annen, så må nettverket mellom serverne huske hvilken server svaret skal sendes til. Sitter du i en klynge med mange servere, så må jo svaret komme tilbake på riktig måte. Men det finnes en begrensning på hvor mange slike spørringer som kan være ute samtidig, fortsetter han.

Normalt, dersom du har tatt hensyn til det i programmeringen, så er ikke dette noe problem.

– Men hvis du gjør spørringer og ikke stenger portene ned igjen når spørringene er ferdige, så må man vente til de timer ut før portene frigjøres. Dersom alle portene er brukt opp, begynner spørringene bare å forsvinne, sier Hagnäs.

Enklere i Azure Web Apps

Ifølge ham har for eksempel Azure Web Apps verktøy som viser at du er nær grensen og forteller at du må fikse koden eller oppgradere til en større versjon.

– Men i Kubernetes er man mer på egen hånd. Med hjelp av Linkerd kunne vi identifisere når det skjedde og hvordan det skjedde. Deretter kunne vi gjøre forbedringer slik at vi fikk flere porter, i tillegg til å fikse koden, slik at koblingene gjenbrukes, forklarer Hagnäs.

Den første virkelige stresstesten av det nye systemet, var under Black Friday i fjor. Det skal ha gått smertefritt for seg.

– For hver applikasjon som skal inn i Kubernetes, gjør vi nå en sjekk hvor vi kjører applikasjonen og ser på Linkerd-statistikken for å verifisere at koden gjør det den burde gjøre, sier Hagnäs.

Forbedret kodekvalitet

Dermed er han over den andre store verdien som Elkjøp fått ved å ta i bruk Linkerd. Det er knyttet til kodekvalitet.

– I prinsippet blackbox-analyserer du koden din. Du ser veldig godt hva applikasjonen din gjør. Det kommer spørringer inn, og den sender spørringer til andre tjenester. Da kan du analysere den og se om den er veldesignet og velkodet og fungerer bra, forteller Hagnäs.

– Fordi vi begynte å analysere, løftet dette også kvaliteten på koden vår, mener han.

Den tredje gevinsten handler om fakta

– Dersom du har jobbet med nettverk eller plattform, hører du veldig ofte at utviklerne sier at «åh, nå er nettverket ditt dårlig», at nettverket er tregt eller ikke har nok kapasitet. Takket være dette verktøyet så kan vi diskutere fakta. Selvfølgelig kan det iblant være at plattformen har et problem, men ofte er det utviklerne som kanskje har gjort noe dumt. I stedet for å krangle om det, kan vi veldig raskt se på fakta, skape kvalitet og forbedre erfaringene for alle kundene, sier Hagnäs.

Sparer millioner i året

Da prosjektet startet, hadde Elkjøp som nevnt i underkant av hundre mikrotjenester, noe som i løpet av perioden vokste til rundt 200 på grunn av ny funksjonalitet.

– Vi hadde tre kopier av hver eneste mikrotjeneste, inkludert test- og produksjonskopier. Det betyr at vi hadde rundt 600 Azure Web Apps på det meste. Dette varierte, så det er vanskelig å si akkurat hva prisen ville ha vært. Men det lå rundt 3,9 millioner kroner i året.

– Nå som alle tjenestene har blitt flyttet over til Kubernetes, har hvert miljø har sin egen klynge, og hver klynge har omtrent 25 større servere, istedenfor 200 mindre servere som tidligere. Det finnes også muligheter i Azure Kubernetes for å gjøre kostnadsbesparelser – slik som å reservere kapasitet – som ikke finnes i Azure Web Apps. Så vi har gått ned i kostnad fra nesten 4 millioner til under 1 million kroner i året, forteller Hagnäs.

Han legger til at Azure Kubernetes i samtidig er designet for å ha høyere oppetid og å være mer pålitelig enn Azure Web Apps.

– Så vi har samtidig forbedret kvaliteten på tjenestene. Fordi tjenestene nå ofte kjøres på samme server eller i samme klynge, går spørringene mellom tjenestene kjappere enn de gjorde tidligere. Dermed har ytelsen gått opp også på den måten.

Ikke egnet for alle

Hagnäs mener likevel ikke at alle bør gå fra Azure Web Apps og over til Azure Kubernetes.

– Jeg må si at Azure Web Apps er en fantastisk plattform å starte med dersom du bare har et fåtall tjenester. Kubernetes er komplisert. Vi har jobbet med dette prosjektet i et år. Men så fikk vi da også en skikkelig oppgradering til en ny og bedre verden. Så det var verdt det for oss. Besparelsene er på plass når du har stor nok skala, forteller Hagnäs.

– Det operasjonelle med Kubernetes er mye enklere. Du kan tenke deg at om du individuelt skal skalere 200 forskjellige tjenester, så er det veldig mye jobb. Du må skjønne hvordan de henger sammen. Med Kubernetes kan vi skalere opp hele miljøet på en gang.

Blueberry erstatter det 20 år gamle Elguide-systemet til Elkjøp. Foto: Ketil Martinsen/Elkjøp
Blueberry erstatter det 20 år gamle Elguide-systemet til Elkjøp.

Også nettbutikken skal forbedres

Nettbutikken til Elkjøp, som de fleste av Digi.nos lesere nok har vært innom, bruker en del av de nevnte tjenestene.

– Vi har et separat prosjekt rundt nettbutikken. Jeg tør ikke si når det kommer, men nettbutikken kommer til å bli forbedret. Da vil disse tjenestene bli mer brukt, forteller Hagnäs.

Mikrotjenestene er samtidig ikke det eneste som har blitt berørt under moderniseringsreisen til Elkjøps IT-infrastruktur.

– Vi har også flyttet SAP og mange andre av de kundekritiske tjenestene over i Azure. Så vi har egentlig en veldig stor andel av tjenestene våre i Azure nå. Vi har fortsatt et innleid datasenter, men det har blitt mye mindre, forteller Hagnäs.

IT-driften styres fra Norge

– Elkjøps IT-organisasjon er i grunnen ganske liten, vi snakker om noen hundre personer, alt avhengig av prosjekter og bruken av innleide konsulenter. Det er rundt 30-40 mennesker som jobber med drift. Det er også derfor vi må automatisere dette og gjøre valg som er enkle å ta hånd om og organisere.

IT-driften styres fra Norge, men konsernet har også «back office» i Brno, Tsjekkia, som det deler med eieren, Dixons Carphone.

Ikke bare dingser

Hagnäs mener at moderniseringsreisen gjør Elkjøp til en mer attraktiv arbeidsplass for IT-personer.

– Nå har vi faktisk veldig kule og interessante systemer og oppgaver å jobbe med. Vi har merket at utviklerne våre liker denne nye plattformen veldig godt. Det er moro jobbe med den, og den gir dem god innsikt i hva de faktisk driver med, noe som gjør at de blir bedre i jobben sin. Vi jobber hardt med å skape nye måter å betjene kundene på. Det er mer å gjøre hos Elkjøp enn å bare å kjøpe dingser, avslutter Hagnäs.

Powered by Labrador CMS