Chaos Engineering — Interview Q&A
Q: How is chaos engineering actually different from just having good monitoring and a solid test suite?
A: Tests and monitoring both verify behavior against something you already anticipated — a unit test confirms the code does what you designed it to do, and a monitoring alert fires on a threshold you already thought to define. Neither surfaces a failure mode you never imagined in the first place. Chaos engineering exists specifically to fill that gap: deliberately injecting a real failure and observing what actually happens routinely reveals weaknesses — a missing timeout, an under-provisioned PodDisruptionBudget, a retry storm — that no amount of reviewing existing tests or dashboards would have surfaced, precisely because nobody wrote a test for a scenario they hadn't thought of.
Q: What makes a chaos experiment well-designed versus just "randomly breaking things"?
A: Three things, all present before the experiment ever runs: a precise, falsifiable steady-state definition (a specific metric and threshold, not "things should still work"), a stated hypothesis about what should happen, and a deliberately minimal blast radius with a tested abort mechanism. "Randomly breaking things" skips the hypothesis and the safety controls — it might occasionally surface a real finding, but it also risks causing genuine, unplanned damage with no clear signal about whether the outcome confirms or disproves anything specific.
Q: Why start chaos experiments in staging instead of production, if production is what you actually care about?
A: Staging is where the hypothesis, the tooling, and the abort mechanism all get proven safe before there's any real user impact on the line — a stuck experiment or a mis-scoped selector in staging costs nothing beyond some team time; the same mistake in production is a genuine, avoidable incident. Production chaos testing is a legitimate and eventually necessary later step (staging environments rarely perfectly replicate production's actual scale, traffic patterns, and configuration drift), but it's earned through a track record of successful, well-understood staging experiments first, not a starting point.
Q: A pod-delete experiment "passed" — what would make you not trust that result?
A: Two specific things to check before trusting it: whether the steady-state metric was actually precise enough to have been capable of failing (a vague health check can pass even while latency triples), and whether the blast radius genuinely stressed the failure path being tested — killing one pod out of twenty replicas barely exercises anything if load balancing across the other nineteen was never in real question. A pass on an under-specified experiment is arguably worse than no experiment, because it creates false confidence rather than an honest "we haven't actually verified this."
Q: How would you get a skeptical team to actually adopt chaos engineering?
A: Not by arguing the abstract case — by running the smallest possible experiment (one pod, staging, full team watching, a pre-tested abort mechanism demonstrated first) and letting an actual finding make the argument. A single real weakness surfaced by a low-risk experiment is far more persuasive than any amount of explaining chaos engineering's theoretical value, and it builds the specific kind of trust — "we've seen this tooling work safely" — that's required before a team will agree to expand scope toward anything riskier.
Q: What's the difference between testing infrastructure failure (kill a pod) and network failure (add latency), and why do both matter?
A: Killing a pod tests whether the system handles a component disappearing outright — Kubernetes rescheduling, load-balancer health checks routing around it. Network chaos (added latency, packet loss) tests a categorically different and often more realistic failure mode: a component that's still technically alive but responding slowly or intermittently, which is what actually reveals whether upstream services have real timeouts configured, or whether a slow dependency cascades into connection-pool exhaustion across the whole call chain. Teams that only test hard failures routinely discover, during a real incident, that a slow-but-alive dependency was never actually handled — the two failure categories are genuinely complementary, not redundant.
Q: When would running a full Availability Zone failure experiment be justified, and what has to be true first?
A: It's justified once an organization has actual infrastructure investment (multi-AZ redundancy) whose correctness has never been genuinely verified beyond a design diagram — the only way to know a multi-AZ setup actually fails over correctly is to test it under real conditions, since most such setups are never truly exercised outside of an actual, unplanned outage. What has to be true first: explicit executive sign-off given the real business risk, a pre-tested and pre-defined rollback path (not designed reactively if something goes wrong), and a scheduled, communicated window rather than a surprise — this is categorically different in risk from a pod-delete experiment and needs commensurately more preparation and organizational buy-in before it's run.

