주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 4장 외부 연동이 문제일 때 살펴봐야 할 것들
외부 시스템 연동은 “우리 코드가 아닌 부분”이 섞이기 때문에 장애 해석이 더 어렵다.
실무에서는 연동 자체보다 실패를 어떻게 다루는가가 더 중요하다.
외부 연동에서 흔한 문제
- 타임아웃
- 일시적 네트워크 실패
- 상대 시스템의 지연 증가
- 재시도로 인한 중복 요청
- 스펙 변경
- 부분 성공 상태
먼저 구분해야 할 것
1. 연결 실패인가, 응답 지연인가
- DNS 문제
- TCP 연결 실패
- TLS handshake 실패
- 애플리케이션 레벨 응답 지연
이걸 구분하지 않으면 원인을 잘못 짚는다.
2. 일시적 실패인가, 구조적 실패인가
- 순간적 timeout
- 특정 시간대 집중 부하
- 잘못된 요청 형식
- 상대 시스템 장애
재시도 가능한 실패와 아닌 실패를 구분해야 한다.
실무에서 꼭 필요한 패턴
타임아웃 분리
- connection timeout
- read timeout
- write timeout
을 나눠서 봐야 한다. 하나로 뭉뚱그리면 어디서 지연되는지 알 수 없다.
재시도
재시도는 만능이 아니다.
- 멱등한 요청인가
- 중복 결제가 가능한가
- 재시도 폭주가 추가 부하를 만들지 않는가
를 먼저 봐야 한다.
Circuit Breaker
외부 시스템이 죽었는데 계속 호출하면 우리 서비스도 같이 망가질 수 있다.
그래서 일정 수준 이상 실패하면 빠르게 차단하는 전략이 필요하다.
Fallback
실패 시:
- 빈 응답
- 캐시된 응답
- 대체 경로
중 무엇을 줄지 사전에 정해야 한다.
로그와 모니터링
외부 연동은 반드시 아래 정보가 남아야 한다.
- 대상 시스템
- 요청 식별자
- latency
- 상태 코드
- timeout 여부
- retry 횟수
이게 없으면 “간헐적 실패”를 설명할 수 없다.
정리
외부 연동 문제는 라이브러리 사용법보다 실패 모델을 이해하는 게 핵심이다.
주니어는 특히 “성공 경로 구현”에 집중하기 쉽지만, 실무에서는 실패 경로를 먼저 설계하는 쪽이 더 중요하다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
댓글
아직 댓글이 없습니다