•
타임 아웃
◦
HTTP 커넥션 풀 사용시 추가 타임 아웃 설정
▪
풀에서 커넥션 구할 때 대기하는 최대 시간
▪
보통 1초~5초 이내로 설정
•
외부 연동 서비스가 많을 때
◦
특정 서비스 장애 → 전체 영향
◦
A, B, C 연동에 대해 커넥션 풀을 공유할 때
▪
A 서비스의 장애로 응답 시간 지연이 발생하면
→ 풀에 남은 유휴 커넥션이 줄어듦
→ 풀에서 커넥션을 구하는 대기 시간이 증가
→ B, C 서비스에 대한 연동도 같이 대기하게 됨
벌크헤드
•
개념
◦
기능/서비스/클라이언트 마다 자원 사용 분리
◦
한 기능/서비스 장애가 다른 기능/서비스에 주는 영향 최소화
•
서비스에 적용 / 예) 외부 서비스마다 별도 커넥션풀 사용
◦
트래픽 규모에 따라 다른 커넥션 풀 설정
◦
A 서비스와 연동이 느려져도 B, C 서비스 연동은 영향 감소
외부 시스템 장애 지속
•
계속되는 타임아웃/50x 응답에 따른 서비스 에러
•
외부 서비스가 비정상임에도 계속해서 요청을 보냄
•
응답 시간 느려짐, 처리량 감소
서킷브레이커를 적용하면 응답 시간 일정하게 유지
서킷 브레이커
•
오류 지속시 일정 시간동안 기능 실행을 차단함
•
기능을 실행하지 않고 바로 에러 응답(fault fast, fail fast)
→ 빠른 실패: 외부 서비스 장애에 따른 응답 시간 증가 감소
서킷 브레이커 동작 방식
정리
•
연동 시스템 장애시 영향을 줄이는 세 가지 방법
◦
타임 아웃
◦
벌크헤드
◦
서킷브레이커
◦
장애 전파 차단