Hos Komplett bygger de alt selv - og nå skal de bytte ut hele backenden

Vi besøkte veteranen i Sandefjord. - Vanskelig å finne folk som i det hele tatt vet hvordan de gamle løsningene fungerer.

Tomasz Synak, Jonas Rønning og Thomas Kjær Johannessen i Komplett bygger helst alt selv - for å beholde kontrollen, og kunne snu seg raskt. 📸: Kurt Lekanger
Tomasz Synak, Jonas Rønning og Thomas Kjær Johannessen i Komplett bygger helst alt selv - for å beholde kontrollen, og kunne snu seg raskt. 📸: Kurt Lekanger Vis mer

– Vi kan ikke bygge noe nytt før vi vet hvordan det gamle fungerer. Og noen ganger er det vanskelig å finne folk som i det hele tatt vet hvordan de gamle, tekniske løsningene fungerer.

Det sier Jonas Rønning, utvikler hos Komplett, til kode24.

Utviklerne hos Komplett har de siste to årene jobbet på spreng med å bygge en helt ny serviceplattform som skal betjene alle nettbutikkene de driver – hvor komplett.no antagelig er mest kjent for de fleste.

kode24 besøkte dem i Sandefjord for å høre og se hvordan de jobber.

Alt fra bunnen av

Eierselskapet til komplett.no, Komplett Group, har nettbutikker også i Sverige og Danmark. I tillegg til både privat- og bedriftsversjoner av butikkene, er det egne nettbutikker for andre merkevarer, som NetOnNet og Webhallen.

Kompletts hovedkvarter utenfor Sandefjord. 📸: Kurt Lekanger
Kompletts hovedkvarter utenfor Sandefjord. 📸: Kurt Lekanger Vis mer
«Har vi mange tredjepartsløsninger vil det være vanskeligere å snu seg raskt rundt.»

Nettsidene til Komplett er satt sammen av et stort antall ulike tjenester, alt fra handlekurven til markedsføringssider og CMS (publiseringsløsning).

Det at de ulike nettbutikkene har ulike behov, har gjort det nødvendig å lage en serviceplattform som kan ligge mellom de enkelte nettbutikkene og det underliggende ERP-systemet.

Thomas Kjær Johannessen er utviklingsleder hos Komplett, og forteller til kode24 at alt lages av en inhouse utviklingsavdeling med 40-50 ansatte. Rundt halvparten av utviklerne er i Norge, de fleste i Sandefjord – mens resten sitter i Poznań i Polen og jobber fra et konsulentselskap Komplett er medeier i.

– Vi lager nesten alt selv fra bunnen av. Og vi bygger ting slik at det skal kunne brukes av alle butikker, sier Kjær Johannessen.

Det robotstyrte lageret til Komplett benytter roboter fra norske AutoStore. 📸: Kurt Lekanger
Det robotstyrte lageret til Komplett benytter roboter fra norske AutoStore. 📸: Kurt Lekanger Vis mer

– Dere er jo ikke de eneste som driver nettbutikk. Hvorfor kjøper dere ikke bare ferdige løsninger?

– Vi ønsker å være smidige. Da må vi ha hele forsyningskjeden "i våre hender", og ha kontroll på alt. Kanskje vi jobber med noe som er viktig i dag, men i morgen er det noe annet som er enda viktigere, sier Kjær Johannessen.

– Har vi mange tredjepartsløsninger vil det være vanskeligere å snu seg raskt rundt.

Servicelaget er løsningen

Selv om veldig mye av løsningene til Komplett er moderne og nyutviklede, har de også en del gamle systemer som strekker seg helt tilbake til 90-tallet. I disse dager byttes hele ERP-systemet og backend-integrasjonen mot ERP-systemet ut.

– Det vi bygger nå er en mer forent plattform hvor det er klarere separasjon mellom ERP-systemet og web-en, og i midten er servicelaget, sier Rønning.

Servicelaget er løsningen på behovene til de ulike interessentene i forretningen, legger seniorutvikler Tomasz Synak til, som jobber sammen med Rønning på backendløsningene.

Kompletts utviklingsavdeling er delt inn i fem ulike "squads" som har ansvar for hvert sitt område. 📸: Kurt Lekanger
Kompletts utviklingsavdeling er delt inn i fem ulike "squads" som har ansvar for hvert sitt område. 📸: Kurt Lekanger Vis mer

Synak understreker at sluttbrukerne av løsningene de bygger ikke nødvendigvis bare er kunder i nettbutikkene. Det kan like gjerne være en Komplett-ansatt som jobber på logistikk- eller innkjøpsavdelingen.

