홈 › 실무 확장 › 11 / 22

외부 API 연동

타임아웃·재시도·멱등성·서킷 브레이커·동시 한도·폴백
섹션 7진행 0 / 22

7. 정리

  • 외부 API 호출은 실패가 예외가 아니라 정상 범위입니다. 타임아웃 없는 호출 하나가 톰캣 스레드 전체를 묶는 연쇄 장애로 이어집니다.
  • 재시도는 5xx·타임아웃·429 에만, 4xx 는 즉시 실패입니다. 지수 백오프와 지터로 상대를 더 괴롭히지 않습니다.
  • POST 재시도는 중복 처리를 만들 수 있으므로 멱등 키가 필수입니다. 지원하지 않으면 재시도 대신 상태 조회로 확정합니다.
  • 서킷 브레이커는 죽은 상대에게 계속 타임아웃을 기다리는 낭비를 끊고, 회복할 시간을 벌어 줍니다.
  • 동시 한도는 상대가 아니라 우리 쪽에서 먼저 지켜야 429 차단과 계약 위반을 피할 수 있습니다.
  • 폴백은 조회성은 캐시, 필수 기능은 명확한 오류, 발송성은 큐잉으로 성격에 맞게 고릅니다. 값을 안 두는 결정도 명시적으로 남깁니다.
  • 폐쇄망에서는 프록시와 사내 CA truststore 설정이 필수이고, TrustAll 은 금지입니다. 응답 검증으로 필수 필드 누락·타입 변경도 함께 잡아야 계약 위반이 조용히 흘러가지 않습니다.
  • 이 레슨의 ApiClient·CircuitBreaker 는 Spring Boot 의 RestClient, Resilience4j 의 @Retry·@CircuitBreaker, 그리고 미확인 상태를 나중에 확정하는 아웃박스 패턴으로 그대로 이어집니다.