A
약 80초
분산 시스템 디버깅 경험 구체화
분산 시스템 디버깅에서 가장 어려운 건 에러가 발생한 서비스와 실제 원인이 된 서비스가 다른 경우입니다. 졸업 프로젝트에서 주문 서비스가 가끔 타임아웃을 리턴하는 문제를 잡을 때, 처음에는 주문 서비스 코드를 봤지만 원인이 없었습니다. 분산 추적(Zipkin)을 연동해 서비스 간 호출 체인을 추적했더니 결제 서비스의 외부 API 응답 지연이 전파된 것이었습니다. 이 경험에서 배운 건 분산 시스템에서는 에러 로그만 보지 않고 전체 트레이스를 먼저 확인해야 한다는 것입니다. 또한 타임아웃 값이 서비스마다 달라 체인 전파 속도가 다른 문제도 함께 발견해 통일했습니다. 앞으로도 분산 추적 도구와 로그를 함께 활용해 서비스 간 연쇄 문제를 파악하는 방식을 유지하겠습니다. 앞으로도 분산 추적 도구와 로그를 함께 활용해 서비스 간 연쇄 문제를 파악하는 방식을 유지하겠습니다.
분산 시스템에서 에러 발생 위치와 원인 위치는 다른 경우가 많습니다. 서비스 간 타임아웃 설정을 통일하는 것이 예상치 못한 연쇄 장애를 막는 기본 구조입니다.
이 결의 특징
에러 발생 위치와 원인 위치가 다르다는 걸 실제로 겪은 경험(주문 서비스 오류의 원인이 결제 서비스였던)으로 짚는 결이다.
이 결이 통하는 자리
디버깅 방법을 도구 이름 나열로 답하기 쉬운 질문에서, 원인 추적의 함정을 짚는 답이 통하는 자리다.