Skip to main content
Deploy Observal as a distributed, highly available stack on AWS or GCP using Terraform. Best for SLA-bound deployments, teams over 50 users, and any environment where uptime and horizontal scaling matter. End state: a fully managed Observal install with autoscaling compute, managed databases with automated failover, encrypted secrets, centralized logging, automated backups, and HTTPS on your domain — provisioned with a single terraform apply.

When to use this vs. single-node

Choose your cloud

Observal ships Terraform modules for both AWS and GCP. They provision equivalent architectures using each cloud’s native managed services.

AWS

Full walkthrough: AWS deployment with Terraform Quick start:
Apply takes 20–30 minutes (RDS Multi-AZ provisioning dominates). Baseline cost: **$255/mo** in us-east-1.

GCP

Full walkthrough: GCP deployment with Terraform Quick start:

Day-2 operations

These apply to both AWS and GCP. Cloud-specific commands are in the respective guides.

Upgrade to a new release

The init task re-runs migrations. Compute services roll over with zero downtime.

Roll back

Set image_tag to the previous version and terraform apply. Database data is not affected. If the failed version ran a destructive migration (rare, always called out in the CHANGELOG), restore from the pre-upgrade database backup.

Scale up

Adjust variables in terraform.tfvars:

Tear down

On prod, databases have deletion protection enabled. Disable manually before destroy if you really mean it.

Cost comparison

AWS (us-east-1, on-demand)

Set environment = "staging" to halve the bill (single-AZ RDS, one Redis node, no deletion protection).

GCP (us-central1, on-demand)

GCP is typically cheaper due to Cloud Run’s per-request billing and no NAT Gateway equivalent charge.

Production hardening checklist

Applies to both clouds. See the cloud-specific guides for implementation details.
  • Enable remote Terraform state (S3 + DynamoDB on AWS, GCS on GCP)
  • Restrict load balancer ingress to known CIDRs
  • Enable cloud security services (GuardDuty + Config on AWS, Security Command Center on GCP)
  • Set up alerting on database CPU, memory, and 5xx error rates
  • Attach a WAF to the load balancer
  • Enable Redis transit encryption
  • Configure SSO (SAML or OIDC)
  • Test the backup and restore procedure end-to-end
  • Replace the GitHub tarball pull in the data host bootstrap with an artifact you control

Next