Skip to content

Craft Easy API — Hosting & Infrastrukturanalys

Version: 2.0 Datum: 2026-03-27 Relaterat: specification.md


Beslut

Allt på Azure. Cosmos DB vCore som databas. En plattform, en faktura, krediter betalar.

Atlas är en backup-plan om Cosmos-kompatibilitet visar sig vara ett problem — inte en utgångspunkt.


Innehållsförteckning

  1. Strategi
  2. Plattformen: Azure
  3. Databasen: Cosmos DB vCore
  4. Arkitektur per scenario
  5. Prisanalys med Azure-kredit
  6. Disaster Recovery
  7. Uppgraderingsväg och Atlas-eskalering
  8. Referens: Fullständig tjänstejämförelse

1. Strategi

Principer

Princip Regel
En plattform Allt på Azure. Inga delade setups mellan GCP/Azure/Atlas.
Krediter först Azure-krediten (2 000 SEK/mån) ska täcka så mycket som möjligt.
Cosmos först Cosmos DB vCore tills ett projekt bevisar att det behöver Atlas.
Byt vid behov Om Cosmos-kompatibilitet biter → byt det projektet till Atlas. Tar 5 min.
Scale-to-zero Alla hobby/test-projekt skalar till noll. Betala bara vid trafik.

Varför inte split GCP + Atlas?

Split (GCP + Atlas) Allt Azure
Leverantörer 2-3 1
Konton att hantera 3 (GCP + Atlas + Azure) 1
Fakturor 2-3 1
Azure-kredit utnyttjad Nej (slösas bort) Ja, fullt
Gratis DB-lagring 512 MB (Atlas M0) 32 GB (Cosmos Free)
Gratis backup Nej Ja (PITR 7 dagar)
MongoDB-kompatibilitet 100% ~90%
Komplexitet Hög Låg

De 10% kompatibilitetsskillnaden i Cosmos vCore handlar om avancerade aggregation-operatorer och edge cases. Hobby-projekt och de flesta produktionsprojekt träffar aldrig dessa.


2. Plattformen

Azure Container Apps

Egenskap Detalj
Typ Serverless containers
Skalning 0 → N replicas (scale-to-zero)
Pris ~$0.000024/vCPU-sek + ~$0.000003/GiB-sek
Free tier 180K vCPU-sek + 360K GiB-sek/mån
TLS Managed, gratis
Custom domains Ja
VNet Full integration med Private Endpoints

Varför Container Apps? - FastAPI körs i en container → perfekt match - Scale-to-zero → hobby-projekt kostar ingenting - Samma tjänst från hobby till produktion — bara config ändras - Kredit-täckt


3. Databasen

Cosmos DB for MongoDB vCore

Egenskap Detalj
Motor Riktig MongoDB-motor (inte RU-emulering)
Kompatibilitet ~90% MongoDB 7.x (wire protocol)
Free tier 32 GB lagring, 8 GB RAM, burstable
Backup Inkluderat — PITR 7-35 dagar
Azure-native Private Link, Azure AD, VNet, en faktura
Kredit-täckt Ja (Azure-tjänst)

Vad fungerar

  • CRUD (insert, find, update, delete)
  • Aggregation pipeline (de vanligaste operatorerna)
  • Transactions (multi-document)
  • Change streams
  • Beanie ODM
  • Indexes (alla standardtyper)

Kända begränsningar (de ~10%)

Begränsning Påverkan Workaround
Vissa avancerade aggregation-operatorer Låg — de flesta projekt använder dem inte Förenkla query eller byt till Atlas
Ingen Atlas Search Medium — om du behöver fulltext Azure AI Search (separat)
Sharding mer begränsad Låg — relevant först vid >100 GB Vertikal skalning eller Atlas
Viss fördröjning i feature-releaser Låg Vänta eller Atlas

Varför inte Cosmos DB RU-baserad?

Använd ALDRIG RU-varianten. Den är ett translationslager, inte riktig MongoDB. Cosmos vCore är en helt annan produkt — den kör faktisk MongoDB-motor.


4. Arkitektur per scenario

Alla projekt (hobby, test, produktion)

