Cloud PG production checklist
Replace feature checkboxes with verifiable questions and drills
1. Compatibility inventory
- What are the PostgreSQL major version, patch cadence, and end-of-support date?
- Are every required extension and its exact version present in
pg_extension? Is upgrade automatic, manual, or migration-based? - Which settings are immutable? Is
shared_preload_librariesavailable? - Are logical replication, slots, FDWs, event triggers, and required authentication supported?
- Which catalog, statistics, and superuser operations have platform-specific replacements?
- Have drivers, ORM, migrations, and backup tools passed the real delivery pipeline?
Store the answers as a machine-readable manifest bound to service SKU, region, engine version, and verification date.
2. Availability and recovery
| Exercise | Example acceptance condition |
|---|---|
| Forced failover | Clients reconnect inside budget; failed transactions return recognizable SQLSTATE; no silent partial success |
| PITR | Restore a new instance to the target time; verify rows, constraints, roles, and extensions; measure RTO |
| Accidental deletion | Document separate whole-instance, database, and table-level paths and durations |
| Region failure | DNS, keys, object-storage backups, and application compute do not share the database failure domain |
| Backup export | Restore a usable copy outside the provider account |
Automatic failover still breaks connections
Applications need connection timeouts, transaction-level retries, and idempotency keys. Do not replay a write that may have committed unless a business idempotency key can confirm the outcome.
3. Connections and elasticity
Budget connections across every application replica, worker, migration tool, BI client, and agent. Prefer a controlled pool for serverless/agent traffic, while confirming:
- whether transaction pooling supports session state, temporary tables, LISTEN/NOTIFY, or prepared statements;
- whether scale-down, suspend, or failover changes endpoints or TLS certificates;
- which of
statement_timeout,idle_in_transaction_session_timeout, and client timeouts fires first; - whether bursts queue in the application instead of becoming a direct PostgreSQL connection storm.
4. Cost model
Beyond compute and storage, estimate IOPS, backups, cross-zone/region traffic, replicas, logs, monitoring, proxies, PITR, snapshot export, and support. For AI, separate embedding, index rebuild, vector storage, retrieval, and reranking costs.
5. Portability
Quarterly—or before a major upgrade—run:
pg_dump --format=custom --no-owner --no-acl "$DATABASE_URL" > app.dump
createdb portability_restore
pg_restore --exit-on-error --no-owner --no-acl \
--dbname=portability_restore app.dumpThis checks logical portability; it does not replace provider PITR. After restore, verify extensions, roles/grants, large objects, sequences, row counts, constraints, critical results, and query plans.
Launch evidence pack
- service, region, SKU, engine, and extension version manifest;
- RPO, RTO, connection budget, and capacity model;
- failover, PITR, accidental-delete, and off-platform restore reports;
- encryption, network, role, RLS, and key-rotation records;
- engine/extension upgrade and provider-exit runbooks;
- latency, error, WAL, vacuum, storage, and cost data under representative load.
Last updated on