본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

상관관계 ID(Correlation ID, Correlation Identifier)는 여러 메시지나 여러 서비스에 걸쳐 처리되는 하나의 요청을 서로 이어 붙일 수 있도록, 그 요청에 딸린 모든 메시지·로그에 똑같이 실어 보내는 고유 식별자이다.

비동기 메시징에서 요청자는 요청을 보낸 뒤 응답을 기다리는 동안 다른 요청도 보낸다. 응답이 돌아왔을 때 그것이 어느 요청의 응답인지 알아야 하므로, 요청 메시지에 요청 ID 를 넣고 응답자는 그 값을 응답 메시지의 상관관계 ID 로 되돌려 준다. 그레거 호프(Gregor Hohpe)와 바비 울프(Bobby Woolf)는 이를 메시징 패턴 Correlation Identifier 로 정리했다.[1]

마이크로서비스 아키텍처에서는 같은 생각을 로그와 추적에 쓴다. 사용자 요청 하나가 API 게이트웨이를 지나 여러 서비스와 메시지 브로커를 거치면 각 서비스의 로그가 따로 쌓인다. 진입점에서 ID 를 하나 만들어 모든 하위 호출의 헤더와 메시지에 그대로 전달하고 각 서비스가 로그에 그 ID 를 함께 남기면, 나중에 그 ID 로 검색해 요청 하나의 전체 경로를 다시 엮을 수 있다. W3C 의 Trace Context 권고는 이 식별자를 HTTP 헤더 traceparent 의 trace-id 로 표준화해, 서로 다른 추적 도구를 쓰는 시스템 사이에서도 요청을 고유하게 식별할 수 있게 한다.[2]

  1. 요청이 시스템에 처음 들어오는 곳(게이트웨이, 첫 서비스)에서 ID 를 만든다. 들어온 요청에 이미 ID 가 있으면 그것을 이어 쓴다
  2. 하위 서비스를 부를 때 HTTP 헤더(예: traceparent, X-Correlation-ID)나 메시지 속성에 같은 ID 를 넣는다
  3. 각 서비스는 로그 한 줄마다 ID 를 함께 기록한다
  4. 응답 메시지는 요청의 ID 를 상관관계 ID 로 되돌려, 요청자가 어느 요청의 응답인지 짝을 맞춘다[1]
  5. 로그 수집 도구에서 ID 로 검색하면 여러 서비스에 흩어진 기록이 한 흐름으로 모인다

하는 일과 하지 않는 일

편집 원본 편집

상관관계 ID 는 관찰과 짝 맞추기를 위한 값이다.

  • 한다 - 응답과 요청을 짝짓는다, 장애가 난 요청이 어느 서비스에서 얼마나 걸렸는지 찾게 한다, 분산 추적의 기준 키가 된다
  • 하지 않는다 - 네트워크 오류나 서비스 장애를 막지 않는다. 재시도, 타임아웃, 회로 차단기(circuit breaker) 같은 장애 대응은 별도 장치다. 같은 메시지가 두 번 처리되는 것을 막으려면 상관관계 ID 가 아니라 멱등성 키(idempotency key)와 중복 제거가 필요하다

비슷한 식별자와 구별하기

편집 원본 편집
식별자 범위 쓰임
상관관계 ID 요청 하나가 거치는 모든 메시지·서비스 응답 짝 맞추기, 로그 연결
트레이스 ID / 스팬 ID 트레이스 전체 / 그 안의 호출 하나 분산 추적에서 호출 트리 재구성
멱등성 키 같은 작업의 재요청 중복 처리 방지
세션 ID 한 사용자의 여러 요청 로그인 상태 유지
  1. ↑ 1.0 1.1 Gregor Hohpe·Bobby Woolf, 「Correlation Identifier」, Enterprise Integration Patterns, https://www.enterpriseintegrationpatterns.com/patterns/messaging/CorrelationIdentifier.html, 확인일: 2026-11-04.
  2. ↑ 「Trace Context」, W3C Recommendation, https://www.w3.org/TR/trace-context/, 확인일: 2026-11-04.