포스트

주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 4장 외부 연동이 문제일 때 살펴봐야 할 것들

외부 시스템 연동은 “우리 코드가 아닌 부분”이 섞이기 때문에 장애 해석이 더 어렵다.
실무에서는 연동 자체보다 실패를 어떻게 다루는가가 더 중요하다.

외부 연동에서 흔한 문제

  • 타임아웃
  • 일시적 네트워크 실패
  • 상대 시스템의 지연 증가
  • 재시도로 인한 중복 요청
  • 스펙 변경
  • 부분 성공 상태

먼저 구분해야 할 것

1. 연결 실패인가, 응답 지연인가

  • DNS 문제
  • TCP 연결 실패
  • TLS handshake 실패
  • 애플리케이션 레벨 응답 지연

이걸 구분하지 않으면 원인을 잘못 짚는다.

2. 일시적 실패인가, 구조적 실패인가

  • 순간적 timeout
  • 특정 시간대 집중 부하
  • 잘못된 요청 형식
  • 상대 시스템 장애

재시도 가능한 실패와 아닌 실패를 구분해야 한다.

실무에서 꼭 필요한 패턴

타임아웃 분리

  • connection timeout
  • read timeout
  • write timeout

을 나눠서 봐야 한다. 하나로 뭉뚱그리면 어디서 지연되는지 알 수 없다.

재시도

재시도는 만능이 아니다.

  • 멱등한 요청인가
  • 중복 결제가 가능한가
  • 재시도 폭주가 추가 부하를 만들지 않는가

를 먼저 봐야 한다.

Circuit Breaker

외부 시스템이 죽었는데 계속 호출하면 우리 서비스도 같이 망가질 수 있다.
그래서 일정 수준 이상 실패하면 빠르게 차단하는 전략이 필요하다.

Fallback

실패 시:

  • 빈 응답
  • 캐시된 응답
  • 대체 경로

중 무엇을 줄지 사전에 정해야 한다.

로그와 모니터링

외부 연동은 반드시 아래 정보가 남아야 한다.

  • 대상 시스템
  • 요청 식별자
  • latency
  • 상태 코드
  • timeout 여부
  • retry 횟수

이게 없으면 “간헐적 실패”를 설명할 수 없다.

정리

외부 연동 문제는 라이브러리 사용법보다 실패 모델을 이해하는 게 핵심이다.
주니어는 특히 “성공 경로 구현”에 집중하기 쉽지만, 실무에서는 실패 경로를 먼저 설계하는 쪽이 더 중요하다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

댓글

아직 댓글이 없습니다