2024-08-05 MSA (Microservices Architecture) - 11

박영무·2024년 8월 5일

MSA

목록 보기
11/12
post-thumbnail

강의 자료 링크 (클릭)

목표

  1. Distributed Tracing과 Micrometer에 대해 이해한다.
  2. Zipkin을 이용하여 실습한다.



Distributed Tracing

- 분산 시스템에서 서비스 간의 요청 흐름을 추적하고 모니터링하는 방법이다.

- 각 서비스들 간의 호출 흐름과 지연 시간을 파악하고 문제가 발생한 서비스를 타게팅할 수 있다.


주요 개념

1. Trace

- 하나의 분산 요청에 대한 전체적인 흐름을 추적하는 단위이다.

- 각 요청이 어떻게 흐르고 있는지를 파악할 수 있게 해준다.

- 여러 개의 span으로 구성된다.

2. Span

- Trace 내의 개별 작업 또는 단위 작업을 나타낸다.

- MSA 환경에서 하나의 요청은 여러 서비스로 나뉘어 처리되며, 각 서비스에서의 처리 과정을 각각 하나의 스팬으로 표현할 수 있다.

3. Context

- Trace와 Span 정보를 담고 있는 상태를 의미한다.

- 해당 상태를 다음 서비스로 전파한다.


Micrometer

- Spring 기반 애플리케이션에서 각 서비스의 metric을 수집하고 시각화한다.

- Distributed Tracing 기능을 통해 서비스 간 호출 흐름을 추적한다.


Zipkin

- Trace 데이터를 수집하고 저장하면서 이를 통해 호출 흐름을 시각화하는 분산 추적 시스템이다.

- 각 서비스가 호출될 때마다 Trace와 Span이 생성되고 Zipkin 서버로 전송된다.

- Zipkin 서버를 실행하기 위해 Docker를 이용해야 한다.


실습

- Windows 환경에서 작업하기 때문에 Docker Desktop 애플리케이션을 실행시킨 후, git bash에서 Docker Hub 계정으로 로그인한다.

- 강의 자료에 나와 있는 커맨드를 실행하여 image를 pull한다.

[그림 1]

[그림 2]

- 브라우저 상에서 'http://localhost:9411/zipkin'에 접속하면 아무 기록이 없는 것을 확인할 수 있다.

[그림 3]

- server, product-service, order-service 순서대로 실행시킨다.

- Postman에서 API가 정상적으로 호출되는지 테스트한다.

[그림 4]

- Zipkin에서 상단의 'RUN QUERY' 버튼을 클릭한다.

[그림 5]

우측의 'SHOW' 버튼을 클릭하여 서비스 지연 시간을 확인할 수 있고 상단의 'Dependencies'에서 'RUN QUERY' 버튼을 클릭하면 호출 관계를 그래프로 확인할 수 있다.

profile
시행착오는 성장의 밑거름입니다.

0개의 댓글