Day 82 · 3/5
🌳 고급 고급

Correlation ID가 뭔가요?

쉽게 이해하기

Correlation ID는 택배 송장번호 같아요. 물건이 여러 물류센터를 거쳐 가더라도, 송장번호 하나로 전체 배송 경로를 추적할 수 있잖아요. 마찬가지로 API 요청이 여러 마이크로서비스를 거쳐도, 하나의 ID로 전체 흐름을 따라갈 수 있어요.

핵심 정리

분산 시스템에서 하나의 요청을 추적하기 위한 고유 식별자예요.

자세히 알아보기

Correlation ID는 하나의 사용자 요청이 여러 서비스를 거치는 분산 시스템에서, 그 요청과 관련된 모든 로그를 연결하기 위한 고유 식별자예요. 마이크로서비스 아키텍처에서 디버깅과 모니터링을 위해 필수적이에요. 동작 방식은 이래요. 클라이언트가 API Gateway에 요청을 보내면, Gateway가 UUID 같은 고유 ID를 생성해서 HTTP 헤더(보통 X-Correlation-ID)에 추가해요. 이 요청이 인증 서비스, 결제 서비스, 알림 서비스를 차례로 거치면서 각 서비스는 받은 Correlation ID를 자신의 로그에 기록하고, 다음 서비스로 요청할 때도 헤더에 포함시켜요. 결과적으로 모든 서비스의 로그를 Correlation ID로 필터링하면 하나의 요청이 시스템을 통과한 전체 여정을 볼 수 있어요. 실무에서는 로깅 라이브러리나 미들웨어를 사용해 자동으로 처리해요. Node.js의 cls-hooked나 Python의 contextvars로 요청 컨텍스트를 관리하면, 모든 로그에 자동으로 Correlation ID가 포함되도록 만들 수 있어요. OpenTelemetry 같은 Observability 도구는 이를 표준화해서 제공하죠. 디버깅 시나리오를 예로 들면, 사용자가 "결제가 안 돼요"라고 신고했을 때 Correlation ID가 없으면 수십 개 서비스의 로그를 일일이 뒤져야 해요. 하지만 Correlation ID가 있으면 Kibana나 CloudWatch에서 하나의 ID로 검색해서 전체 에러 체인을 한눈에 볼 수 있어요.