기본 콘텐츠로 건너뛰기

라벨이 외부 API인 게시물 표시

동기 외부 API 호출이 느려질 때 서버 장애로 번지지 않게 막는 방법

동기 외부 API 호출이 느려질 때 서버 장애로 번지지 않게 막는 방법 빠른 답 동기 외부 호출은 connection timeout , read timeout , connection pool wait timeout 을 나눠 설정해야 합니다. 외부 서비스 여러 개가 같은 HTTP 커넥션 풀을 공유하면, 한 서비스의 지연이 다른 연동까지 막을 수 있습니다. 서비스별 커넥션 풀, 동시 실행량 제한, 서킷 브레이커를 함께 두면 장애 전파 범위를 줄일 수 있습니다. fallback은 실패를 숨기는 장치가 아니라, 실패를 기록하면서 사용자 흐름을 어디까지 유지할지 정하는 정책입니다. 목차 시간 흐름으로 이해하기 선택 기준 매트릭스 외부 API 지연이 내부 장애로 번지는 이유 동기 호출 흐름과 대기 지점 타임아웃 3가지를 나눠 설정하기 커넥션 풀 분리와 벌크헤드 서킷 브레이커와 fallback 설계 동시 실행량 제한 예시 디버깅과 운영 점검 순서 배포와 운영 체크리스트 흔한 오해와 주의할 점 시간 흐름으로 이해하기 장애 시작 외부 API A의 응답 시간이 길어지고, 내부 요청 스레드가 응답을 기다립니다. → 호출 누적 사용자 요청은 계속 들어오고, A를 호출하는 요청이 커넥션과 스레드를 오래 점유합니다. → 대기 확산 커넥션 풀의 사용 가능한 연결이 줄어들고, 새 요청은 외부 API로 나가기 전부터 풀 앞에서 기다립니다. → 내부 영향 timeout, 벌크헤드, 서킷 브레이커가 없으면 A의 지연이 내부 API 전체 응답 시간과 실패율로 번집니다. → 보호 동작 실패율이나 느린 호출 비율이 기준을 넘으면 서킷 브레이커가 호출을 잠시 막고 빠른 실패나 fallback으로 전환합니다. 선택 기준 매트릭스 외부 API가 가끔 느려지는 상황 타임아웃을 먼저 설정합니다. 요청이 끝없이 대기하지 않도록 서버 자원 점유 시간을 제한할 수 있습니다. 특정 외부 서비스 장애가 다른 연동까지 밀어내는 상황: 외부 서비스별 커넥션 풀을 분리합니다. 한 풀의 고갈이 전체 외부...