본문 바로가기

MicroService Architecture/Microservice Design Pattern

분산 추적

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

 

문제점

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

 

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

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

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

 

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

 

해결책

 

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

 

해결책의  필요 조건

 

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

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

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

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