┌──────────────────────────────────────────────────────┐
│                        Azure                          │
│                                                       │
│  ┌─────────────────────────────────────────────────┐ │
│  │           Container Apps Environment             │ │
│  │                                                  │ │
│  │  ┌──────────┐ ┌──────────┐ ┌────────┐          │ │
│  │  │Projekt 1 │ │Projekt 2 │ │Proj. N │  ...     │ │
│  │  │(service) │ │(service) │ │        │          │ │
│  │  │scale: 0-N│ │scale: 0-N│ │        │          │ │
│  │  └────┬─────┘ └────┬─────┘ └───┬────┘          │ │
│  └───────┼─────────────┼───────────┼────────────────┘ │
│          │             │           │                   │
│  ┌───────▼─────────────▼───────────▼────────────────┐ │
│  │        Cosmos DB vCore (Free / M30 / M40)         │ │
│  │                                                    │ │
│  │   DB: projekt1   DB: projekt2   DB: projektN      │ │
│  │                                                    │ │
│  │   Free: 32 GB, 8 GB RAM, PITR backup              │ │
│  └────────────────────────────────────────────────────┘ │
│                                                         │
│  ┌────────────┐  ┌──────────┐  ┌───────────────────┐  │
│  │ ACR (Basic)│  │Key Vault │  │ Log Analytics     │  │
│  │ Container  │  │ Secrets  │  │ Monitor + Alerts  │  │
│  │ images     │  │          │  │                   │  │
│  └────────────┘  └──────────┘  └───────────────────┘  │
└─────────────────────────────────────────────────────────┘

Hobby/Test: Delad Cosmos Free

Alla hobby- och test-projekt delar samma Cosmos vCore Free-instans med separata databaser:

# Projekt 1
DATABASE_NAME=hobby-projekt1
MONGODB_URI=mongodb+srv://cosmos-free-instance...

# Projekt 2
DATABASE_NAME=hobby-projekt2
MONGODB_URI=mongodb+srv://cosmos-free-instance...

# ... samma connection string, olika databasnamn

32 GB delat mellan alla projekt. Mer än tillräckligt — Atlas M0 ger bara 512 MB.

Produktion: Dedikerad Cosmos-instans (eller Atlas)

När ett projekt går till produktion får det sin egen Cosmos-instans:

Hobby/Test:  Cosmos Free (delad)     → $0
Produktion:  Cosmos M30 + HA (egen)  → ~$680/mån (delvis kredit-täckt)
         eller
             Atlas M30 (egen)        → ~$600/mån (ej kredit-täckt)

5. Prisanalys med Azure-kredit

Azure-kredit: 2 000 SEK/mån (~$190 USD)

Krediten täcker alla Azure-tjänster. Gäller EJ Atlas (separat leverantör).

Hobby — 4 projekt

Komponent Tjänst ~Pris/mån
Compute 4 Container Apps (scale-to-zero) ~$0-15
Databas Cosmos vCore Free (32 GB, delad) $0
Registry ACR Basic $5
Monitoring Azure Monitor Free $0
Summa ~$5-20
Azure-kredit -$190
Ur fickan $0

Test/Staging — 1 projekt

Komponent Tjänst ~Pris/mån
Compute Container Apps (1 container, always-on) ~$15
Databas Cosmos vCore Free $0
Registry ACR Basic $5
Monitoring Azure Monitor $0
Summa ~$20
Azure-kredit -$190
Ur fickan $0

Produktion — full redundans, DR

Komponent Tjänst ~Pris/mån
Compute (Primary) Container Apps, 2 replicas, West Europe $80
Compute (DR) Container Apps, 1 replica, North Europe $50
Load Balancer Azure Front Door Standard $35
WAF Front Door WAF $20
Databas Cosmos vCore M30 + HA (backup inkluderat) $680
Registry ACR Standard (geo-replicated) $25
Secrets Key Vault Standard $5
Monitoring Monitor + Log Analytics (10 GB) $25
Alerting Monitor Alerts (10 rules) $5
Summa ~$925
Azure-kredit -$190
Ur fickan ~$735

Produktion med Atlas istället

Komponent Tjänst ~Pris/mån
Azure-infra (compute, LB, WAF, secrets, monitoring) $245
Atlas M30 + extra region + PITR $600
Summa ~$845
Azure-kredit (täcker bara Azure-infra) -$190
Ur fickan ~$655

Jämförelse — alla scenarier

Scenario Allt Azure + Cosmos Azure + Atlas Skillnad
Hobby (4 proj) $0 $0 Lika
Test $0 $57 (Atlas M10) Cosmos $57 billigare
Produktion $735 $655 Atlas $80 billigare
Hobby + Test + Prod (år) $8,820 $8,484 Atlas $336 billigare/år

Slutsats: Nästan identisk årskostnad (~$300 skillnad). Cosmos-vägen ger enklare setup (en leverantör). Atlas-vägen ger billigare produktion och 100% kompatibilitet.

Rekommendation: Kör Cosmos för allt. Om du stöter på kompatibilitetsproblem i ett produktionsprojekt → byt det till Atlas ($80/mån mer, 5 minuters arbete).


6. Disaster Recovery

Krav

Krav Mål
RTO < 4 timmar
RPO < 1 timme

