ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 분산 추적에 대해 파헤치기
    프로그래밍 언어/Spring 2024. 8. 7. 19:38

    이 글은 필자가 공부한 내용을 정리한 것에 불과하며 틀린 정보가 있을 수 있으니 주의가 필요합니다.

     

    오늘은 분산 추적에 대해 알아보겠습니다.

    주제에 들어가기 앞서, Spring Cloud(MSA를 구현하기 위해 Spring에서 지원하는 프레임워크의 확장)는 분산 추적과 로깅을 설정할 수 있도록 설계되었습니다. 그만큼 MSA 구현에 있어 분산 추적과 로깅이 중요한 위치에 있다는 뜻인데, 이는 왜 중요한 걸까요?

     

    일단, 분산추적의 정의와 기능에 대해 알아봅시다.

     

    분산추적이란,

    1. 분산 추적은 분산 시스템에서 서비스간의 요청 흐름을 추적하고 모니터링하는 방법입니다.
    2. 이는 각 서비스의 호출 관계와 성능을 시각화하여 문제를 진단하고 해결할 수 있도록 돕습니다.

    분산 추적이 MSA 설계에 필요한 이유는,

    마이크로 서비스 아키텍처에서는 여러 서비스가 협력하여 하나의 요청을 처리합니다. 

    -> 서비스간의 복잡한 호출 관계로 인해 문제 발생시 원인 파악이 어려울 수 있습니다.

    --> 분산 추적을 통해 각 서비스의 호출 흐름을 명확히 파악하고, 성능 병목이나 오류를 빠르게 진단할 수 있습니다.

     

    분산 추적을 관통하는 핵심 개념도 함께 알아봅시다.

    • 더보기
      트레이스
      - 트레이스는 하나의 요청이 시작되고 끝까지 각 서비스를 거치는 전체 흐름을 나타냅니다.
      - 하나의 트레이스는 여러 개의 스팬으로 구성합니다.
      - 분산 시스템에서 클라이언트의 요청이 여러 서비스로 전달될때, 각 서비스 호출이 트레이스의 일부로 기록됩니다.
      - 트레이스 ID 는 각 스팬에 공통으로 부여되고, 이를 통해 전체 요청 흐름을 추적할 수 있습니다.
    • 더보기
      스팬
      - 스팬은 분산 추적에서 가장 작은 단위이고, 특정 서비스 내에서의 개별 작업 또는 요청입니다.
      - 각 스팬은 시작 시간과 종료 시간을 기록하여 작업의 지속 시간을 나타냅니다.
      - 스팬은 고유한 스팬 ID를 가지며, 이는 트레이스 ID와 함께 특정 작업을 식별하는데 사용됩니다.
      - 스팬은 부모-자식 관계를 가질 수 있으며, 이를 통해 호출 계층 구조를 표현합니다.
      - 스팬에는 메타데이터를 추가하여 상세한 정보를 기록할 수 있습니다.
    • 더보기
      컨텍스트
      - 컨텍스트는 요청이 서비스 간에 전달될 때 함께 전파되어, 각 서비스가 요청의 전체 흐름에 대한 정보를 가질 수 있게 합니다.
      - 컨텍스트는 트레이스 ID, 스팬 ID, 부모 스팬 ID 등의 정보를 포함하여 각 서비스가 요청의 출처와 경로를 추적할 수 있도록 돕습니다.
      - 서비스 호출 간에 컨텍스트를 유지함으로써, 분산 시스템 전체에서 일관된 추적이 가능합니다.

    이번에는 분산 추적 기능을 제공하는 라이브러리에 대해 알아보겠습니다.

     

    제가 공부한 라이브러리는 Micrometer와 Zipkin입니다.

     

    Micrometer란?

    • Micrometer는 Spring 기반 어플리케이션에서 메트릭을 수집하고 모니터링하기위한 라이브러리입니다.
    • 주요 특징으로 다양한 메트릭 수집, 유연한 연동, 추적 기능이 있습니다.

    Zipkin이란?

    • Zipkin은 트레이스 데이터를 수집하고 시각화하는 분산 추적 시스템입니다.
    • 각 서비스의 트레이스와 스팬 데이터를 저장하고, 이를 통해 호출 흐름을 시각화합니다.
    • 주요 특징으로 데이터 수집 및 저장, 시각화, 검색 및 필터링이 있습니다.

    분산 추적이 쓰이는 상황에 대해서 알아봅시다.

     

    서비스 호출 흐름 추적

    • 서비스간의 호출 흐름을 추적하고, Zipkin 대시보드에서 시각화 합니다.
    • 각 서비스 호출 시 트레이스와 스팬이 생성되고, Zipkin 서버로 전송합니다.

    성능 병목 진단

    • Zipkin 대시보드를 통해 성능 병목이 발생하는 부분을 식별합니다.
    • 각 스팬의 소요시간와 호출 관계를 분석하여 성능 문제를 진단하고 해결합니다.

    2024.08.07 작성

Designed by Tistory.