Part 4 · Reliability ও Security 📖 ১২ মিনিট পড়া 📝 ২০টি কুইজ

Circuit Breaker Pattern

Failed service-এ call করা বন্ধ — cascading failure prevention।

📝 কুইজে যান

আপনার বাড়িতে একটি electrical appliance short-circuit হলে — circuit breaker trip করে। বিদ্যুৎ flow বন্ধ — বাড়ি আগুন লাগে না। Software-এও same idea: একটি service fail করলে — তার call বন্ধ করুন। নাহলে cascade হয়ে পুরো system ভাঙে।

Problem: Cascading Failure

Service A → Service B → Service C। B slow/fail হলে:

  • A-এর request B-তে timeout পর্যন্ত wait।
  • A-এর thread/connection pool fill।
  • A নতুন request নিতে পারে না।
  • A-এর caller-ও fail।
  • Domino effect — পুরো system down।

Circuit Breaker কী?

Circuit Breaker Pattern = একটি service-এর call wrap করা যাতে failure threshold পার হলে — automatic call বন্ধ। পরে periodic try করে recovery check।

Michael Nygard-এর "Release It!" বই (২০০৭) থেকে popularized।

তিন State

১. Closed (Normal)

  • Request normally pass হয়।
  • Failure count track।
  • Threshold পার হলে → Open।

২. Open (Tripped)

  • সব request immediately fail (fast-fail)।
  • Service-এ call যায় না।
  • Timeout পরে → Half-Open।

৩. Half-Open (Testing Recovery)

  • Limited trial request যায়।
  • Success হলে → Closed (recovered)।
  • Fail হলে → Open আবার।
CLOSED ──[failure threshold]──→ OPEN ↑ │ │ [timeout] [success] │ │ ↓ HALF-OPEN ←──────────────────────┘ │ [fail]──→ OPEN

সুবিধা

  • Fast fail: User-কে instant error — wait নয়।
  • Resource protection: Failed service-এর resource block।
  • Cascade prevention: Caller সুরক্ষিত।
  • Auto-recovery: Service ফিরলে — automatic detect।
  • Graceful degradation: Fallback response possible।

Configuration

  • Failure threshold: কত fail হলে open (e.g., 50% over 10 requests)।
  • Timeout duration: Open থেকে half-open transition (e.g., 30 sec)।
  • Success threshold: Half-open থেকে closed transition।
  • Time window: Failure rate কোন duration-এ measure।

Fallback Strategies

Circuit open থাকলে — কী response দেবে?

  • Default value: "Recommendations unavailable; popular items show করি"।
  • Cached response: Last known good data।
  • Empty response: Optional feature-এ।
  • Error message: Honest user notification।
  • Alternative service: Backup endpoint।

Implementation

Library Pattern

CircuitBreaker breaker = CircuitBreaker.builder() .failureRateThreshold(50) .waitDurationInOpenState(30s) .slidingWindowSize(10) .build(); result = breaker.execute(() -> paymentService.charge(amount) );

Popular Libraries

  • Resilience4j (Java): Modern standard।
  • Hystrix (Netflix, deprecated): Pioneer।
  • Polly (.NET): Resilience library।
  • opossum (Node.js): Popular।
  • Service Mesh (Istio): Built-in circuit breaker।

Retry

Failure-এ automatic re-try। Circuit breaker-এর সাথে combine করুন।

  • Exponential backoff।
  • Jitter।
  • Max retry limit।

Timeout

প্রতি call-এ time limit। Hang prevent।

Bulkhead

Resource pool isolated — এক service-এর failure অন্যকে affect করবে না।

Rate Limiting

Inbound traffic limit — পরের chapter।

বাস্তব উদাহরণ

  • Netflix: Hystrix তৈরি — ১,০০০+ microservice protect।
  • Amazon: Per-service circuit breaker mandatory।
  • Uber: Service-to-service circuit breaker।
  • Banking: Payment gateway integration।

উদাহরণ — E-commerce

Recommendation service down হলে:

  • Without breaker: Product page slow load — recommendation timeout।
  • With breaker: Recommendation panel "popular items" দেখায়; rest of page fast।

User-experience much better।

Anti-patterns

  1. Single global breaker: Per-service আলাদা হওয়া উচিত।
  2. Aggressive threshold: Slight blip-এ circuit trip।
  3. No fallback: Circuit open কিন্তু user empty response।
  4. No monitoring: Circuit silently open হয়ে যায়।

সাধারণ ভুল ধারণা

  1. "Circuit breaker = retry": Different — retry try; breaker block।
  2. "Always good idea": Internal call-এ overhead — important call-এ লাগান।
  3. "Auto-magic": Tuning দরকার — wrong threshold = useless।

Best Practices

  • Per-dependency আলাদা circuit।
  • Sliding window failure rate use।
  • Fallback strategy thoughtfully design।
  • Monitoring + alerting।
  • Half-open phase-এ careful।
  • Combine retry + timeout + bulkhead।
  • Service Mesh (Istio) থাকলে built-in use করুন।

📌 চ্যাপ্টার সারমর্ম

  • Circuit Breaker = failed service-এ call block।
  • Closed → Open → Half-Open three states।
  • Cascading failure prevention।
  • Fallback strategy graceful degradation।
  • Resilience4j, Hystrix — popular libraries।