Arkitektur

                    ┌─────────────────────────┐
                    │    Azure Front Door       │
                    │    (Global LB + WAF)      │
                    │    Health probes: /health  │
                    └─────────┬───────┬─────────┘
                              │       │
              ┌───────────────▼─┐   ┌─▼───────────────┐
              │  West Europe     │   │  North Europe    │
              │  (Primary)       │   │  (DR)            │
              │                  │   │                   │
              │  Container Apps  │   │  Container Apps   │
              │  2 replicas      │   │  1 replica        │
              └────────┬─────────┘   └────────┬──────────┘
                       │                      │
              ┌────────▼──────────────────────▼──────────┐
              │      Cosmos DB vCore M30 + HA             │
              │                                           │
              │  Primary (West EU) ←→ Standby (same AZ)  │
              │  Automatic failover: 15-30 sek            │
              │  PITR: 7-35 dagar (inkluderat)            │
              │  Geo-redundant backup                     │
              └───────────────────────────────────────────┘

Uppnått

Krav Mål Uppnått
RTO < 4 timmar < 2 minuter (Front Door failover + Cosmos HA)
RPO < 1 timme < 1 minut (HA standby + PITR)

7. Uppgraderingsväg och Atlas-eskalering

Från hobby till produktion

$0/mån    Cosmos Free (delad) + Container Apps (scale-to-zero)
  │       Krediten täcker allt.
  ▼       Projektet börjar få användare
$0/mån    Samma setup — Free-instansen klarar mer än du tror (32 GB, 8 GB RAM)
  ▼       Behöver mer: always-on, fler replicas
~$100     Cosmos Free + Container Apps (min 1 instance, always-on)
  │       Fortfarande kredit-täckt.
  ▼       Behöver mer DB: fler anslutningar, mer lagring
~$250     Cosmos M25 ($55) + Container Apps
  │       Kredit-täckt.
  ▼       Produktion: behöver HA, DR, multi-region
~$735     Cosmos M30+HA + Front Door + 2 regioner
  │       $190 kredit → betalar $735 ur fickan.
  ▼       Stöter på Cosmos-kompatibilitetsproblem?
~$655     Byt DB till Atlas M30 + multi-region
          $190 kredit täcker Azure-infra, Atlas separat.

När ska du byta till Atlas?

Byt bara om du stöter på ett konkret problem:

Symptom Orsak Åtgärd
Aggregation pipeline kraschar Operator saknas i Cosmos Byt till Atlas
Beanie-operation beter sig konstigt Cosmos-skillnad Byt till Atlas
Behöver Atlas Search / fulltext Finns inte i Cosmos Byt till Atlas
Prestanda otillräcklig trots uppgradering Cosmos-begränsning Byt till Atlas

Bytesprocess: Ändra MONGODB_URI i .env → deploy. Klart. Beanie och all kod fungerar identiskt.


8. Referens: Fullständig tjänstejämförelse

Compute

Kriterium Azure Container Apps GCP Cloud Run
Pris ~$0.000024/vCPU-sek ~$0.000024/vCPU-sek
Scale-to-zero Ja Ja
Cold start 2-5 sek 1-3 sek
Free tier 180K vCPU + 360K GiB 180K vCPU + 360K GiB + 2M req
VNet Utmärkt Bra
Azure-kredit Ja Nej

Databas

Kriterium Cosmos vCore Atlas Cosmos RU
MongoDB-kompatibilitet ~90% 100% ~60% (UNDVIK)
Beanie ODM Ja Ja Riskfyllt
Free tier lagring 32 GB 512 MB
Backup inkluderat Ja (PITR) Snapshots (PITR extra) Periodisk
Azure-kredit Ja Nej Ja
Azure AD Ja Nej Ja
Multi-cloud Nej Ja Nej
Atlas Search Nej Ja Nej
Vendor lock-in Medium Låg Hög

GCP native databas — finns det?

Nej. GCP har ingen MongoDB-kompatibel managed databas. Deras alternativ:

GCP-tjänst Typ MongoDB-kompatibel?
Firestore Dokumentdatabas Nej (annat query-språk)
Cloud Bigtable Wide-column Nej
Cloud SQL Relationsdatabas Nej
AlloyDB PostgreSQL Nej
Spanner Global SQL Nej

På GCP måste du använda Atlas eller självhanterad MongoDB.

Prisöversikt — alla konfigurationer

Med Azure-kredit (2 000 SEK ≈ $190/mån):

Konfiguration Hobby (4 proj) Test Produktion Prod/år
Azure + Cosmos (rekommenderat) $0 $0 $735 $8,820
Azure + Atlas $0 $57 $655 $8,484
GCP + Atlas (kredit slösas) $0 $67 $761 (+$190 slösad) $11,412*

* GCP-raden inkluderar den slösade Azure-krediten ($190×12 = $2,280/år) som alternativkostnad.

OBS: Priser är uppskattningar (Q1 2025). Verifiera med: - Azure Pricing Calculator - MongoDB Atlas Pricing - Azure-kredit: 2 000 SEK/mån vid kurs ~10.5 SEK/USD