🌳 고급 고급
분산 추적(Distributed Tracing)
쉽게 이해하기
택배를 보내면 '집화 → 터미널 → 터미널 → 배송' 같은 경로를 추적할 수 있잖아요. 어느 단계에서 지연됐는지 한눈에 보이죠. 분산 추적도 똑같아요. 사용자 요청이 API 게이트웨이 → 인증 서비스 → 주문 서비스 → 재고 서비스 → 결제 서비스를 거치는 전체 여정을 추적해서, 어디서 느려졌는지 찾아내는 거예요.
핵심 정리
마이크로서비스 환경에서 하나의 요청이 여러 서비스를 거쳐가는 전체 흐름을 추적하고 시각화해서, 병목 지점이나 에러를 찾아내는 기술이에요.
자세히 알아보기
마이크로서비스는 수십 개의 서비스가 복잡하게 연결되어 있어요. 사용자가 '상품 주문이 느려요'라고 하면, 어느 서비스가 문제인지 찾기가 정말 어려워요. 각 서비스의 로그를 일일이 뒤져봐야 하고, 시간대를 맞춰서 연결 고리를 찾아야 하니까요. 분산 추적은 이 문제를 해결해줘요.
핵심 개념은 Trace와 Span이에요. Trace는 하나의 요청이 시스템을 통과하는 전체 여정이고, Span은 그 여정 속 개별 작업 단위예요. 예를 들어 '상품 조회' Trace는 'API 호출 Span → 인증 Span → DB 쿼리 Span → 캐시 조회 Span'으로 구성되죠. 각 Span은 시작/종료 시간, 서비스 이름, 성공/실패 같은 메타데이터를 담고 있어요.
모든 서비스가 요청을 받을 때 Trace ID와 Span ID를 HTTP 헤더로 전달받아요. 그리고 자신의 작업을 새로운 Span으로 기록하고, 다음 서비스를 호출할 때 이 ID들을 다시 넘겨주죠. 이렇게 하면 분산된 여러 서비스의 로그가 하나의 Trace로 연결돼요.
실무에서는 Jaeger, Zipkin, AWS X-Ray 같은 도구를 써요. OpenTelemetry는 표준 계측 라이브러리로, 코드에 간단히 추가하면 자동으로 Span을 생성해줘요. 분산 추적 데이터를 보면 어느 서비스가 느린지, 에러율이 높은지, 서비스 간 의존성이 어떤지 한눈에 파악할 수 있어요. 대규모 마이크로서비스 운영에는 필수적인 observability 도구예요.