Designing Resilience Patterns

1. Designing Timeout Patterns

LayerDetail
ConnectionTime to establish socket (~1s)
Read / writePer-call deadline
Overall requestEnd-to-end budget
Cascading deadlinesPass remaining budget to downstream
Always setDefault infinite is dangerous

2. Designing Retry with Exponential Backoff

AspectDetail
Idempotency requiredOnly retry safe ops
JitterFull jitter recommended
Retry budgetCap retries % to avoid amplification
Don't retry4xx (except 408/425/429)

3. Designing Circuit Breaker Pattern

   CLOSED ──fail>threshold──▶ OPEN
     ▲                          │
     │                       wait reset timeout
   success                       │
     │                          ▼
   HALF-OPEN ◀────test─── (allow probe calls)
      
StateBehavior
ClosedCalls pass; track failures
OpenFail fast immediately
Half-openAllow N probes; close on success
LibrariesResilience4j, Polly, Hystrix (legacy)

4. Designing Bulkhead Pattern

AspectDetail
IdeaIsolate resources per dependency
ImplementationSeparate thread pools / semaphores
BenefitOne slow dep can't exhaust all threads
K8s levelSeparate deployments per critical service

5. Designing Fallback Mechanisms

TypeExample
Static defaultEmpty list / cached value
Stale cacheServe last known-good
Alternate providerFailover to secondary
Degraded UXHide non-essential block

6. Designing Graceful Degradation

StrategyDetail
Feature flagsDisable expensive features
Read-only modePause writes
SamplingReduce % of work
Quality reductionLower-res images, fewer recs

7. Designing Health Check Architecture

EndpointPurpose
/livezProcess alive (restart if fail)
/readyzReady to serve traffic
/startupzSlow startup grace
Deep vs shallowAvoid cascading failures via deep checks

8. Designing Failure Detection

MechanismDetail
HeartbeatPeriodic ping
Phi accrual detectorAdaptive (Akka, Cassandra)
GossipMembers exchange state
SLO breach alertsSymptom-based detection

9. Designing Service Isolation

BoundaryDetail
ProcessSeparate containers
DataDB-per-service; no shared state
NetworkNetworkPolicies, namespaces
Failure domainPer AZ / cluster / region

10. Designing Chaos Engineering Practices

AspectDetail
Hypothesis-drivenSteady-state metric → inject failure
ToolsChaos Mesh, LitmusChaos, Gremlin, AWS FIS
Game daysScheduled team exercises
Start smallStaging → controlled prod
Automate rollbackKill switch always available

11. Designing Blast Radius Limitation

TechniqueDetail
Cell-based architectureIndependent cells; route per user/tenant
Shuffle shardingReduce cross-tenant impact
Canary + auto-rollbackLimit deploy blast radius
Quotas per tenantStop noisy neighbor

12. Designing Self-Healing Systems

MechanismDetail
K8s replicasAuto-restart failed pods
Auto-scalingHPA / VPA / Cluster Autoscaler
Self-healing operatorsReconcile to desired state
Auto-failoverDB replica promotion
Auto-remediationRunbook automation on alerts