Sådan optimerer du en eksisterende softwareplatform

Hvornår er det tid til at optimere frem for at bygge nyt?
Det er et spørgsmål de fleste tekniske ledere og produktejere møder på et tidspunkt: platformen virker, men den er langsom, svær at vedligeholde, eller den kan ikke følge med forretningens vækst. Instinktet er ofte at starte forfra. Men det er sjældent den rigtige løsning.
En fuldstændig genopbygning er dyr, risikabel og tager lang tid. I mange tilfælde kan målrettet optimering af den eksisterende platform levere langt mere værdi for pengene. Det kræver dog, at man ved, hvad man leder efter, og at man prioriterer rigtigt.
Denne guide gennemgår de vigtigste områder at kigge på, når man vil optimere en eksisterende softwareplatform uden at miste det, der allerede fungerer.
Start med en teknisk gennemgang af platformen
Før man retter noget som helst, skal man forstå, hvad der faktisk er galt. Det lyder indlysende, men mange optimeringsprojekter fejler fordi man begynder med løsninger frem for diagnose.
En teknisk gennemgang, også kaldet en koderevision eller teknisk audit, kortlægger platformens tilstand. Her kigger man typisk på:
- Kodestruktur og vedligeholdbarhed
- Afhængigheder og forældet tredjepartssoftware
- Sikkerhedshuller og manglende opdateringer
- Flaskehalse i systemets ydeevne
- Teknisk gæld, altså snarveje i koden der giver problemer på sigt
En god gennemgang resulterer i en prioriteret liste over problemer, ikke en liste over ønsker. Det er afgørende at skelne mellem det, der faktisk bremser platformen, og det, der blot er irriterende.
Ydeevne: Find flaskehalsene før du løser dem
Langsom software er en af de hyppigste klager. Men årsagen kan ligge mange steder: i databaseforespørgsler, i serverbelastning, i klientens browser, i netværkskald til tredjeparter eller i ineffektiv kode.
Profileringsværktøjer hjælper med at kortlægge præcis, hvor tid og ressourcer bruges. Det er langt mere effektivt end at gætte sig frem. Typiske fund inkluderer:
- N+1-problemer i databasekald: Systemet forespørger databasen én gang for hvert element i en liste, frem for én samlet forespørgsel. Det kan gøre en side 10 gange langsommere end nødvendigt.
- Manglende indeksering: Databasetabeller uden de rigtige indekser tvinger systemet til at gennemsøge store mængder data ved hvert opslag.
- Tunge synkrone processer: Opgaver der blokerer brugergrænsefladen, mens de kører i baggrunden, og som bør flyttes til asynkrone køer.
- Manglende caching: Data der hentes fra bunden ved hvert besøg, selvom det sjældent ændrer sig.
Selv mindre justeringer her kan have mærkbar effekt. Og effekten af hurtigere software mærkes ikke kun internt, det påvirker også brugertilfredshed og konverteringsrater direkte.

