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.