시간나는대로 틈틈히 정리 합시다~~!!!

[마이크로서비스 디자인 패턴] 분산 추적 (distributed tracing) 본문

IT

[마이크로서비스 디자인 패턴] 분산 추적 (distributed tracing)

열심히 정리하자!! 2021. 3. 30. 00:16
반응형

1. 문제점

시스템 환경에 대한 외부 호출을 처리하는 동안 마이크로서비스 사이에서 흐르는 요청 및 메시지를 추적 할 수 있어야 함
장애 시나리오 예시
- 최종 사용자가 특정 장애에 대한 해결을 요청했을 때 문제를 일으킨 마이크로서비스를 찾고 근본 원인을 밝히려면
  어떻게 해야 하는가?
- 특정 엔티티와 관련된 문제를 지원하고자 이와 관련된 모든 로그 메시지를 찾고 싶다. 
  예를 들어, 어떤 주문 번호에 대한 문제가 발생했을 때 해당 주문의 처리에 관여한 모든 마이크로서비스의 
  로그 메시지를 찾으려면 어떻게 해야 하는가?

2. 해결책

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

 

3. 해결 필요조건

- 모든 수신 요청과 이벤트에 고유 상관 ID를 할당한다. 
- 상관 ID는 헤더와 같이 찾기 쉬운 위치에 넣는다.
- 마이크로서비스에서 외부로 요청이나 메시지를 보낼 때는 요청과 메시지에 상관 ID를 꼭 넣는다.
- 모든 로그 이벤트에는 사전에 정의한 형식의 상관 ID가 있어야 한다. 
- 중앙화된 로깅 서비스는 로그 이벤트에서 상관 ID를 추출해 검색할 수 있다.

 

4. 구현된 오픈소스 도구

- 스프링클라우드 : 스프링 클라우드 슬루스(Sleuth)와 집킨(Zipkin)
- 이스티오 : 예거(Jaeger)

반응형
Comments