Pink Spider/MSA에서 traceId 와 spanId 란?

Created Wed, 02 Apr 2025 10:50:33 +0900 Modified Mon, 08 Dec 2025 08:41:47 +0900
703 Words 3 min

MSA(Microservices Architecture)에서 trace IDspan ID는 **분산 추적(distributed tracing)**에서 사용되는 고유 식별자들이야. 시스템 전체에서 요청의 흐름을 추적할 수 있게 해주는 핵심 개념입니다.


1. Trace ID

  • 하나의 전체 요청(Request)을 식별하는 고유한 ID입니다.
  • 예: 사용자가 웹에서 어떤 버튼을 클릭해서 API 요청이 들어오고, 그 요청이 여러 개의 마이크로서비스를 거쳐 처리되는 경우, 이 전체 흐름을 하나의 trace로 봅니다.
  • 즉, trace ID는 **“이 요청이 어디서 시작돼서 어디까지 갔는가”**를 나타냄.

2. Span ID

  • trace 안에서 **각각의 작업 단위(작은 호출 하나하나)**를 식별하는 ID입니다.
  • 예: A 서비스가 B 서비스와 C 서비스를 호출하면, A-B, A-C 각각이 별도의 span이 되고, 각각에 대한 span ID가 있습니다.
  • Span은 시작 시간, 종료 시간, 어떤 작업인지 등 세부 정보도 포함됩니다.

구조 예시

[Trace ID: abc123]

   ┌─────────────┐       ┌─────────────┐
   │ User Request│──────▶│ API Gateway │───┐
   └─────────────┘       └─────────────┘   │
                                   ┌────────────┐
                                   │ Service A  │───┐
                                   └────────────┘   │
                                            ┌────────────┐
                                            │ Service B  │
                                            └────────────┘
  • 전체 요청의 흐름이 하나의 Trace ID (abc123)를 공유하고,
  • 각 서비스 간 호출은 서로 다른 Span ID를 가짐.

요약

항목 설명
Trace ID 전체 요청 흐름을 추적하기 위한 고유 ID
Span ID Trace 내에서 개별 작업을 구분하는 ID

첨언

  • 실제 MSA 구현시 front end에서 api request시점부터 trace id와 span id가 채번되고
  • 예를 들어, bff -> api-gateway -> user-service 를 통해 request 가 흘러간다면, 각 서비스는 동일한 trace id로 추적이 되어야 합니다.