본문 바로가기
MicroService Architecture/Microservice Design Pattern

분산 추적

by Clark Shim 2021. 3. 6.

분산 추적 패턴은 다음과 같은 문제점, 솔루션, 해결책의 필요 조건이 있다.

 

문제점

시스템 환경에 대한 외부 호출을 처리하는 동안 마이크로서비스 사이에서 흐르는 요청 및 메시지를 추적할 수 있어야 한다.

 

다음은 장애 시나리오의 예다.

- 최종 사용자가 특정 자앵에 대한 해결을 요청했을 때 문제를 일으킨 마이크로서비스를 찾고 근본원인을 찾으려면 어떻게 해야 하는가?

- 특정 엔티티와 관련된 문제를 지원하고자 이와 관련된 모든 로그 메시지를 찾고 싶다. 예를 들어, 어떤 주문 번호에 대한 문제가 발생했을 때 해당 주문의 처리에 관여한 모든 마이크로서비스의 로그 메시지를 찾으려면 어떻게 해야 하는가?

 

다음 다이어그램을 참고한다.

 

해결책

 

공조 마이크로서비스 사이의 처리 과정을 추적하려면 관련된 모든 요청 및 메시지에 상관ID(Correlation ID)를 넣어야 하고, 모든 로그 이벤트에 Correlation ID가 있어야 한다. 중앙화된 로깅 서비스에서 상관 ID를 검색하면 관련된 로그 이벤트를 모두 찾을 수 있다. 비즈니스 관련 식별자(예: 고객, 제품, 주문 등)가 포함된 로그 이벤트를 찾은 다음 상관 ID로 검색하면 해당 비즈니스 식별자와 관련된 모든 로그 이벤트를 찾을 수 있다.

 

해결책의  필요 조건

 

해결책의 필요 조건은 다음과 같다.

- 모든 수신 요청과 이벤트에 고유 Correlation ID를 할당한다. Correlation ID는 헤더와 같이 찾기 쉬운 위치에 넣는다.

- 마이크로서비스에서 외부로 요청이나 메시지를 보낼 때는 요청과 메시지에 Correlation ID를 꼭 넣는다.

- 모든 로그 이벤트에는 사전에 정의한 형식의 Correlation ID가 있어야 한다. 중앙화된 로깅 서비스는 로그 이벤트에서 Correlation ID를 추출해 검색할 수 있다.