– 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.
«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.
– 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.
Fikk sommerjobb i Oljefondet: – Hadde fordommer!
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.
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.
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.
Sånn koder de en helnorsk «Fitbit for hunder»: - Vi måtte lage alt fra scratch
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.
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.
Sånn får de Strim til å funke overalt: – UX jobber like mye backend som frontend
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.