Production Readiness Review Checklist Design

Production-ready guide covering production readiness review checklist design with implementation patterns, code examples, and anti-patterns for enterprise engineering teams.

A production readiness review checklist is a structured set of criteria and verification steps used to evaluate whether a system or change is ready for deployment to production. This process applies when introducing new services, modifying existing systems, or promoting changes through release gates. The checklist ensures that all necessary safety, reliability, and operational considerations are addressed before code reaches production.

Understanding the Checklist's Purpose

The checklist serves as a decision matrix for stakeholders to assess whether a system meets minimum requirements for operational stability. It is not a quality gate but a tool to surface potential failure points early in the deployment lifecycle.

Checklists should be defined at the beginning of a project or change, and they must include both technical and operational criteria. They are most effective when tied directly to specific observable behaviors rather than abstract concepts.

Defining Checklist Content

A checklist must have clearly specified acceptance criteria for each item. For example, instead of "monitoring is sufficient," use "all critical paths must have at least one alert with a 5-minute resolution time."

Each checklist item should specify:

Verification Methods and Examples

Verification can include:

For example, a checklist item might be: "Verify that all critical services have health checks exposed on port 8080 and return HTTP 200 within 100ms." The verification would involve running curl -f http://localhost:8080/health and checking response time.

Common Checklist Items

Service Dependencies

Ensure that all required dependencies are declared and available. For services using Kubernetes, verify the deployment manifest includes correct image references and resource limits.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: example-app
  template:
    metadata:
      labels:
        app: example-app
    spec:
      containers:
      - name: app
        image: myregistry.com/example-app:v1.2.3
        ports:
        - containerPort: 8080
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"

Resource Limits and Requests

Every container must define memory and CPU requests and limits. Omitting these can lead to pod evictions or resource starvation.

Health Checks

Services must expose liveness and readiness probes. The readiness probe should ensure the service is not accepting traffic until it has fully initialized.

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 30
  periodSeconds: 10
readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5

Logging and Monitoring

All services must log to stdout/stderr. Logs should include timestamps, request IDs, and structured fields for correlation.

Check that metrics are exposed on a standard port (e.g., 9090) and are compatible with Prometheus scraping.

curl http://localhost:9090/metrics

Rollback Plans

Each service must define rollback procedures. This includes how to revert to a previous version, how to restore data, and who has authority to execute rollbacks.

Error Handling

Services must return appropriate HTTP status codes for errors. A 500 error should be logged with a detailed error message.

Checklist Construction Process

A checklist should be built iteratively, starting with a core set of items and expanding based on the specific system being reviewed.

Begin by identifying all relevant stakeholders: developers, SREs, platform engineers, and operations teams. Each stakeholder group contributes items that reflect their domain expertise.

Items must be written in a way that allows verification without ambiguity. For example, instead of "configuration is correct," use "all configuration values are validated against the schema defined in the repository."

Checklist Item Structure

Each checklist item should include:

  1. Item Description: A clear statement of what needs to be verified
  2. Verification Method: Specific steps or commands to perform verification
  3. Acceptance Criteria: What constitutes a pass or fail
  4. Responsible Party: Who is accountable for checking the item

Checklist Format

Checklists should be stored in version-controlled repositories, ideally as markdown files with clear section headings.

Each item should be numbered or tagged for easy reference and tracking.

Managing Checklist Evolution

A checklist is not static. It must evolve with the system and team experience.

Changes to a checklist should be tracked in version control with clear commit messages explaining why an item was added or modified.

Checklists should be reviewed quarterly or after significant incidents.

Common Failure Modes

Silent Failures

Items that do not clearly specify verification steps can silently pass. For example, "service is scalable" might pass without verifying that the service actually scales in response to load.

Ambiguous Acceptance Criteria

A checklist item like "code quality is good" can pass even if there are no tests or linters running. This leads to production issues that could have been caught during review.

Incomplete Verification

Teams may verify a few items but skip others, especially under time pressure. This creates false confidence in readiness.

Checklist Ownership and Enforcement

Ownership of checklist items should be explicitly assigned. This includes both who verifies each item and who approves the overall readiness.

Checklist completion should be part of the deployment workflow. It is not sufficient to just document the checklist; it must be enforced through automation or manual sign-off.

Deployment Integration

Checklists are most effective when integrated into deployment processes. A system can be configured to require a checklist approval before promoting changes to production environments.

Automated checks can be written to verify items like:

Checklist Documentation and Sharing

Checklists must be well-documented and easily accessible. They should be linked from relevant project documentation and shared with all teams involved in the deployment process.

They should include examples of what a pass or fail looks like, along with common failure scenarios and how to fix them.

Review Process

After deployment, each checklist item should be reviewed for accuracy and completeness. This includes:

This feedback loop improves the checklist over time.

Checklist Validation

Validation should occur both before and after deployment. Before deployment, all items must be verified. After deployment, the checklist should be used to verify that the system behaves as expected in production.

Tools like kubectl get pods -o wide or curl -f http://service:port/health can validate that systems are running correctly. Monitoring dashboards should show that metrics are flowing properly.

Checklist Maintenance

Checklists must be updated regularly to reflect new tools, practices, and system changes. This includes adding new items for new technologies and removing obsolete ones.

Version control of checklists ensures that changes are tracked and can be reverted if needed.

Conclusion

A production readiness review checklist is a structured approach to ensuring systems are ready for deployment. It requires clear definitions, specific verification steps, and explicit ownership. By avoiding vague criteria and focusing on concrete actions, teams can reduce the risk of production issues while maintaining agility in their deployment processes.

This page was rewritten on 16 October 2026. It replaced a templated version that was not specific to its own title. How these pages are written and checked. If anything here is wrong, tell us at [email protected] and we will correct it.