추적이란 무엇인가요?
분산 추적 정의
분산 추적은 애플리케이션의 전체 경로를 통해 모든 사용자 요청에 대한 엔드 투 엔드 코드 수준 기록(트랜잭션)을 제공하는 일종의 원격 분석 데이터입니다.
분산 추적은 애플리케이션의 상태, 종속성, 및 시스템 구성 요소 간의 상호 작용에 대한 가시성을 제공합니다. 이는 클라우드 네이티브 환경에서 통합 가시성 및 애플리케이션 성능 모니터링(APM)의 필수 구성 요소입니다.
추적은 사이트 안정성 엔지니어(SRE), ITOps 및 DevOps 팀이 시스템 내의 다양한 마이크로서비스를 통한 요청의 엔드 투 엔드 이동 및 동작을 이해할 수 있도록 합니다. 개발자는 추적을 사용하여 성능 및 사용자 경험에 영향을 미치는 병목 현상 및 기타 코드 문제를 찾아 이를 최적화하여 효율적으로 작업을 수행할 수 있습니다.
분산 추적과 기존 추적 비교
분산 추적은 분산 환경을 통해 요청이 이동하는 과정을 관찰하는 방법입니다.
설계상, 분산 아키텍처에는 복잡한 서비스의 네트워크가 포함됩니다. 요청은 여러 마이크로서비스를 거쳐 진행되며 각각 특정 작업을 수행합니다. 결과적으로, 분산 시스템에서 요청을 추적하는 것은 모놀리식 애플리케이션에 사용되는 기존 추적 방식으로는 불가능한 복잡한 작업입니다.
기존 추적은 인사이트가 제한적이며 확장성이 없습니다. 기존 추적 방법은 각 요청에서 무작위로 추출한 추적 샘플을 사용하여 추적이 불완전합니다.
애플리케이션 개발에서 추적이 중요한 이유는 무엇입니까?
추적은 애플리케이션 개발에 있어 중요합니다. 소프트웨어 엔지니어가 수많은 마이크로서비스를 통해 요청을 추적할 수 있게 해주기 때문입니다. 모든 단계를 시각적으로 추적할 수 있는 기능은 추적을 더욱 유용하게 합니다. 추적은 다양한 애플리케이션의 오류를 해결하여 버그 및 성능 문제를 수정할 수 있도록 합니다.
추적은 다음을 돕습니다:
- 문제를 더 빠르게 식별: 분산 시스템에서는 문제 해결이 모놀리식 시스템에서보다 훨씬 더 어렵습니다. 분산 추적은 애플리케이션 오류의 근본 원인과 위치를 신속하게 파악하여 중단을 최소화할 수 있도록 합니다.
- 디버깅 간소화: 추적은 요청이 다양한 마이크로서비스와 상호 작용하는 방식을 포괄적으로 보여 주어 가장 복잡한 아키텍처에서도 디버깅 프로세스를 지원합니다.
- 협업 개선: 분산 환경에서는 여러 팀이 서로 다른 서비스를 작업하는 경우가 많습니다. 추적은 문제가 발생한 위치를 식별하고 이를 해결할 책임이 있는 팀을 지목합니다.
- 개발 속도 향상: 추적을 통해 개발자는 사용자 행동에 대한 귀중한 인사이트를 얻고 애플리케이션 성능을 최적화하며 업데이트 및 새로운 배포에 필요한 작업을 간소화할 수 있습니다.
추적 작동 방식
추적은 마이크로서비스 아키텍처의 여러 서비스를 거치는 요청의 원격 분석 데이터를 수집, 분석 및 시각화하는 방식으로 작동합니다.
추적 (및 기타 원격 분석) 데이터를 생성하기 앞서 애플리케이션을 계측해야 합니다. 계측은 추적 데이터를 추적하기 위해 코드를 추가하는 과정입니다. OpenTelemetry(OTel)와 같은 오픈 소스 플랫폼은 마이크로서비스 아키텍처를 계측하기 위한 벤더 중립적인 SDK, API 및 기타 도구를 제공합니다.

