How to Practice Failure When Your Production Environment Is Too Small for Chaos Engineering

Failure practice often starts with a whiteboard, not a fault injection tool.

Why Small Environments Need a Different Failure Practice

Chaos engineering, as popularized by Netflix and the Chaos Community, assumes a distributed system with enough redundancy to absorb targeted failures. The practice relies on steady-state metrics, a hypothesis about blast radius, and the ability to terminate instances without taking down the whole service. In a small environment, the blast radius of a single failure is often the entire product. There is no second region, no dark traffic pool, and no spare capacity waiting to absorb a terminated node.

That does not make failure practice less important. It makes the design of the practice more constrained. A two-person infrastructure team cannot afford a dedicated chaos platform. A five-person product team cannot spend a sprint building a fault injection framework. What they can do is treat failure practice as a recurring operational routine: short, scheduled, and focused on the failures most likely to occur in their specific stack.

The main entity here is failure practice for small production systems. Adjacent concepts include tabletop exercises, game days, fault injection, recovery time objectives, backup verification, runbook testing, and incident postmortems. The audience is a lean technical team that values repeatable practices over vendor tooling and wants evidence that a procedure works before an incident forces the question.

Start with a Tabletop Failure Walk

The lowest-cost failure practice is a tabletop walk. Pick one failure scenario, gather the engineers who would respond to it, and walk through the response step by step. No production changes. No staging environment. Just a shared document or whiteboard and a timer.

A useful tabletop scenario for a small cloud-native team is primary database loss. The walk begins with the alert firing. The team then answers a sequence of questions:

  • Who is on call, and how do they acknowledge the alert?
  • What is the first diagnostic command or dashboard check?
  • Where is the most recent backup, and how long would restoration take?
  • Which parts of the application degrade first, and what do customers see?
  • What is the communication path to stakeholders?

The value of the tabletop walk is not the answers themselves. It is the gaps the answers reveal. A team may discover that the backup location is documented in a wiki page that only one person can find. Or that the on-call rotation is out of date. Or that the database restore procedure assumes a version of the CLI that is no longer installed on the jump host. These are cheap discoveries compared to finding them during an actual outage.

Run a tabletop walk monthly. Keep it to forty-five minutes. Rotate the scenario across the most likely failure modes: database loss, object storage misconfiguration, expired TLS certificate, bad deployment, and cloud provider zone failure. After each walk, update the runbook or checklist that the walk exposed as incomplete.

Use Staging for Real Fault Injection

When a team wants to move beyond discussion, staging is the natural place for actual fault injection. The key is to make staging resemble production closely enough that the exercise produces useful data. A staging environment with one-tenth the data and none of the production traffic will not reveal how a database failover behaves under load. But it can still reveal whether the failover procedure works at all.

For a small team, the most productive staging drills are the ones that test recovery procedures, not system behavior under stress. Terminate the primary database instance in staging and follow the documented failover steps. Delete the object storage bucket that holds application assets and restore it from the replication or backup tool. Roll back a deployment using the exact commands in the runbook. Time each step and record the results.

These drills do not require a chaos engineering platform. They require a scheduled window, a clear rollback path for the staging environment itself, and a written record of what happened. The record matters because it becomes the baseline for the next drill. If database failover took fourteen minutes in March and nineteen minutes in June, the team has a signal that something changed, even if no one noticed at the time.

A laptop showing a terminal window with a database failover command in progress
Staging drills test whether the documented recovery commands still work.

What to Measure in a Staging Drill

Keep the measurement set small. For each drill, record three numbers:

  1. Time to detect: How long between the injected failure and the first correct alert or human observation?
  2. Time to recover: How long between the start of the documented recovery procedure and the return of a healthy staging service?
  3. Procedure accuracy: How many steps in the runbook had to be corrected, skipped, or improvised?

These three numbers are enough to track improvement over time. They also keep the drill focused on operational readiness rather than on building elaborate failure scenarios. A team that improves its time to detect from six minutes to two minutes has made a real resilience gain, even if the environment is still small.

Run Production-Safe Read-Only Drills

Some failure practice can happen in production without risking an outage. Read-only drills exercise the observation and diagnosis side of incident response. They do not inject faults. Instead, they ask the team to answer operational questions against the live system under a time constraint.

