Skip to main content

Run it locally

Needs Docker, jq, curl, openssl, and free localhost ports 3801-3803 and 3811-3813. Everything is isolated and throwaway: compose project scale-drill, a separate docker-compose.scale.yml (never the operator stack), generated secrets in a mktemp dir, tmpfs data volumes, and a teardown (down -v, image removal, scratch cleanup) that runs on exit — pass or fail. It never reads a committed .env.

What it proves, and how

Cross-replica assertions hit each replica’s own published port directly (no load balancer in the loop), so “minted on A, verified on B” is deterministic. The drill also hard-asserts the fixed behavior of real multi-replica bugs it surfaced during development (a regression fails CI) — among them the first-boot ordering rule it proved: a fresh database needs one all/worker-role boot before api-only replicas can start (an api-only replica crash-loops on pg-boss’s pg-boss is not installed check until a worker installs the pg-boss schema once; the stack then self-heals).

What it deliberately does not cover

  • s3 storage in prod (MinIO/S3/R2): the drill proves local storage does not span replicas, not that the s3 driver does. The s3 path is covered by unit tests; a MinIO leg can be added to this drill later.
  • Managed-Postgres/PgBouncer behavior (see the pooling caveats in deployment-profiles.md).
  • Rolling-deploy drain and expand-then-contract coexistence — separate proofs.