- name
- implement-a-circuit-breaker
- category
- code
- description
- Implement a circuit breaker with meaningful failure classification, bounded state, safe fallback, probing, recovery, and observability. Use when repeated dependency calls can amplify an outage.
# implement-a-circuit-breaker
## When to use
- Use around a dependency whose failure can consume scarce resources or cascade.
- Do not count caller cancellation or valid business rejection as dependency failure.
## Preconditions
- Define operation, timeout, failures, volume, fallback, retry, idempotency, and recovery.
## Procedure
1. Classify success, slow, retryable, terminal, caller, and dependency outcomes.
2. Choose scope by operation, tenant, region, or endpoint without global collateral damage.
3. Define closed, open, and half-open transitions with minimum volume and bounded windows.
4. Coordinate timeout, retry, concurrency, and backoff.
5. Provide a truthful safe fallback or explicit unavailability.
6. Test flapping, low volume, partial failure, probe concurrency, and restart state.
## Failure plan
- Allow authorized bounded bypass only with monitoring and resource protection.
## Worked example
A payment breaker opens on upstream timeouts but not declined cards and permits one idempotent probe.
## Done
- A circuit-breaker implementation records scope, classifications, thresholds, states, fallback, and telemetry
- Low-volume, timeout, retry, probe, flapping, restart, bypass, and idempotency tests verify behavior
GitHub에서 보기