One example is a backup verification drill. The team picks a production database or object storage bucket and attempts to restore it to a sandbox account or isolated network. The production system is not modified. The restore target is separate. The drill answers a simple question: can the team actually restore from the backup it believes it has? Many teams discover that the backup exists but the restore procedure fails because of permissions, encryption keys, or missing tooling. That discovery is the point of the drill.

Another read-only drill is a log and metrics scavenger hunt. The team receives a list of operational questions: What was the p95 latency for the checkout service between 14:00 and 15:00 yesterday? Which node served the most 5xx errors last week? When did the last certificate rotation happen? Each question must be answered using the production observability stack. The drill reveals whether the team can find the data it would need during an incident, without the pressure of an active outage.

Read-only drills are safe because they do not change production state. They are valuable because they test the human and tooling pathways that incident response depends on. A team that cannot answer basic operational questions during a calm drill will not answer them faster during a real failure.

Write the Recovery Checklist Before You Need It

Every failure practice session should produce or update a recovery checklist. The checklist is the durable artifact of the practice. It captures the exact commands, dashboards, contacts, and decision points for a specific failure scenario. It is written when the team is calm, reviewed during drills, and used during incidents.

A good recovery checklist for a small team has three sections:

  • Detect: Which alerts fire, which dashboards to open, and which logs to check first.
  • Decide: The criteria for choosing between restore, rollback, or failover.
  • Recover: The exact commands, in order, with expected output and rollback steps.

The checklist should be short enough to read during an incident. If it is longer than one page, it is a runbook, not a checklist. Runbooks are useful, but they are reference material. Checklists are for action under stress. For more on this distinction, see Write the Recovery Checklist Before You Need It.

During a tabletop walk or staging drill, the team should follow the checklist exactly. Any step that is wrong, missing, or unclear gets corrected immediately after the drill. The checklist is never finished. It is a living document that improves with each practice session.

Build a Failure Calendar, Not a Chaos Platform

Small teams do not need a chaos engineering platform. They need a recurring calendar. The calendar creates the repetition that turns failure practice from a one-off project into an operational habit.

A workable monthly cadence for a team of two to fifteen engineers looks like this:

  • Week 1: Tabletop failure walk, forty-five minutes, one scenario.
  • Week 2: Staging fault injection drill, one hour, one recovery procedure.
  • Week 3: Production read-only drill, thirty minutes, backup verification or observability scavenger hunt.
  • Week 4: Checklist review and update, thirty minutes, based on the month’s findings.

This cadence is light enough to sustain. It does not require a dedicated reliability engineer. It does not require new tooling. It requires a shared calendar, a rotating facilitator, and a written record of each session. Over a year, the team will have practiced twelve failure scenarios, tested twelve recovery procedures, verified twelve backups, and updated twelve checklists. That is a meaningful resilience practice for any team, regardless of size.

A team calendar on a wall with recurring failure practice sessions marked in colored ink
A recurring calendar turns failure practice into a habit, not a project.

Common Failure Scenarios for Small Cloud-Native Teams

The scenarios a team practices should reflect its actual architecture. A small cloud-native team typically runs a managed database, a container orchestration service, an object storage bucket, and a CDN or load balancer. The most likely failures are not exotic. They are the ordinary failures that happen when a small team moves fast and documentation lags behind.

Database Restore

The team deletes or corrupts data and must restore from a backup. The drill tests whether the backup is restorable, how long restoration takes, and whether the application behaves correctly after the restore. This is the single most valuable drill for most small teams because data loss is the failure with the highest business impact.

Bad Deployment Rollback

A deployment introduces a bug that causes errors or data corruption. The team must roll back to the previous version using the documented procedure. The drill tests whether the rollback commands work, whether database migrations can be reversed, and whether the team knows how to verify that the rollback succeeded.

Expired or Misconfigured TLS Certificate

A certificate expires or is issued for the wrong domain. The team must identify the affected endpoint, obtain or renew the certificate, and deploy it without downtime. The drill tests whether certificate inventory is accurate and whether the renewal process is documented.

Object Storage Misconfiguration

An object storage bucket is accidentally made public or deleted. The team must detect the misconfiguration, correct the policy, and restore any lost objects. The drill tests whether bucket policies are reviewed and whether object versioning or replication is enabled.

Cloud Provider Zone Failure

