Skip to content
BinaryScaler

Engineering

The production readiness checklist

Every question we ask before a service takes real traffic, grouped by what it protects — with the ones people skip marked clearly.

Written by
Dana Whitfield · Principal Engineer
Published
30 April 2026
Reading time
11 minutes

This is the list we work through before a service takes production traffic. It is deliberately not exhaustive — an exhaustive checklist gets skimmed. Everything here has caused a real incident on a real project.

Can you tell when it breaks?

  • A dashboard showing request rate, error rate and latency percentiles — p50, p95 and p99, not the mean
  • Alerts on customer-visible symptoms rather than on CPU or memory
  • Structured logs with a request identifier that traverses service boundaries
  • Distributed tracing enabled, at least sampled

Can you undo it?

  • Rollback tested, not assumed — someone has actually run it this month
  • Schema migrations that are backward compatible with the previous release
  • Feature flags for anything user-visible, each with an owner and a removal date
  • A documented, rehearsed data-restore procedure

Does it degrade gracefully?

  • Timeouts set on every outbound call, including the ones to your own services
  • Retries with backoff and jitter, and a cap that prevents amplification
  • Circuit breakers on dependencies that can fail independently
  • A defined behaviour for each dependency being unavailable — including 'refuse clearly'

The last one is skipped most often. Teams handle the failure technically but never decide what the user sees, and the default is a spinner that never resolves.

Is it safe?

  • Secrets in a secret manager, never in environment files committed to a repository
  • Dependencies scanned, with a named owner for the findings
  • Authentication and authorisation tested, including the negative cases
  • Personal data classified, with retention actually implemented rather than documented

Can someone else run it?

  • A runbook for each alert, written so someone unfamiliar can act on it at 3am
  • An on-call rotation with a real escalation path, tested at least once
  • Architecture decision records explaining why, not just what
  • A named owner — a team, not an individual

Does it hold under load?

  • Load tested at expected peak, then at two to three times peak
  • Known bottleneck identified — there always is one; not knowing it is the problem
  • Autoscaling tested with a real traffic ramp, including scale-down
  • Cost per unit of traffic understood before the first bill arrives
  • operations
  • reliability
  • guide

Author

Dana Whitfield

Principal Engineer

Fifteen years in payments and platform engineering. Writes about the operational side of delivery.

Meet the team

Want this applied to your system?

We will take a look at what you are running and tell you which of the above is worth doing first.