Skip to main content

GCP Architecture — Cloud Run + Cloud SQL

GCP Architecture for Drop

Dato: 2026-02-18 Region: europe-north1 (Finland — nærmest Norge) Kontekst: Migrering fra Fly.io shared-cpu-1x som takler ~25 samtidige brukere


Nåværende Fly.io vs GCP — Sammenligning

Tier 1: Minimum (Dev/Demo) — ~25 brukere

Komponent Fly.io (nå) GCP ekvivalent GCP kostnad
Compute shared-cpu-1x (256MB) Cloud Run: 1 vCPU, 512MB ~$0 (free tier)
Database SQLite på Fly Volume Cloud SQL db-f1-micro (0.6GB, 10GB) ~$9/mnd
Cache Ingen Ingen $0
Totalt ~$5/mnd ~$9/mnd
Kapasitet ~25 samtidige ~25 samtidige

Tier 2: Pilot (SpareBank 1 demo) — ~100 brukere

Komponent GCP tjeneste Spesifikasjon Kostnad
Compute Cloud Run 2 vCPU, 1GB RAM, min 1 instans ~$15/mnd
Database Cloud SQL db-g1-small (1.7GB, 20GB SSD) ~$30/mnd
Cache Memorystore Redis Basic 1GB ~$35/mnd
CDN Cloud CDN 10GB egress ~$1/mnd
Secrets Secret Manager 10 secrets ~$0 (free tier)
Monitoring Cloud Monitoring Basic ~$0 (free tier)
Totalt ~$81/mnd
Kapasitet ~100-150 samtidige

Tier 3: Produksjon (Ekte brukere) — ~500+ brukere

Komponent GCP tjeneste Spesifikasjon Kostnad
Compute Cloud Run 2 vCPU, 2GB RAM, min 2 instanser, auto-scale til 10 ~$50/mnd
Database Cloud SQL Enterprise: 2 vCPU, 8GB RAM, 50GB SSD, HA ~$150/mnd
Cache Memorystore Redis Standard 1GB (HA) ~$70/mnd
CDN Cloud CDN + Load Balancer Global ~$25/mnd
Secrets Secret Manager ~$0
Monitoring Cloud Monitoring + Logging ~$10/mnd
Backup Automated DB backup ~$5/mnd
Totalt ~$310/mnd
Kapasitet ~500-1000 samtidige

Cloud Run Pricing (Tier 1 region)

Ressurs Pris Gratis tier
CPU $0.000024/vCPU-sekund 180,000 vCPU-sek/mnd
Minne $0.0000025/GiB-sekund 360,000 GiB-sek/mnd
Forespørsler $0.40/million 2 millioner/mnd
Egress $0.12/GB (etter 1GB gratis) 1 GB/mnd

Gratis tier dekker: ~50 timer med 1 vCPU + 256MB — nok for dev/staging med lav trafikk.

Viktig: Gratis tier gjelder kun us-central1/us-east1/us-west1. I europe-north1 faktureres ALT fra første bruk — men dekkes av $300 free trial credits.

Cloud SQL PostgreSQL Pricing

Instanstype vCPU RAM Pris (ca.)
db-f1-micro Delt 0.6 GB ~$9/mnd
db-g1-small Delt 1.7 GB ~$27/mnd
db-custom-2-8192 2 8 GB ~$130/mnd

Lagring: ~$0.17/GB/mnd (SSD) Backup: ~$0.08/GB/mnd


Deploy-arkitektur på GCP

┌─────────────────────────────────────────────┐
│                 Cloud CDN                    │
│          (statiske filer + caching)          │
└──────────────────┬──────────────────────────┘
                   │
┌──────────────────▼──────────────────────────┐
│            Cloud Run Service                 │
│     drop-web (Next.js standalone)            │
│     Region: europe-north1                    │
│     Auto-scale: 0-10 instanser               │
│     CPU: 1-2 vCPU, RAM: 512MB-2GB            │
└──────┬──────────────────┬───────────────────┘
       │                  │