A single availability zone becomes unavailable. The team must determine which services are affected and whether the application can continue serving from the remaining zone. The drill tests whether the team has documented its zone dependencies and whether it can fail over without manual intervention.

Each of these scenarios can be practiced as a tabletop walk, a staging drill, or a read-only production exercise. The choice depends on the risk of the drill itself and the maturity of the team’s procedures.

Tradeoffs and Limits of Small-Scale Failure Practice

Failure practice in a small environment has real limits. A staging drill cannot replicate production load, production data volume, or the pressure of a real incident. A tabletop walk cannot test whether a command actually works. A read-only drill cannot reveal how the system behaves when a write path fails. Teams should be honest about these limits and avoid overclaiming what a drill proves.

The tradeoff is between realism and safety. A production fault injection drill would be more realistic, but in a small environment it is often indistinguishable from an actual outage. The team must decide whether the learning from a production drill justifies the customer impact. For most small teams, the answer is no. The safer drills, repeated consistently, provide enough signal to improve operational readiness without betting the product on a practice session.

There is also a tradeoff between breadth and depth. A team can practice many scenarios shallowly or a few scenarios deeply. For a small team, depth is usually more valuable. Practicing database restore every month until it is boring is better than practicing ten different scenarios once each. Boring is a sign that the procedure works.

Evidence and Context

The principles behind failure practice are well documented. The Chaos Community defines chaos engineering as “the discipline of experimenting on a system in order to build confidence in the system’s capability to withstand turbulent conditions in production.” That definition assumes a system large enough to experiment on safely. For smaller systems, the same principles apply, but the experiments move to staging, tabletops, and read-only drills. The Principles of Chaos Engineering provide a useful reference for the underlying ideas, even when the implementation is scaled down.

Google’s Site Reliability Engineering book describes the practice of Wheel of Misfortune, a role-playing exercise in which a team walks through a hypothetical incident. The exercise is a form of tabletop failure walk and is used by Google SRE teams to practice incident response without touching production. It is a direct precedent for the tabletop approach described here.

For backup verification specifically, the NIST Cybersecurity Framework includes recovery planning and testing as core functions. The framework’s emphasis on testing recovery procedures, not just having them, aligns with the backup restoration drills recommended in this article.

FAQ: Failure Practice for Small Production Environments

Is chaos engineering worth doing if we only have one production database?

Not in the traditional sense. Injecting failure into a single production database is an outage, not an experiment. Instead, practice the recovery procedure for that database in staging or a sandbox account. The goal is to prove that restoration works, not to see how the system degrades under failure. A single-database architecture has no degradation path; it has a recovery path. Practice the recovery path.

How often should a small team practice failure?

Monthly is a sustainable cadence for most teams. A forty-five-minute tabletop walk, a one-hour staging drill, and a thirty-minute read-only drill each month add up to about two hours of practice. That is enough to build repetition without consuming a meaningful fraction of the team’s engineering time. The key is consistency, not intensity.

What is the single most valuable failure drill for a small team?

Database restore from backup. Data loss is the highest-impact failure for most small products, and backup restoration is the procedure most likely to be broken when it is needed. A monthly restore drill in a sandbox account is cheap, safe, and directly tests the team’s ability to recover from the worst realistic scenario.

Do we need a dedicated chaos engineering tool?

No. A small team can practice failure with a shared calendar, a staging environment, and a written checklist. Tools can help with fault injection at scale, but they add operational overhead that a small team does not need. Start with manual drills and only adopt a tool when the manual process becomes a bottleneck.

How do we know if our failure practice is working?

Track three numbers over time: time to detect, time to recover, and procedure accuracy. If those numbers improve across repeated drills, the practice is working. If they stay flat or worsen, the team should examine whether the drills are realistic enough or whether the procedures are being updated after each session.

Next Steps for the Gray Haven Lab

This article is part of a series on operational resilience for lean technical teams. The natural next topic is how to run a post-incident review that produces actionable fixes without blame. That article will build on the failure practice routines described here and connect them to the incident learning loop. Readers who want to prepare for that discussion can start by reviewing their most recent incident timeline and asking which recovery checklist would have shortened the response.

For teams that want to begin immediately, the first step is simple: schedule a forty-five-minute tabletop walk for next week. Pick one scenario, gather the engineers who would respond, and walk through the response. Write down every gap. That single session will produce more operational insight than a quarter of reading about chaos engineering.