Opening Scenario

Your checkout service calls a payment API. The payment API starts responding slowly — not failing, just taking 30 seconds instead of 200ms. Your checkout service is waiting. Meanwhile, more checkout requests arrive. Each one opens a connection and waits. Within 2 minutes, all your threads are blocked waiting on the payment API. The checkout page stops loading entirely. One slow dependency took down your whole service.


Question Progression

1. Why does a slow dependency hurt you more than a failed one?

Question: Intuitively, a dependency that's completely down (refusing connections, returning 500) seems worse than one that's slow. But the scenario above shows the opposite. Why?

Reasoning: When a dependency fails fast — connection refused, immediate 500 — your service gets the error immediately. It takes a thread for perhaps 5ms and then that thread is free. When a dependency hangs, your thread is blocked for the full duration of…

In the full tutorial

  • Closing: When to Reach for This

Glossary history

Click dotted jargon to save explanations here.