Files
Cibello-app/docs/14-infrastruktur.md
T
2026-08-05 19:21:11 +07:00

2.7 KiB
Raw Blame History

Del 14 Infrastruktur

Nu: befintlig server (spec §51, steg 1)

/opt/<slug>-platform/
  repo/          git-klon av detta repo
  secrets/       api.env, worker.env  (ägare: appens användare, chmod 600)
  backups/       logiska dumpar före varje deploy
  logs/          via Docker json-file (rotation 20 MB × 5)

Containrar (docker-compose.production.yml): app-api (1 CPU/768 MB, 127.0.0.1:4100 bakom er reverse proxy → https://), app-worker (1 CPU/768 MB), app-admin (nginx, 0.25 CPU/128 MB), app-redis (appendonly, 512 MB tak, noeviction BullMQ-krav). Allt som non-root, egna loggar, healthchecks. Deploy: infrastructure/deployment/deploy.sh bygger, tar dump (vägrar annars), migrerar, rullar om, healthcheckar, rullar tillbaka vid fel.

Databas: befintlig RDS-instans men separat databas + egen användare (create-database.sql) med minsta privilegier (create-database.sql). Ingen delning av QuixZoom-tabeller. S3: egen bucket <slug>-production med prefixen ur spec §53, SSE, block public access, lifecycle: temporary/ 7 dagar, scans 90 dagar (efter bekräftelse behövs originalbilden inte för funktion endast för samtyckt träning). Presignade URL:er för både upp- och nedladdning; mock-läget i dev speglar exakt samma flöde. Secrets: .env-filer nu → SSM Parameter Store i steg 2. Övervakning: infrastructure/monitoring/README.md (larmpunkter, correlation-id, healthchecks).

Kapacitet steg 1: ~5 000 registrerade/600 samtidiga utan svett trafiken är låg-QPS och det tunga (AI) är asynkront via kön.

Utvecklingsmiljö

docker-compose.dev.yml (Postgres 16 + Redis 7) → pnpm db:migrate && pnpm db:seedpnpm api:dev / worker:dev / admin:dev / mobile:start. AAMOS_MODE=mock fungerar helt utan nätverk.

Steg 2 (≈ >5 000 användare eller första driftsincidenten)

API/worker till ECS Fargate (Dockerfiles är redo), ALB framför, secrets till SSM, CloudWatch Container Insights. Databasen ligger kvar. Ingen appkodändring samma API-domän (spec §59).

Steg 3 (≈ >25 000 användare)

Egen VPC; egen RDS (flytt: replika → failover-fönster nattetid, dokumenterad pg_dump-fallback); ElastiCache Redis; S3+CloudFront för receptbilder; separata IAM-roller per tjänst; WAF på ALB. AAMOS förblir separat plattform bakom samma kontrakt. Motorerna är rena paket → kan brytas ut till egna tjänster om profilering någonsin motiverar det (sannolikt inte före 100k användare).

Backup & återställning

RDS automatiska snapshots (PITR) + logisk dump före deploy + veckodump till S3 med 30 dagars retention. Restore-test kvartalsvis mot staging, protokollfört en backup som inte testats räknas som obefintlig (spec §56).