📝 개념 정리
마이크로서비스 환경에서는 하나의 서비스 장애가 다른 서비스로 전파되어 전체 시스템 장애로 이어질 수 있습니다.
예를 들어, Order Service에서 주문을 생성하는 도중 User Service가 응답하지 않으면, Order Service도 정상적으로 동작할 수 없습니다.
이때 응답 무한 대기 또는 전체 서비스 중단이 발생할 수 있습니다.
이를 해결하기 위해 회복성(Resilience) 패턴이 필요합니다.
Resilience4j는 자바 기반 마이크로서비스에서 장애 허용성(Fault Tolerance)을 구현하는 경량 라이브러리입니다.
💡 Resilience4j 주요 회복성 패턴
- Circuit Breaker (서킷 브레이커)
- 연속적인 실패가 발생하면 요청을 차단하여 장애 확산 방지
- 상태: Closed → Open → Half-Open
- Retry (재시도)
- Rate Limiter (속도 제한)
- Bulkhead (격벽)
- 동시 실행 수 제한하여 특정 서비스의 부하가 다른 서비스로 전파되는 것 방지
- Time Limiter (타임아웃)
- Cache (캐시)
⚙️ 장애 발생 시 처리 흐름 예시
- Order Service가 User Service로 사용자 정보 요청
- User Service 장애로 응답 불가
- Resilience4j Circuit Breaker가 연속 실패 감지 후 회로(Open)로 전환
- Retry 패턴으로 지정 횟수 재시도