┌──────▼──────┐    ┌──────▼──────┐
│  Cloud SQL  │    │ Memorystore │
│ PostgreSQL  │    │    Redis    │
│ europe-n1   │    │  (cache)    │
│ Private IP  │    │  Basic 1GB  │
└─────────────┘    └─────────────┘

Alt: Serverless VPC Connector for private nettverk

Migreringssteg

Steg 1: Containerisering (dag 1)

  • Dockerfile allerede eksisterer (Node 22 Alpine)
  • Bytt SQLite → PostgreSQL via DATABASE_URL env
  • Drop har allerede PostgreSQL-adapter i koden

Steg 2: GCP-oppsett (dag 1-2)

# Opprett prosjekt (allerede: project-72cd303f)
gcloud config set project project-72cd303f-66e5-46ee-a4c

# Aktiver APIer
gcloud services enable run.googleapis.com
gcloud services enable sqladmin.googleapis.com
gcloud services enable secretmanager.googleapis.com
gcloud services enable cloudbuild.googleapis.com

# Cloud SQL instans
gcloud sql instances create drop-db \
  --database-version=POSTGRES_15 \
  --tier=db-f1-micro \
  --region=europe-north1 \
  --storage-size=10GB \
  --storage-type=SSD

# Opprett database
gcloud sql databases create drop --instance=drop-db

# Opprett bruker
gcloud sql users create drop-user \
  --instance=drop-db \
  --password=<generert>

Steg 3: Deploy til Cloud Run (dag 2)

# Build og push container
gcloud builds submit --tag gcr.io/PROJECT_ID/drop-web

# Deploy
gcloud run deploy drop-web \
  --image gcr.io/PROJECT_ID/drop-web \
  --platform managed \
  --region europe-north1 \
  --allow-unauthenticated \
  --memory 512Mi \
  --cpu 1 \
  --min-instances 0 \
  --max-instances 5 \
  --set-env-vars NODE_ENV=production \
  --set-cloudsql-instances PROJECT_ID:europe-north1:drop-db \
  --set-secrets DATABASE_URL=drop-db-url:latest

Steg 4: DNS + SSL (dag 2)

# Custom domain
gcloud run domain-mappings create \
  --service drop-web \
  --domain drop-dev.alai.no \
  --region europe-north1

Steg 5: CI/CD (dag 3)

  • Cloud Build trigger fra GitHub push
  • Automatisk deploy ved push til main/staging branch
  • Build + deploy tar ~2-3 minutter

Kostnadsdekning

Kilde Beløp Dekker
GCP Free Trial $300 (kr 2,884) Tier 1+2 i ~3 mnd
GCP Startups Program (søkt) Inntil $100,000 Alt i 1-2 år
Microsoft Founders Hub (søkt) Inntil $150,000 Azure Azure-migrering senere

Med free trial alene: $300 / ~$9 per mnd (Tier 1) = 33 måneder for dev. Med Tier 2 ($81/mnd) = ~3.7 måneder.


Alternativt: Billigere cache enn Memorystore

Memorystore Redis (1GB basic = ~$35/mnd) er dyrt for MVP. Alternativer:

Alternativ Pris Fordel
Upstash Redis (serverless) Gratis opptil 10K kommandoer/dag Null kostnad for dev
In-memory cache i Cloud Run $0 Forsvinner ved restart
Cloud Run + node-cache $0 Enkel, per-instans cache

Anbefaling: Start uten Redis. Legg til Upstash eller in-memory cache først. Memorystore kun hvis vi trenger delt cache mellom instanser.


Kapasitetsestimat per tier

Tier Samtidige brukere Responstid (p95) Kostnad
Tier 1 (db-f1-micro, 1 vCPU) ~25-30 <200ms ~$9/mnd
Tier 2 (db-g1-small, 2 instanser) ~100-150 <500ms ~$80/mnd
Tier 3 (2 vCPU DB, auto-scale) ~500-1000 <300ms ~$310/mnd

PostgreSQL alene gir ~2-3x bedre concurrent performance enn SQLite pga. connection pooling og parallelle skrivinger.