Dette er den artikel vi ønsker vi havde haft, da vi startede med at bygge backends for kunder. Den samler alt det vi har lært om at vælge teknologi, designe systemer, og undgå de fejl der koster tid og penge.
Hvem er denne guide til?
- Startup-founders der skal vælge deres første tech stack
- Tech leads der overvejer at modernisere eksisterende systemer
- Udviklere der vil forstå de store linjer bag arkitektur-beslutninger
- Decision-makers der skal vurdere tekniske anbefalinger
Del 1: Hvad skal din backend kunne?
Før du vælger teknologi, skal du forstå dine krav. De fleste projekter fejler ikke på grund af forkert framework, de fejler fordi kravene ikke var klare.
De fire dimensioner
1. Performance-krav
- Hvor mange requests per sekund?
- Hvad er acceptable responstider?
- Har du real-time behov?
2. Skalerings-krav
- Forventer du 100 eller 100.000 brugere?
- Er load konstant eller variabelt?
- Skal du kunne skalere geografisk?
3. Data-krav
- Relationel eller dokument-baseret data?
- Hvor meget data skal du håndtere?
- Compliance og GDPR-krav?
4. Team-krav
- Hvad kan dit team i dag?
- Hvor hurtigt skal I kunne hyre?
- Hvor lang tid har I til at lære nyt?
Den vigtigste indsigt
Team-krav trumfer tekniske krav i 90% af tilfældene.
Den bedste arkitektur er den dit team kan bygge, vedligeholde og forstå. En middelmådig løsning der er veldokumenteret og velforstået slår en "perfekt" løsning ingen forstår.
Del 2: Sprog og frameworks
Startup-stadiet (0-10 medarbejdere)
På dette stadie er hastighed afgørende. Du skal validere idéer, ikke bygge det perfekte system.
Anbefaling: Node.js + TypeScript eller Python
| Fordel | Hvorfor det betyder noget |
|---|---|
| Hurtig udvikling | Du kan shippe features på dage, ikke uger |
| Stort talent-pool | Nemt at hyre eller finde freelancere |
| Modent økosystem | Et library til alt du skal bruge |
| Lav cost | Billig hosting, billige udviklere |
Undgå: Rust, Go, Elixir - medmindre dit team allerede kan det. Du har ikke tid til at lære nyt nu.
Vækst-stadiet (10-50 medarbejdere)
Nu begynder performance at betyde noget. Du har brugere, du har data, og du har teknisk gæld.
Anbefaling: Behold det meste, optimér det kritiske
Dette er stadiet hvor mange laver den fejl at rewrite hele systemet. Lad være.
I stedet:
- Identificér de 20% der skaber 80% af problemerne
- Optimér eller rewrite kun de dele
- Hold resten stabilt
Godt tidspunkt at introducere:
- Go for performance-kritiske services
- PostgreSQL migrering hvis du stadig er på NoSQL
- Ordentlig caching (Redis)
- Message queues (RabbitMQ, SQS)
Enterprise-stadiet (50+ medarbejdere)
Nu har du dedikerede teams, compliance-krav, og systemer der skal køre i 10+ år.
Anbefaling: Stabilitet og vedligeholdelse over cutting-edge
| Valg | Begrundelse |
|---|---|
| Java/Kotlin eller Go | Modne, stabile, let at hyre |
| PostgreSQL | Bevist i årtier, fantastisk tooling |
| Kubernetes | Standardiseret infrastruktur |
| Terraform | Reproducerbare deploys |
Overvej Rust når: performance er differentierende, du har 6+ måneder til at bygge kompetence, og du kan tiltrække Rust-udviklere.
Del 3: Database-arkitektur
Den relationelle standard
PostgreSQL er det rigtige valg for 90% af projekter. Det er ikke sexet, men det virker.
Hvornår PostgreSQL:
- Du har strukturerede data
- Du har brug for ACID transaktioner
- Du vil have et aktivt community
- Du vil undgå vendor lock-in
Hvornår NoSQL (MongoDB, DynamoDB):
- Ekstremt variabel schema
- Web-skala læsninger (millioner per sekund)
- Du ved hvad du gør (virkelig)
Caching-strategi
Cache er ikke valgfrit i 2026. Spørgsmålet er hvordan.
Level 1: CDN
- Statisk content (billeder, CSS, JS)
- Edge caching for API responses
- Vercel, Cloudflare, eller AWS CloudFront
Level 2: Application cache
- Redis for sessions og hot data
- In-memory cache for computed values
- Cache invalidation strategi (det svære)
Level 3: Database query cache
- Materialized views
- Query result caching
- Connection pooling (PgBouncer)
Data-patterns der skalerer
Event Sourcing: Gem alle ændringer som events. Dyrt at implementere, men giver fuld audit trail og mulighed for at "rejse i tiden".
CQRS: Separer læse- og skrive-modeller. Godt når læse-patterns er meget anderledes end skrive-patterns.
Saga Pattern: Koordiner distribuerede transaktioner. Nødvendigt når du har microservices der skal arbejde sammen.
Del 4: Arkitektur-patterns
Monolith vs Microservices
Start med monolith. Altid.
Microservices løser organisatoriske problemer, ikke tekniske. Hvis du har ét team, har du ikke brug for microservices.
| Monolith | Microservices |
|---|---|
| 1 deployable | Mange deployables |
| Simpel debugging | Distribueret tracing nødvendigt |
| Simpel lokal udvikling | Kompleks lokal setup |
| Alle teams deler kodebase | Teams ejer separate services |
Migrér til microservices når:
- Du har 3+ teams der blokerer hinanden
- Dele af systemet har meget forskellige skaleringsbehovs
- Du har DevOps-kapacitet til at håndtere kompleksiteten
API Design
REST for de fleste use cases
- Simpelt, velforstået
- Godt cachet på HTTP-niveau
- Fantastisk tooling
GraphQL når:
- Mange forskellige klienter med forskellige data-behov
- Du har komplekse, nested data-strukturer
- Frontend-teamet vil have mere kontrol
gRPC for:
- Service-til-service kommunikation
- Streaming
- Performance-kritiske paths
Asynkrone patterns
Ikke alt skal ske synkront. Message queues er din ven.
Brug queues til:
- Email/SMS sending
- Image processing
- Rapportgenerering
- Alt der kan vente 5 sekunder
Populære valg:
- RabbitMQ - Simpelt, pålideligt
- AWS SQS - Managed, skalerer uendeligt
- Kafka - For store datamængder og event streaming
Del 5: Infrastruktur
Hosting-valg
| Stadie | Anbefaling | Hvorfor |
|---|---|---|
| MVP | Vercel/Railway | Hurtigst i gang |
| Startup | AWS/GCP med managed services | Fleksibilitet |
| Enterprise | AWS/Azure med Kubernetes | Kontrol og compliance |
Infrastructure as Code
Fra dag ét skal din infrastruktur være reproducerbar.
Minimum:
- Environment variabler i
.env(aldrig i git) - Docker for lokal udvikling
- CI/CD pipeline (GitHub Actions)
Vækst:
- Terraform for cloud resources
- Separate staging/production environments
- Automatiske database backups
Enterprise:
- Kubernetes for container orchestration
- GitOps for deployments
- Disaster recovery plan
Monitoring og Observability
Du kan ikke fixe hvad du ikke kan se.
De tre søjler:
-
Logs - Hvad skete der?
- Strukturerede logs (JSON)
- Centraliseret logging (Datadog, Grafana Loki)
- Log retention policy
-
Metrics - Hvordan performer systemet?
- Request latency
- Error rates
- Resource utilization
- Business metrics (signups, revenue)
-
Tracing - Hvor gik det galt?
- Distributed tracing (Jaeger, Datadog APM)
- Request correlation IDs
- Performance bottleneck identification
Del 6: Sikkerhed
Basis der ikke kan springes over
- HTTPS everywhere - Ingen undtagelser
- Input validation - Aldrig stol på bruger-input
- SQL injection prevention - Brug prepared statements
- Authentication - JWT eller sessions, ikke begge rodet sammen
- Authorization - Tjek permissions på HVER request
- Secrets management - Aldrig i kode, brug Vault eller cloud secrets
GDPR og Compliance
Hvis du opererer i EU:
- Data processing agreements med alle tredjeparter
- Privacy policy der rent faktisk forklarer hvad I gør
- Mulighed for data export og sletning
- Data retention policy
- Incident response plan
Del 7: De dyre fejl
Fejl 1: Premature optimization
Symptom: Bruger 3 uger på at vælge det "perfekte" caching-lag før du har 100 brugere.
Kur: Ship først, optimér når du har data der viser et problem.
Fejl 2: Resume-Driven Development
Symptom: Vælger Rust/Kubernetes/GraphQL fordi det ser godt ud på CV.
Kur: Vælg teknologi baseret på projektets behov, ikke dine karrieremål.
Fejl 3: Omskrivninger i stedet for refaktorering
Symptom: "Det nuværende system er så dårligt, vi må starte forfra."
Kur: Refaktorér gradvist. Omskrivninger tager altid 3x længere end estimeret.
Fejl 4: Microservices for tidligt
Symptom: 3 udviklere vedligeholder 12 services.
Kur: Microservices løser organisatoriske problemer. Har du ikke problemet, lav ikke løsningen.
Fejl 5: Ingen observability
Symptom: "Brugerne siger siden er langsom, men jeg kan ikke se noget i logs."
Kur: Monitoring fra dag ét. Det koster en time at sætte op og sparer uger i debugging.
Del 8: Checkliste til dit næste projekt
Før du skriver kode
- Krav er dokumenteret
- Team-kompetencer er vurderet ærligt
- Budget og tidslinje er realistisk
- Success-kriterier er defineret
Teknologi-valg
- Sprog passer til teamet
- Database passer til data-modellen
- Hosting passer til budget og compliance
- Tredjeparter er evalueret
Infrastruktur
- Version control (git)
- CI/CD pipeline
- Logging og monitoring
- Backup-strategi
- Secrets management
Sikkerhed
- HTTPS
- Authentication/Authorization
- Input validation
- GDPR compliance (hvis relevant)
Konklusion
Backend-arkitektur handler ikke om at vælge de nyeste teknologier. Det handler om at bygge systemer der:
- Løser forretningens problemer - ikke tekniske problemer ingen har
- Kan vedligeholdes - af det team du har, ikke det team du drømmer om
- Kan skaleres - når behovet opstår, ikke før
- Er sikre - fordi du ikke har råd til at lade være
Den bedste arkitektur er den kedelige arkitektur der bare virker.