Arkitektur og skalerbarhed
Mange platforme er bygget til en bestemt skala og begynder at knage, når trafikken eller datamængden vokser. Her er det nødvendigt at kigge på selve arkitekturen.
To af de mest almindelige skift er:
Fra monolit til modulær arkitektur
En monolit er en platform hvor al funktionalitet er tæt sammenflettet i én stor kodebase. Det er fint i starten, men gør det svært at skalere og vedligeholde. En modulær arkitektur, eller i mere ekstreme tilfælde en microservices-tilgang, opdeler systemet i adskilte dele, der kan opdateres og skaleres uafhængigt af hinanden.
Det er ikke et skift man foretager på én gang. Langt de fleste vellykkede migreringer sker gradvist: man udskiller én del ad gangen, tester grundigt og fortsætter.
Horisontal frem for vertikal skalering
Vertikal skalering betyder at give serveren mere hukommelse og processorkraft. Det virker, men har et loft. Horisontal skalering betyder at køre flere servere side om side og fordele belastningen. Det kræver at platformen er bygget til det, men giver langt bedre muligheder på lang sigt.
Hvis man overvejer, hvornår det giver mening at lade specialister se på arkitekturen, er det relevant at læse mere om, hvornår specialudviklet software giver mere mening end standardløsninger, det samme spørgsmål gælder for arkitekturvalg.
Sikkerhed som løbende praksis, ikke engangsopgave
Sikkerhed er en af de første ting der nedprioriteres i en travl hverdag, og en af de dyreste ting at rette op på i bagklogskabens lys. En optimeringsrunde er et oplagt tidspunkt at gennemgå platformens sikkerhedsstatus.
Konkrete ting at kigge på:
- Forældede afhængigheder og pakker med kendte sårbarheder
- Manglende eller svag autentificering og adgangsstyring
- Data der transmitteres eller gemmes ukrypteret
- Manglende logning og overvågning, der gør det svært at opdage angreb
- Inputvalidering der kan åbne for SQL-injektion eller cross-site scripting
Mange af disse problemer løses med relativt simple ændringer, men kræver at nogen faktisk gennemgår koden systematisk. Automatiserede sikkerhedsscannere kan hjælpe, men erstatter ikke en manuel gennemgang af kritiske dele af systemet.
Kode og vedligeholdbarhed
Teknisk gæld er uundgåeligt i ethvert system der har eksisteret i et par år. Spørgsmålet er, om det er håndterbart eller ved at løbe løbsk.
Tegn på at vedligeholdsbyrden er for høj inkluderer: at det tager uforholdsmæssigt lang tid at implementere selv simple ændringer, at udviklere er bange for at røre bestemt kode, og at der jævnligt opstår fejl i dele af systemet man ikke har ændret på.
Her hjælper det at arbejde med:
- Refaktorering: Omskrivning af kode der virker, men er svær at forstå eller udvide, uden at ændre dens funktion.
- Automatiserede tests: Tests giver udviklerne tryghed til at ændre kode uden at bryde noget. Et system uden tests er svært at optimere uden risiko.
- Dokumentation: Kritiske dele af systemet bør dokumenteres, så ny- og eksisterende udviklere kan forstå systemets logik uden at skulle læse al koden.
God vedligeholdbarhed er ikke kun et internt anliggende. Det påvirker direkte, hvor hurtigt man kan reagere på markedet og implementere nye funktioner.

Integrationer og tredjepartsafhængigheder
De fleste platforme er afhængige af eksterne tjenester: betalingsgateway, booking, notifikationer, analyse, login og meget mere. Disse integrationer er ofte bygget hurtigt og aldrig siden kigget på.
En gennemgang af integrationer bør besvare:
- Bruges alle integrationer stadig, eller er der tjenester man betaler for uden at bruge dem?
- Er API-kald håndteret korrekt, med fejlhåndtering og fallback?
- Er der risiko for at en enkelt tredjepartstjeneste kan nedlægge hele platformen, hvis den fejler?
- Er der nyere eller bedre alternativer til de integrationer der bruges?
Det er også værd at overveje, om noget der i dag løses via tredjeparter, med fordel kan bygges ind i platformen selv. Det øger kontrollen og reducerer afhængigheder. Læs eventuelt mere om processen med udvikling af hjemmesider og hvad man bør overveje fra starten, mange af de samme principper gælder for platformsudvikling generelt.
Overvågning og datadrevet beslutningstagning
Man kan ikke optimere det man ikke kan måle. En platform uden ordentlig overvågning er som at køre bil uden instrumentbræt: man opdager problemerne for sent og forstår ikke årsagen.
Grundlæggende overvågning bør dække:
- Responstider og fejlrater for centrale funktioner
- Serverressourcer: CPU, hukommelse og diskplads
- Brugeradfærd, hvor falder folk fra, hvad bruges og hvad bruges ikke?
- Alarmer der adviserer, når noget er galt, frem for at man opdager det via klager fra brugere
Gode overvågningsdata giver også et stærkt grundlag for at prioritere fremtidige optimeringer. I stedet for at basere beslutninger på mavefornemmelser baserer man dem på faktiske mønstre.
Vil man forstå, hvordan tekniske valg også påvirker platformens synlighed udadtil, er artiklen om webudvikling og SEO relevant læsning.
Hvad kræver det at gennemføre en optimering?
En vellykket optimering af en softwareplatform kræver tre ting: en klar forståelse af udgangspunktet, prioritering af indsatsen og kompetente udviklere der kender den type system.
Det er sjældent én persons opgave. De bedste resultater opnås typisk med en kombination af interne ressourcer der kender forretningslogikken, og eksterne udviklere der bringer friske øjne og teknisk dybde til koden.
Har man brug for hjælp til at vurdere en platforms tilstand og kortlægge, hvad der giver mest mening at gøre, er det en god idé at søge rådgivning hos et team med erfaring i netop denne type arbejde. Hos Sahari arbejder vi med softwareudvikling og platformsoptimering, og du er velkommen til at tage kontakt for en uforpligtende snak om din situation.