분산 추적(Distributed Tracing)에 대한 개요

날아올라돼지야·2024년 8월 30일
0

이 강의에서는 관측성과 모니터링의 세 번째 요소인 분산 추적(Distributed Tracing)에 대해 알아보겠습니다. 이전 강의에서 로그(logs)메트릭스(metrics)라는 두 가지 주요 요소를 다뤘습니다. 이 두 가지를 통해 애플리케이션의 내부 상태와 전체적인 건강 상태를 파악할 수 있습니다. 그러나 분산 환경에서 특히 마이크로서비스클라우드 네이티브 애플리케이션에서는 로그와 메트릭스만으로는 문제를 디버깅하기에 충분하지 않을 수 있습니다.

1. 분산 추적의 필요성

  • 분산 애플리케이션에서 사용자 요청은 여러 애플리케이션이나 마이크로서비스를 거쳐 전달됩니다.
  • 이와 같은 복잡한 시스템에서는 요청이 어떤 경로를 통해 이동했는지, 각 서비스에서 얼마나 시간이 소요되었는지 파악하기가 어렵습니다.
  • 따라서, 개발자가 요청이 어디까지 전달되었는지, 어떤 서비스에서 시간이 소요되고 있는지를 파악할 수 있어야 합니다. 이때 분산 추적이 필요합니다.

2. 분산 추적의 개념

분산 추적은 특히 마이크로서비스나 클라우드 네이티브 애플리케이션에서 요청이 여러 서비스와 컴포넌트를 거치는 동안의 흐름을 이해하고 분석할 수 있는 기술입니다. 이를 통해 개발자는 분산 시스템에서 발생하는 문제를 진단할 수 있습니다.

3. 분산 추적 구현의 주요 요소

  • 태그(tags): 각 로그에 메타데이터를 추가하여 로그가 어떤 서비스에 속하는지, 또는 특정 사용자의 요청인지 등을 파악할 수 있습니다.
  • 추적 ID(trace ID): 요청이 분산 시스템에 들어갈 때 생성되는 고유 식별자입니다. 이 ID는 해당 요청과 관련된 모든 로그에 포함되어야 하며, 요청이 여러 서비스에 걸쳐 이동할 때 동일하게 유지됩니다.
  • 스팬 ID(span ID): 요청이 각 마이크로서비스에서 처리될 때마다 생성되는 고유 식별자입니다. 각 서비스에서 발생한 로그에는 동일한 스팬 ID가 포함됩니다.

예시를 통한 설명

  1. 게이트웨이 서버에서의 추적 ID 생성:

    • 사용자가 customerDetails API를 호출하면, 게이트웨이 서버에서 추적 ID가 생성됩니다.
    • 이 추적 ID는 요청이 전달되는 모든 서비스(예: accounts, loans, cards)에서 동일하게 유지됩니다.
  2. 스팬 ID:

    • 각 서비스는 고유의 스팬 ID를 가지며, 해당 서비스 내에서 발생한 모든 로그에 동일한 스팬 ID가 포함됩니다.

4. 분산 추적 구현의 중요성

분산 시스템에서는 문제를 디버깅하기 위해 로그와 메트릭스만으로는 충분하지 않습니다. 분산 추적을 통해 요청의 흐름을 추적하고, 각 단계에서의 성능을 분석하며, 문제가 발생한 지점을 정확히 파악할 수 있습니다.

5. 다음 단계

앞으로의 강의에서는 이러한 분산 추적을 실제로 구현하는 방법을 살펴보고, 이를 통해 분산 시스템에서 문제를 어떻게 추적하고 해결할 수 있는지 데모를 통해 보여드리겠습니다.

이 강의에서 다룬 분산 추적의 개념이 아직 명확하지 않더라도 걱정하지 마세요. 실제 구현을 통해 더욱 명확해질 것입니다.

감사합니다. 다음 강의에서 뵙겠습니다.

profile
무슨 생각하며 사니

0개의 댓글