system-adminUpdated 2026-04-17

Deploy on GCP

What this covers

GCP-specific architecture for a production Tessallite deployment: Cloud Run services, Cloud SQL, load balancers, service account permissions, health check configuration, and instance scaling recommendations.

Architecture on GCP

Each Tessallite service runs as a separate Cloud Run service. The internal PostgreSQL database is replaced by a Cloud SQL for PostgreSQL instance. Two load balancers handle external traffic:

JDBC and port 5433 on Cloud Run

Cloud Run natively serves HTTP and HTTPS. It does not natively accept raw TCP connections on arbitrary ports such as 5433. Two options exist:

The XMLA endpoint (port 8080) does not have this limitation and runs on Cloud Run without modification.

Environment variable differences from local

Cloud SQL connection

Service account permissions

RoleRequired byPurpose
roles/cloudsql.clientAll except gatewayAuthenticate to Cloud SQL
roles/run.invokerAll servicesAllow inter-service HTTP calls within Cloud Run
roles/artifactregistry.readerAll servicesPull images from Artifact Registry
roles/secretmanager.secretAccessorfrontend, services using secretsRead secrets from Secret Manager at startup

Health checks

Each service exposes GET /api/health on its HTTP port. A healthy response returns HTTP 200 with {"status":"ok"}. Configure the Cloud Run readiness probe with an initial delay of 10 seconds and a period of 30 seconds.

Minimum instances

Estimated cost

For light usage (development or small team): Cloud SQL db-f1-micro plus Cloud Run on-demand pricing runs approximately $30–60 per month.

Related