Azure, .NET og mikrotjenester

Utviklerne setter av mye tid til å jobbe med plattformrelaterte oppgaver, forteller Kjær Johannessen. Det betyr at i stedet for å bare bygge nytt hele tiden, jobbes det kontinuerlig med å rydde opp i plattformen for å gjøre den så enkel og moderne som mulig.

– Den første plattformen vi lagde, som hele komplett.no er bygget på, ble bygget i 1996, og var en monolitt. Den kalte vi Chrome – før Google Chrome kom. Så de "stjal" faktisk navnet vårt, ler Kjær Johannessen.

Her holder de fleste av Kompletts utviklere i Norge til. Med fire minutters biltur fra Torp Flyplass er mange av de polske utviklerne også stadig innom Sandefjords-kontoret. 📸: Kurt Lekanger
Her holder de fleste av Kompletts utviklere i Norge til. Med fire minutters biltur fra Torp Flyplass er mange av de polske utviklerne også stadig innom Sandefjords-kontoret. 📸: Kurt Lekanger Vis mer

Mens den gamle plattformen var en diger monolitt, er den nå modernisert og brutt ned til rundt 200 mikrotjenester. Løsningen kjører på Microsofts Azure-plattform.

– Hele plattformen er skrevet i .NET og C#, og vi hoster det meste i Service Fabric og Azure Functions, sier Rønning.

Deployer ikke på fredager

Rundt 35.000 unike brukere hver dag besøker den norske nettbutikken, og ved spesielle anledninger som Black Friday er tallet mer enn 10 ganger så høyt. I løpet av Black Week var det 1,1 millioner besøkende innom komplett.no.

Med så mange kunder innom nettbutikken og en omsetning på rundt 10 milliarder i 2022, kan tapene fort bli store hvis noe ikke fungerer som det skal. Derfor gjøres det masse testing, i et testmiljø som skal være så likt som mulig produksjonsmiljøet.

Utviklingsavdelingen er delt inn i ulike "squads" – etter Spotify-modellen for jobbing i smidige team. Hver squad har ansvar for ulike områder, og har sin egen QA som etter code review sjekker at alt er OK før kode går i produksjon.

– Og så har vi systemer for automatisk testing. Kvalitet er viktig for oss. Vi feiler raskt og fikser raskt. Det er en kort feedback-loop, og det vi bygger supporterer vi samtidig. Feiler vi, har vi kort tid på å fikse det, sier Synak.

Seniorutvikler Tomasz Synak og hans kollegaer jobber nå på spreng for å rekke å få klar den nye serviceplattformen til oktober. 📸: Kurt Lekanger
Seniorutvikler Tomasz Synak og hans kollegaer jobber nå på spreng for å rekke å få klar den nye serviceplattformen til oktober. 📸: Kurt Lekanger Vis mer

Han forteller at de vanligvis ruller ut kode mange ganger om dagen, før han påpeker:

– Men ikke på fredager!

I tillegg til testing av at ingen kode "brekker", gjøres det også mye brukertesting, og UX-ere sjekker at brukergrensesnitt, knapper og menyer er enkelt å forstå. A/B-testing og "heat maps" er også teknikker som brukes for å sørge for at kundeopplevelsen blir så god som mulig.

– Vi bruker også "feature flags" der vi kan skru av og på funksjonalitet. Så kan vi for eksempel teste i én butikk. Går det bra, kan vi rulle ut til de andre, sier Rønning.

React uten rammeverk

Det nye servicelaget skal etter planen gå i produksjon i oktober, og går alt etter planen, vil Komplett da ha en bedre og mer robust grunnmur å bygge butikkløsninger oppå.

I tillegg til backendløsningene og den nye serviceplattformen, der det går i .NET og C#, har naturligvis Komplett også en rekke frontendløsninger.

– Det er for det meste React, men vi har også et par prosjekter der vi bruker Vue. Og noen prosjekter basert på Razor Pages, sier Rønning.

Han forteller at de ikke bruker noen spesielle rammeverk med React, men bygger også her alt fra bunnen av. Frontenden hostes i Azure.

– Vi har begynt å eksperimentere med micro frontends. De ulike squad-ene har mye frihet til å velge teknologi, sier Rønning.

Det eksperimenteres også med kunstig intelligens (AI), selv om det ikke er noen utstrakt bruk av det i dag.

– Vi prøvde å bruke ChatGPT til å lage produktbeskrivelser. Men det viste seg at tekstene skrevet av mennesker konverterte bedre, konkluderer Kjær Johannessen.