SystemetRådgivningUdviklingArbejdePriser
Tilbage til artikler
2024-03 · 3 min.

Hvorfor simpel arkitektur altid vinder

Efter et årti med at bygge, redde og udskifte softwaresystemer har jeg lært én sandhed, der modsiger det meste af det, branchen prædiker: simpel arkitektur vinder altid.

På denne side
  • Rails-appen med fjorten services
  • Kompleksitetsskatten
  • Hvad "simpelt" rent faktisk betyder
  • Hvor simpelt bryder
  • Sådan vælger du, i praksis
Opdateret 2024-03
TL;DR
  • Kompleksitet er profitabel for bureauet, dyr for dig.
  • Hver service, kø og cache er en permanent vedligeholdelsesforpligtelse.
  • Start med en monolit. Splittes, når der er konkret evidens — ikke før.
  • Kedelig teknologi slår klog teknologi for ethvert system, der skal overleve sit team.

Rails-appen med fjorten services

For et par år siden blev jeg hentet ind for at kigge på et produkt, der ikke leverede. Teamet havde taget en fungerende monolit — en Rails-app med en Postgres-database, der lavede et par tusinde requests i minuttet — og brugt atten måneder på at splitte den op i fjorten services. De havde Kafka. De havde Kubernetes. De havde et service mesh. Det, de ikke havde, var et fungerende checkout-flow.

Deres arkitekturdiagram var smukt. Deres on-call-rotation var en horror-story. Den oprindelige product owner, der havde specced rebuildet til at starte med, havde sagt op seks måneder inde. Bureauet, der havde solgt dem rebuildet, var rykket videre til næste kunde.

Vi slettede ni services i den første måned. Omsætningen steg. Sider loadede hurtigere. Teamet begyndte at levere igen. Intet af det var klogt. Det var bare mindre.

Kompleksitetsskatten

Kompleksitet er ikke gratis, og den betales ikke én gang. Den betales hver dag, af hver person der skal ræsonnere over systemet. Den vokser eksponentielt.

Hver yderligere service er en ny deploy-pipeline, en ny runbook, et nyt sæt dashboards, et nyt sted en 2-om-natten-page kan komme fra. Hver distribueret transaktion er en ny mulighed for en halvt-skrevet tilstand. Hvert network-hop er latency, du ikke kan optimere væk, fordi netværket ikke er din kode.

Omkostningen er sjældent synlig på arkitekturdiagrammet. Den dukker op i velocity-grafen seks måneder senere og i den udvikler, der i stilhed opdaterer sin LinkedIn ved måned ni.

Kompleksitet er profitabel for bureauet. Det er dyrt for dig, for evigt.

Hvad "simpelt" rent faktisk betyder

Simpelt betyder ikke naivt, og det betyder ikke usofistikeret. Det betyder at vælge den mindst komplekse løsning, der opfylder det krav, du rent faktisk har i dag, med en klar vej til det krav, du måske har i morgen.

I praksis ser det som regel sådan her ud:

  • Én deploy-unit, indtil andet er bevist. En modulær monolit med klare interne grænser slår et distribueret system, du ikke har organisationen til at drive.
  • Kedelig infrastruktur. Postgres. En kø-tabel før en kø-service. En cron før en workflow-engine.
  • Kode, en kompetent mid-level kan læse på sin første dag uden en rundvisning.
  • Standarder frem for konfiguration. Hver config-knap er en fremtidig bug-rapport.

Hvor simpelt bryder

Simpelt er ikke altid det rigtige svar. Der er reelle øjeblikke, hvor omkostningen ved at forblive simpel er højere end omkostningen ved at splitte op. De ærlige signaler er:

  • Uafhængige skaleringsprofiler, der reelt divergerer — fx en lille synkron API foran en tung asynkron ML-pipeline.
  • Uafhængige fejl-domæner, hvor én del af systemet skal blive ved med at servere, når en anden er nede (betalinger vs. anbefalinger).
  • Uafhængige teams store nok til at eje og drive en service fra start til slut, inklusive on-call-rotation.

Hvis ingen af disse er sande i dag, har du ikke et microservices-problem. Du har et jeg-vil-have-microservices-på-mit-CV-problem, og det er meget dyrt at løse.

Sådan vælger du, i praksis

Før du tilføjer et nyt stykke infrastruktur — en kø, en cache, en anden service, en event-bus — så besvar fire spørgsmål højt, på skrift, foran de mennesker, der skal drive den:

  1. Hvilket konkret problem, observeret i produktion, løser det her?
  2. Hvad er det simpleste, der kunne løse det inde i det eksisterende system?
  3. Hvem er on-call for denne nye ting kl. 3 om natten, og har de accepteret?
  4. Hvordan sletter vi det, hvis vi tager fejl?

Kan du ikke svare på dem, træffer du ikke en arkitektonisk beslutning. Du dekorerer.

What to actually do
  • Vælg som standard én service, én database, én udrulning, indtil produktion fortæller dig andet.
  • Behandl hver ny infrastrukturdel som en permanent on-call-forpligtelse, ikke en funktion.
  • Skriv sletteplanen ned, før du skriver introduktionsplanen.
  • Optimér for den udvikler, der starter om 18 måneder, ikke den udvikler der forlod sidste kvartal.
  • Hvis en leverandør eller et bureau drager fordel af kompleksiteten, så få en second opinion.

Vil du have denne slags vurdering på dit projekt?

Jeg læser hver e-mail inden for én arbejdsdag. Tag et projekt, et tilbud eller et system, du sidder fast i.

Se Enterprise Starter
Flere artikler
  • 2026-05

    De 5 ufaktererede måneder skjult i hvert Contentful enterprise-build

    Hvert Contentful enterprise-build jeg har auditeret bærer de samme fem skjulte måneder: link-referencer, redirects, i18n, schema-drevne forms og type-sikkerhed. Ingen af dem er på SOW'en. Alle er på tidslinjen.

  • 2024-02

    Microservices-fælden

    Hvordan branchen overbeviste alle om, at de havde brug for distribuerede systemer, og hvorfor de fleste virksomheder ville have det bedre med en modulær monolit.

  • 2024-01

    Den reelle omkostning ved skræddersyet udvikling

    Skræddersyet software er ikke kun den indledende pris. Det er vedligeholdelse, opdateringer og opportunity cost ved ikke at bruge eksisterende løsninger.

Uafhængig teknologirådgivning og udvikling. København, Danmark.

Njalsgade 21F, 2. sal, København

CVR 45 44 13 93

nicklas@ceero.eu

WhatsApp +45 31 33 25 99

Arbejde

  • Enterprise Starter
  • Rådgivning
  • Udvikling
  • Arbejde
  • Kontakt

Ressourcer

  • Artikler
  • Guides
  • Gratis værktøjer
  • Om os

Andre steder

  • Sparro
  • Invigilo
  • e-sign
  • Privatlivspolitik

© 2026 Ceero ApS · CVR DK45441393. Alle rettigheder forbeholdes.

Bygget i København med Next.js, Contentful og nul konsulent-bullshit.