학습 목표
1. MSA에서의 요청과 응답의 흐름을 이해한다.
2. 서킷 브레이커의 역할과 작동 방식에 대해 이해한다.
MSA 요청과 응답의 흐름
- 외부 클라이언트가 요청을 보내면
- API게이트웨이가 받고, 인증/인가 처리 -> Gateway 안에 있는 Eureka Client 캐시에서 호출할 서비스(예: Order Service) 인스턴스 목록 확인
- Gateway 내부 클라이언트 사이드 로드밸런서(CSLB)가 어떤 인스턴스에 요청을 보낼지 결정 후 요청 전송
- 요청을 받은 서비스(Order)에서 요청 처리 후 -> 추가로 다른 서비스를 호출해야 할 시에는 본인 서비스 내에서 캐싱된 Eureka Client에서 서비스 인스턴스 목록을 보고 호출할 서비스 인스턴스 주소들을 확인
- FeignClient 안의 클라이언트 사이드 로드밸런서에서 어떤 인스턴스에 요청할지 결정해서 요청을 전송
- 요청을 받은 서비스(Product)에서 요청에 대한 처리
- 응답을 다시 Order에 반환
- Order에서 게이트웨이로 응답 전달
- Gateway가 클라이언트에 응답 반환

서킷브레이커
- 마이크로서비스 간의 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지
- 외부 서비스 호출 실패 시 빠른 실패를 통해 장애를 격리하고, 시스템의 다른 부분에 영향을 주지 않도록 한다.
- 서킷 브레이커 상태: 클로즈드, 오픈, 하프-오픈 상태를 통해 호출 실패를 관리
- Hystrix, Resilience4j 등이 존재
Resilience4j의 주요 특징
- 클로즈드(Closed):
- 기본 상태로, 모든 요청을 통과시킵니다.
- 이 상태에서 호출이 실패하면 실패 카운터가 증가합니다.
- 실패율이 설정된 임계값(예: 50%)을 초과하면 서킷 브레이커가 오픈 상태로 전환됩니다.
- 예시: 최근 5번의 호출 중 3번이 실패하여 실패율이 60%에 도달하면 오픈 상태로 전환됩니다.
- 오픈(Open):
- 서킷 브레이커가 오픈 상태로 전환되면 모든 요청을 즉시 실패로 처리합니다.
- 이 상태에서 요청이 실패하지 않고 바로 에러 응답을 반환합니다.
- 설정된 대기 시간이 지난 후, 서킷 브레이커는 하프-오픈 상태로 전환됩니다.
- 예시: 서킷 브레이커가 오픈 상태로 전환되고 20초 동안 모든 요청이 차단됩니다.
- 하프-오픈(Half-Open):
- 오픈 상태에서 대기 시간이 지나면 서킷 브레이커는 하프-오픈 상태로 전환됩니다.
- 하프-오픈 상태에서는 제한된 수의 요청을 허용하여 시스템이 정상 상태로 복구되었는지 확인합니다.
- 요청이 성공하면 서킷 브레이커는 클로즈드 상태로 전환됩니다.
- 요청이 다시 실패하면 서킷 브레이커는 다시 오픈 상태로 전환됩니다.
- 예시: 하프-오픈 상태에서 3개의 요청을 허용하고, 모두 성공하면 클로즈드 상태로 전환됩니다. 만약 하나라도 실패하면 다시 오픈 상태로 전환됩니다.
- Fallback: 호출 실패 시 대체 로직을 제공하여 시스템 안정성 확보
- 모니터링: 서킷 브레이커 상태를 모니터링하고 관리할 수 있는 다양한 도구 제공
<흐름>

오늘의 코멘트
한번에 꼼꼼하게 공부하려는 것도 좋지만, 전체적 흐름을 파악한 뒤, 세부적인 사항을 공부하는 것도 좋은 방법이라는 것을 깨달았다.
'Architecture&Pattern > MSA' 카테고리의 다른 글
| SAGA 패턴과 Saga Orchestration (0) | 2025.11.27 |
|---|---|
| 251022 (수) MSA - Config 서버와 이벤트 드리븐 [개념] (0) | 2025.10.22 |
| 251017 (금) SpringCloud (0) | 2025.10.17 |