Wzorce zapewniające Robustness i Reliability
1. Circuit Breaker
Chroni system przed kaskadowymi awariami.
Jeśli zależność zewnętrzna (np. API, baza) przestaje odpowiadać – przerywa próby i wraca od razu z fallbackiem lub błędem.
Biblioteki: resilience4j, Hystrix, AWS Retry Strategy
2. Retry with Backoff
Automatyczne ponawianie operacji (np. 3x co 100ms z narastającym opóźnieniem).
Must-have przy chwilowej niedostępności usług zewnętrznych.
Uwaga: Retry bez Circuit Breakera to przepis na katastrofę (DDoS samego siebie).
3. Timeouts Everywhere
Nigdy nie pozwalaj na „wieszenie się” requestów.
Każda komunikacja (z bazą, API, nawet lokalnie) musi mieć timeout (np. 3 sekundy).
Dotyczy: HTTP clients, DB drivers, SDK (np. AWS SDK), messaging queues.
4. Bulkhead Isolation
Oddzielenie części systemu logicznie i technologicznie.
Awaria jednej funkcji nie może pociągnąć całego systemu (np. osobne procesy lub kontenery, osobne wątki, osobne pule zasobów).
Przykład: osobne thread pool’e dla krytycznych i niekrytycznych funkcji.
5. Fail Fast
Jeśli coś nie działa – powiedz o tym od razu.
Lepiej zakończyć transakcję z błędem niż wisić bez końca.
6. Graceful Degradation
Gdy nie możesz wykonać operacji, dostarcz wartość częściową lub komunikat.
Przykład: strona e-commerce bez rekomendacji, gdy serwis AI nie działa.
7. Idempotency
Operacje mogą być wykonane wiele razy z tym samym rezultatem.
Kluczowe przy płatnościach, aktualizacjach, powtórzeniach requestów (retry).
8. Rate Limiting + Throttling
Ochrona systemu przed zalaniem (np. atakiem lub błędnym klientem).
Można używać np. Token Bucket / Leaky Bucket +
nginx,API Gateway.
9. Chaos Engineering (advanced)
Świadome wprowadzanie błędów i awarii w systemie, by sprawdzić odporność.
Netflix: Simian Army, Chaos Monkey – uczysz się w warunkach bojowych.