데이터 수집
엔드 투 엔드 분산 추적 도구는 사용자가 요청을 시작하면 데이터를 수집하기 시작합니다. 각 요청이 시스템에 들어올 때 식별 정보인 추적 ID가 추가됩니다. 이 식별 정보는 다양한 서비스와 구성 요소를 거치며 전달됩니다.
요청이 진행되는 동안 각 단계도 기록됩니다. 초기 스팬을 상위 스팬이라고 하며, 이후의 각 스팬은 하위 스팬이라고 합니다. 각 하위 스팬은 원본 추적 ID, 고유 스팬 ID, 타임스탬프, 상태 및 기타 관련 메타데이터로 인코딩됩니다. 스팬은 계층적으로 구성되어 있으며 전체 환경에서 서비스 통해 진행을 이어 나갑니다.
APM의 경우, 애플리케이션을 계측하고 추적 수집을 활성화하면 애플리케이션의 성능을 모니터링하는 데 사용할 수 있는 추적 애플리케이션 메트릭 또는 수치 값을 수집할 수 있습니다. 여기에는 다음이 포함됩니다.
- 요청 속도 — 초당 요청 수
- 오류율 — 실패한 요청의 수
- 지연 시간 — 요청에 응답하는 데 걸리는 시간
- 지속 시간 — 요청에 소요되는 시간
- 처리량 — 지정된 시간 동안 애플리케이션이 처리할 수 있는 요청의 양
추적 분석
요청이 완료되고 추적이 모든 데이터를 수집하면 데이터가 집계됩니다. 개발자는 추적 식별자, 타임스탬프 및 기타 컨텍스트 정보와 같은 스팬의 데이터를 사용하여 리소스 병목 현상, 지연 문제 또는 오류를 찾을 수 있습니다.
모니터링 및 시각화
애플리케이션 메트릭을 추적하는 것은 애플리케이션의 성능을 모니터링하는 데 도움이 될 수 있습니다. 변경 사항이 발생할 경우, SRE 및 DevOps 팀은 즉시 조치를 취할 수 있습니다.
인공 지능(AI)이나 머신 러닝을 사용하면 모니터링 프로세스를 부분적으로 자동화할 수 있으며, 엔지니어들은 잠재적 문제가 발생하기 전에 이에 대한 경고를 받을 수 있습니다. AI 어시스턴트는 다른 소스의 통합 가시성 데이터를 연관시켜 추적 분석을 더 깊이 파고들고 근본적인 문제를 신속하게 탐색하도록 도움을 줄 수 있습니다.
마지막으로 모든 스팬은 폭포 그래프로 시각화되며, 맨 위에는 상위 스팬이, 아래에는 하위 스팬이 위치합니다. 이 그래프를 통해 애플리케이션이 요청에 응답하는 동안 애플리케이션이 어떤 작업을 수행했는지 한눈에 볼 수 있습니다. 그러면 엔지니어가 분산 시스템의 어느 부분에서 성능 문제, 오류, 병목 현상이 발생하는지 파악할 수 있습니다.
OpenTelemetry에서 추적을 위한 개방형 표준
OpenTelemetry는 도구, API 및 SDK로 구성된 오픈 소스 통합 가시성 프레임워크입니다. OTel을 사용하면 SRE, DevOps 및 IT 팀이 추적을 비롯한 원격 분석 데이터를 하나의 통합된 형식으로 계측하고 수집하여 내보내 분석을 수행할 수 있습니다.
클라우드 네이티브 컴퓨팅 재단(CNCF)은 원격 분석 데이터를 수집하고 클라우드 관측 플랫폼으로 라우팅하기 위한 표준화된 프로토콜, 스키마 및 도구를 제공하고자 OTel을 개발했습니다. 추적에 강한 중점을 둔 OTel은 이전의 두 CNCF 프로젝트인 OpenTracing과 OpenCensus가 합병된 결과물입니다. 코드 계측 및 원격 분석 데이터를 통합 가시성 백엔드로 라우팅하기 위한 단일 표준을 설정하도록 설계되었습니다.
2019년 두 프로젝트가 통합된 이후, 오픈소스 커뮤니티와 기업들은 모두 단일하고 통합된 형태의 계측을 제공하고 미래에도 경쟁력을 갖춘 OTel을 채택해 왔습니다.
OpenTelemetry와 개방형 표준 이전에는 통합 가시성 데이터는 일관성이 없고 연관성을 파악하기 어려운 경우가 많았습니다. 분산 환경에서 DevOps와 IT 부서는 조직의 다양한 애플리케이션과 서비스를 지원하는 여러 라이브러리를 여러 프로그래밍 언어로 계측해야 했습니다. 종종 각 코드 계측, APM 또는 추적 도구가 독점적이어서 분산 추적에 수많은 문제가 발생했습니다. 모든 애플리케이션에서 추적을 수집하고 내보낼 수 있는 표준 및 단일 도구가 없는 경우, 엔지니어가 성능 문제나 오류를 찾는 일은 어려운 일입니다.
반면 OTel을 사용하면 엔지니어는 여러 서비스의 추적 데이터를 추적하기 위해 코드를 다시 계측할 필요가 없으며, 변경 사항이 있을 때마다 원격 분석 데이터를 수동으로 다시 라우팅할 필요도 없습니다. OpenTelemetry를 지원하는 통합 가시성 및 모니터링 도구를 위한 오픈 소스 프레임워크는 단 하나뿐입니다.
이상 징후 탐색 및 생성형 AI와의 심층 통합과 같은 새로운 기술이 등장함에 따라 OpenTelemetry는 엔드 투 엔드 분산 추적을 위한 단일 지원 통합 프레임워크를 계속 제공할 것입니다.
OTel 추적 표준에는 다음이 포함됩니다:
- 추적 데이터를 수집하기 위한 단일 API 및 규칙 세트
- 핵심 추적 단위로 정의되는 스팬
- 스팬 명명 및 속성 추가를 위한 시맨틱 규칙
- 다양한 서비스 간의 스팬을 연결하는 컨텍스트 메커니즘
- 다양한 프로그래밍 언어 지원
Elastic과 함께 OpenTelemetry 자세히 알아보기
추적, 메트릭, 로그 및 프로파일
텔레메트리 데이터(로그, 메트릭 및 추적)는 분산 환경에서 애플리케이션, 서버, 서비스 또는 데이터베이스의 동작에 대한 완전한 통합 가시성을 제공합니다. 통합 가시성의 세 가지 주요 요소로 알려진 로그, 메트릭, 및 추적은 모든 사용자 요청과 트랜잭션에 대한 완전하고 연관성 있는 기록을 생성합니다.
세 가지 데이터 유형 각각은 환경에 대한 필수 정보를 제공합니다. 이들은 함께 DevOps, IT 및 SRE 팀이 전체 시스템의 성능을 실시간으로 또는 과거 기록을 통해 추적할 수 있도록 지원합니다.
추적
추적은 컨텍스트를 제공하기 위해 전체 분산 시스템을 통한 요청 경로를 자세히 기록한 것입니다. 추적은 사일로화된 데이터를 통합하고 사용자의 모든 작업을 기록하여 엔지니어가 병목 현상을 발견하고 여러 애플리케이션을 사용하는 애플리케이션을 디버깅 및 모니터링하며 시스템 구성 요소 간의 종속성과 상호 작용을 이해할 수 있도록 합니다.
로그
로그 파일은 이벤트와 시스템 메시지의 타임스탬프가 찍힌 기록입니다. 일반적으로 문제 해결 및 디버깅에 로그를 사용합니다. 시스템 동작에 대한 인사이트를 제공하고 문제를 식별할 수 있도록 합니다.
더구나 대부분의 프로그래밍 언어에는 기본 제공 로깅 기능이 있습니다. 따라서 개발자들은 기존 로깅 프레임워크를 계속 사용하는 경향이 있습니다.
메트릭
메트릭은 일정 기간 동안 시스템의 상태 또는 성능을 나타내는 숫자 값입니다. 메트릭은 핵심 성과 지표입니다. DevOps 및 다른 팀들은 이를 사용하여 시스템의 상태를 모니터링하고 추세를 파악하며 경고를 발령합니다.
프로파일: 최신 통합 가시성의 향후 네 번째 주요 요소
메트릭, 로그, 그리고 추적은 어디에서 무슨 일이 일어나는지에 대한 귀중한 인사이트를 제공합니다. 또한 시스템이 왜 그렇게 작동하는지, 즉 성능 병목 현상이나 연산 낭비가 발생하는 이유를 이해하는 것도 중요합니다. 지속적인 프로파일링이 필요한 이유가 바로 이것입니다. 이는 시스템을 종합적으로 파악할 수 있도록 하며, 코드 수준까지 더 깊은 수준의 가시성을 제공합니다.
분산 추적을 구현하는 방법
분산 추적은 복잡한 시스템과 분산 애플리케이션을 모니터링하고 문제를 해결하는 데 필수적입니다. 분산 추적을 구현하기 전에 추적 목표와 필요를 정의하고 중요한 서비스와 요청 경로를 식별하는 것이 중요합니다. 분산 추적을 성공적으로 구현하기 위한 다섯 가지 단계는 다음과 같습니다:
- 추적 도구 선택 OpenTelemetry(현재 추적, 메트릭 및 로그 수집을 위한 표준 프레임워크)와 같은 추적 도구를 선택합니다. 기존 기술 스택과 호환되어야 하며, 미래에도 사용할 수 있어야 합니다.
- 계측 서비스 및 애플리케이션 여기에는 코드베이스에 추적 코드를 추가하고 애플리케이션에서 추적(스팬)을 정의하는 작업이 포함됩니다.
- 추적 수집 데이터 수집 요청을 시작하여 추적을 수집합니다. 분산 추적의 필수 구성 요소인 컨텍스트 전파를 통해 추적이 정확하고 완전할 수 있도록 합니다.
- 추적 내보내기 모니터링, 분석 및 시각화를 위해 선택한 백엔드 또는 클라우드 추적 서비스 제공 업체로 추적을 내보냅니다.
- 성능 병목 현상, 비효율성, 오류 식별 추적 데이터는 오류를 감지하고 성능이 저하된 서비스를 찾으며 서비스 간 데이터 흐름을 시각화하는 데 도움을 줄 수 있습니다.
전자책(eBook)을 다운로드하여 애플리케이션 성능 모니터링(APM)을 사용해 분산 추적을 구현하는 방법을 알아보세요.
Elastic을 사용한 APM 및 분산 추적
애플리케이션 성능 모니터링(APM)은 최신 통합 가시성에서 핵심적인 역할을 하며 모든 원격 분석 데이터를 통해 머신 러닝으로 컨텍스트를 제공하고 근본 원인 분석을 개선함으로써 사용자를 안내합니다.
Elastic Observability와 강력한 검색 기능을 활용하여 엔드 투 엔드 분산 추적으로 코드 품질을 개선하세요. AWS Lambda, 자동 계측 및 Java, .NET, PHP, Python, Go 등과 같은 널리 사용되는 언어 지원을 포함하여 마이크로서비스, 서버리스 및 모노리식 아키텍처에 걸쳐 분산된 트랜잭션을 캡처하고 분석하세요. 고객 데이터 및 배포 마커를 사용하여 트랜잭션에 주석을 달아 가동 중단 시간을 최소화하고 고객 환경을 최적화하세요.
리소스 추적
- [블로그] 통합 가시성 메트릭 이해: 유형, 핵심 신호 및 모범 사례
- [블로그] 통합 가시성의 세 가지 주요 요소: 통합 로그, 메트릭 및 추적
- [기술 가이드] 샘플 타임라인 추적
- [기술 가이드] 추적