All reads

Stability Patterns and Antipatterns

ReliabilityDistributed systemsSoftware design

Design every integration with the assumption that dependencies will slow down, fail, and recover imperfectly.

Summary

Production failures rarely remain isolated. A slow dependency consumes threads and connections, creates queues, and triggers cascading failure across otherwise healthy services. Unbounded results, retry storms, and mismatched capacities amplify the damage. Stability patterns deliberately limit blast radius: timeouts stop endless waiting, circuit breakers halt doomed calls, bulkheads isolate capacity, and fail-fast checks reject work that cannot succeed. Systems should also reach a steady state through bounded resources, routine cleanup, and operations that do not depend on manual rescue.

Key ideas

01

Integration points are fault lines

Every network call crosses independent timing, capacity, deployment, and failure domains.

02

Bound waiting and work

Timeouts, queue limits, response limits, and budgets keep one failure from consuming the whole system.

03

Contain before recovering

Isolation preserves enough healthy capacity for graceful degradation and later repair.

Core stability patterns

01

Timeouts and deadlines.

02

Circuit breakers.

03

Bulkheads and bounded pools.

04

Fail fast and degrade gracefully.

Why it matters now

AI can implement happy paths quickly. Reliability still depends on engineers imagining adverse interactions and making failure boundaries explicit.

Continue with the original

This short version preserves the main argument. Follow the source for the complete talk, article, or book.

Original source