여러 서비스를 거친 요청은 어떻게 따라가는가?
답변 연습
내 답변 적어보기접힘
모범답안 확인하기내 답변 뒤에 열어보세요
호출 경계를 넘을 때 같은 trace-id와 현재 부모 span 정보를 함께 전달한다. 각 서비스는 자기 작업을 새 span으로 기록해 한 사용자 요청이 지나간 경로와 시간을 다시 조립할 수 있게 한다.
클라이언트→게이트웨이
traceparent가 없으면 새 trace를 시작한다
게이트웨이→주문
trace-id를 잇고 게이트웨이 span을 부모로 넘긴다
주문→메시지
비동기 전송에도 추적 문맥을 함께 넣는다
컨슈머→수집기
연결 정보와 시작·끝·상태를 보낸다
수집기→화면
같은 trace의 span을 호출 경로로 조립한다
HTTP에서는 W3C의 traceparent와 선택적인 tracestate가 도구 사이의 공통 형식이다. 헤더 이름을 직접 만들어 쓰면 프록시와 다른 관측 도구를 지날 때 추적이 끊기기 쉽다.
외부에서 받은 문맥은 형식을 검증하고 신뢰 경계를 넘을 때 전달 범위를 정한다.
모든 trace를 저장하기 어렵다면 표본을 고른다. head sampling은 요청 시작 때 결정해 싸지만 아직 실패와 최종 지연을 모른다.
tail sampling은 span을 모은 뒤 결과로 결정해 오류와 느린 요청을 남길 수 있지만 수집기의 메모리·처리량과 결정 지연을 치른다.
어떤 방식도 중요한 trace를 무조건 보존한다고 가정하지 않는다.
trace-id는 사용자 식별자가 아니다. tracestate와 span 속성에 개인정보나 인증 토큰을 넣지 않는다. 높은 카디널리티 값과 원문 요청도 비용과 유출 위험을 키우므로 허용 목록과 마스킹 규칙을 둔다.
지표는 오류율과 지연 분포처럼 전체 경향을 알려준다. trace는 그중 한 요청이 어디서 시간을 썼는지 보여준다. 로그는 해당 span 안의 구체적인 사건을 남긴다. 세 신호를 trace-id와 span-id로 연결하되 서로를 대체한다고 보지 않는다.
추천 꼬리질문
관련 질문
- 게이트웨이를 두면 무엇을 얻고 무엇을 걱정해야 하는가?아키텍처 · 분산시스템게이트웨이에서 요청에 추적 ID를 부여하여 여러 서비스를 거치는 요청의 흐름을 추적하는 분산 추적(Distributed Tracing) 기능을 수행한다.
- 요청 공통 처리는 어느 지점에 두는가?프레임워크요청의 흐름을 추적하고 공통 처리하는 지점(인터셉터, 필터 등)은 요청 추적 ID 부여와 밀접한 관련이 있다.
- 로그 레벨을 구분하여 설정하는 이유는 무엇인가?인프라 · 보안관측 가능성의 두 기둥 — 무엇을 남길지(레벨)와 어떻게 이을지(추적).
- 요청을 어떤 서버로 보낼지 어떻게 정하는가?네트워크
- 요청이 한꺼번에 몰릴 때 어떻게 막는가?인프라 · 보안