Short answer: even a 3-5 person engineering team can start chaos engineering without installing Litmus or AWS FIS. Killing a single container in staging and watching whether the system recovers on its own can be your entire first experiment. The goal isn't to create chaos — it's to find the weak point before a user in production does.
What is chaos engineering?
Chaos engineering is the practice of deliberately injecting failure into a system to learn how it behaves under unexpected conditions. The core loop has three steps: form a hypothesis about how the system should normally behave, inject a failure inside a small blast radius to test that hypothesis, then observe the result and learn from it.
This isn't about randomly breaking things in production. Every experiment needs a clear hypothesis and a clear rollback plan. Starting from a hypothesis like "if the payment service goes down, the cart service degrades gracefully with an error message" and confirming it in a small environment is far cheaper than learning it during a live production outage.
What is blast radius, and why is it the key concept?
Blast radius is the maximum user impact an experiment could cause if it goes wrong. Keeping it small isn't just a safety measure — blast-radius containment is what makes chaos engineering acceptable to product, legal, and customer-success teams in the first place.
The practical rule for a small team: start with the smallest blast radius that will still teach you something about the system. That usually means breaking a single container, degrading a single instance, or injecting a failure into a single request. On service scope, start with internal services that carry no direct user impact, then move to platform services, then user-facing services last. On traffic scope, starting with a 1% slice is far safer than affecting all traffic at once.
How do you start without dedicated tooling?
Three experiment types need nothing beyond your existing infrastructure: killing a pod or container (as simple as kubectl delete pod in Kubernetes), adding artificial latency to network traffic (via the Linux tc command or a sidecar proxy), and temporarily disabling a dependency (invalidating an API key in staging, for example).
All three can be run with tooling you already have. The real discipline isn't the tool — it's the process: write a hypothesis before every experiment, compare steady-state metrics (error rate, latency, success rate) before and after, and define an abort condition upfront that stops the experiment if things go sideways.
The two commands below are examples of first experiments you can run without installing anything extra:
# Experiment 1: kill a single pod in Kubernetes, watch the system recover
kubectl delete pod my-service-7d9f8c6b8-x2k4p --namespace=staging
# Experiment 2: add 200ms of artificial latency to a service (tc + netem)
tc qdisc add dev eth0 root netem delay 200msBefore running either command, record your steady-state metrics (error rate, p95 latency), run the experiment, measure the same metrics again, and read the difference. Don't forget tc qdisc del dev eth0 root netem to roll the latency back — that's the simplest possible version of the abort condition we mentioned above.
What is a GameDay, and when should you run one?
A GameDay is a planned, larger-scale chaos exercise — typically a single afternoon, one specific scenario, and the whole team involved. Unlike small daily experiments, a GameDay's purpose is to measure not just how the system reacts, but how the team does: who notices first, which runbook gets used, how fast the alert fires.
A reasonable cadence for a small team is one GameDay per month plus small, single-experiment "daily chaos" sessions weekly. If you're running your first GameDay, don't announce the exact scenario to the whole team beforehand, but do make it clear this is a drill — otherwise you risk a real escalation over what's actually a rehearsal.
When do you graduate to dedicated tooling?
Manual experiments — kubectl, tc, flipping a feature flag to kill a dependency — hit a ceiling on repeatability and scheduling past a certain point. Tools like Litmus, chaos-mesh, or AWS Fault Injection Service (FIS) earn their place once your team is running enough experiments, or wants to repeat them on a schedule (say, automatically every sprint).
Their shared benefit is defining experiments as code (a YAML file or an API call), scheduling them, and centralizing results in one report. But for a small team, standing up that tooling can cost more time upfront than the first few months of manual experiments would — learning the process first and investing in tooling second is the lower-risk order.
The table below shows how a small team can widen its blast radius in stages:
Stage | Service scope | Instance scope | Traffic scope | Example experiment |
|---|---|---|---|---|
1 | Internal service (no user impact) | 1 of N replicas | 0% (staging only) | Kill one container |
2 | Platform service | 1 of N replicas | 1% of live traffic | Add 200ms latency to a dependency |
3 | User-facing service | Multiple replicas | 5-10% of live traffic | Temporarily disable a downstream API |
4 | Critical path (payments, auth) | Zone/AZ level | Controlled, within a GameDay | Simulate a regional outage |
How do findings connect back to runbooks and alerts?
The most valuable output of an experiment is making the gap you found permanent. If an alert fired late, lower its threshold. If a runbook was missing or wrong, update it. If a service lacks graceful degradation, put that in next sprint's backlog. Running an experiment and leaving the result in a Slack message just means rediscovering the same issue during the next real outage.
That loop complements the runbook discipline we cover in Incident Response for Small Teams — chaos engineering tests the runbooks, incident response uses them during a real outage. For a similar resilience angle on the database side, see Database Backups and Disaster Recovery, and for deployment strategy, our Blue-Green vs Canary Deployments comparison.
Frequently Asked Questions
Do you need dedicated tooling to start chaos engineering?
No. Killing a container with kubectl delete pod, adding network latency with the Linux tc command, or invalidating an API key in staging are all first experiments that require no additional tooling. Tools like Litmus, chaos-mesh, or AWS FIS earn their place once experiment volume and the need for repeatability grow.
How do you keep blast radius small?
Start with internal services that have no direct user impact, target a single replica, and touch only 1% of traffic. Starting from the smallest scope that still teaches you something about the system, then widening it as confidence grows, is far safer than running your first experiment against the critical path or all of your traffic.
What's the difference between a GameDay and a daily chaos experiment?
A daily chaos experiment is small, tests a single hypothesis, and is typically run by one engineer. A GameDay is a larger, pre-planned exercise — usually a full afternoon — focused on one specific scenario with the whole team involved. A GameDay also measures the team's response speed, not just the system's.
Should chaos engineering run in production or staging?
Starting in staging is the safest path, since you can validate your hypothesis without risking real users. As the process matures and your abort conditions are well-defined, moving to controlled production experiments with a small traffic percentage (like 1%) lets you test real-world conditions that staging can't fully replicate.

