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