Infrastructure
Cloud-native. EU-resident. Auditable.
Production runs on Google Cloud Run in europe-west6 (Zurich) by default. Persistence in Cloud SQL PostgreSQL. Media in Google Cloud Storage. CI/CD through GitHub Actions. Schema migrations are additive-only and run as Cloud Run Jobs before the runtime deploys.
- Primary region
- europe-west6
- Compute
- Cloud Run
- Database
- Cloud SQL PG17
- Backup retention
- 30 days
Edge & regions
Deployment console.
Map of the global presence with p50 latency per region and the rolling deployment history.
app.screver.ch/infrastructure/deployment
InfrastructureDeploymentslug: deployment
⌘K
MK
Deployment & regions
Global presence
5 regions · all healthyPrimary
Zürich
eu-zrh-1
8ms
p50
Replica
Frankfurt
eu-fra-1
14ms
p50
Replica
Dublin
eu-dub-1
21ms
p50
Replica
Virginia
us-iad-1
92ms
p50
Replica
Singapore
ap-sin-1
184ms
p50
Deployment history
Last 24h| SHA | Branch | Env | Status | When |
|---|---|---|---|---|
| a4f2c91 | main | production | success | 4m |
| e72d018 | main | production | success | 2h |
| c1b9442 | release/3.4 | staging | success | 5h |
| 98ad11f | main | production | running | 6h |
| 7fc2009 | fix/cart | preview | success | 8h |
| 12bbf30 | main | production | rolled-back | 1d |
Pipeline
Push to production in one diagram.
bash
GitHub push to main
-> GitHub Actions CI
|- Lint + TypeScript check
|- Vitest + Playwright
|- Build 3 Docker images
|- staging runner (test Stripe key)
|- production runner (live Stripe key)
\- schema-push image (for migrations)
|- Run schema migration -> Cloud Run Job
|- Deploy STAGING -> Cloud Run (auto, min 0 instances)
\- Deploy PRODUCTION -> Cloud Run (manual gate, min 1)
|- Region: europe-west6 (Zurich)
|- Media: Google Cloud Storage
\- Database: Cloud SQL PostgreSQL 17Operational rules
Rules enforced by CI.
- Never scripted on production: products, orders, customers, users.
- Schema changes additive-only — ADD COLUMN IF NOT EXISTS, never DROP.
- Seed scripts localhost-only with runtime guards.
- Stripe sync requires explicit ALLOW_REMOTE=1 for non-local targets.
- Content push: pages + globals + media only; business data excluded.
- Backups: continuous WAL + daily snapshots, 30-day retention by default.
Keep reading
