분산 추적이란 무엇인가요?

분산 추적은 분산 시스템을 통해 전달되는 데이터 요청을 관찰하는 것입니다. 최신 마이크로서비스 아키텍처에는 작은 독립 구성 요소가 여러 개 있는 경우가 많습니다. 이러한 구성 요소는 복잡한 작업을 수행하기 위해 API를 사용하여 지속적으로 통신하고 데이터를 교환합니다. 분산 추적을 통해 개발자는 다양한 마이크로서비스 전반에서 요청 경로를 추적하거나 시각적으로 추적할 수 있습니다. 이러한 가시성은 오류를 해결하거나 버그 및 성능 문제를 해결하는 데 도움이 됩니다.

분산 추적의 이점은 무엇인가요?

소프트웨어 개발자는 거의 모든 클라우드 네이티브 환경에서 분산 추적 시스템을 구현할 수 있을 뿐만 아니라 클라우드 애플리케이션이 생성하는 분산 추적을 기록할 수 있습니다. 또한 추적 도구는 다양한 프로그래밍 언어와 소프트웨어 스택을 지원하므로 소프트웨어 팀은 동일한 플랫폼에서 다양한 애플리케이션의 성능 데이터를 모니터링하고 수집할 수 있습니다. 

개발 팀은 분산 추적을 사용하여 관찰 가능성을 개선하고 기존 소프트웨어 디버깅 및 모니터링 도구로는 해결할 수 없는 성능 문제를 해결합니다. 

분산 추적의 추가 이점은 다음과 같습니다.

소프트웨어 문제 해결 가속화

최신 애플리케이션은 분산 시스템 전반에서 데이터를 교환하고 서비스 요청을 이행하기 위해 수많은 마이크로서비스를 사용합니다. 마이크로서비스 기반 아키텍처에서 성능 문제를 해결하는 것은 단일 소프트웨어 애플리케이션보다 훨씬 더 어렵습니다. 단일 애플리케이션과 달리 특정 소프트웨어 문제의 근본 원인은 명확하지 않을 수 있습니다. 여러 소프트웨어 모듈 간의 중첩되고 복잡한 상호 작용으로 인해 문제를 진단하기가 어려울 수 있습니다. 

분산 추적을 통해 소프트웨어 팀은 다양한 마이크로서비스와 데이터 스토리지를 연결하는 복잡한 경로를 통과하는 데이터를 모니터링할 수 있습니다. 소프트웨어 팀은 분산 추적 도구를 사용하여 요청을 추적하고 데이터 전파 경로를 정밀하게 시각화합니다. 소프트웨어 팀은 성능 문제를 신속하게 해결하고 서비스 중단을 최소화할 수 있습니다. 

개발자 협업 개선

여러 개발자가 클라우드 애플리케이션 구축에 관여하는 경우가 많으며, 각 개발자는 하나 이상의 마이크로서비스를 담당합니다. 개발자가 마이크로서비스에서 교환한 데이터를 추적할 수 없는 경우 소프트웨어 개발 프로세스가 느려집니다. 분산 추적 시스템을 통해 개발자는 마이크로서비스의 모든 서비스 요청에 대해 로그 및 추적과 같은 원격 측정 데이터를 제공하여 협업할 수 있습니다. 개발자는 테스트 및 프로덕션 과정에서 발견된 버그 및 기타 소프트웨어 문제에 정확하게 대응할 수 있습니다. 

출시 소요 시간 단축

분산 추적 플랫폼을 배포하는 조직은 최종 사용자를 위한 소프트웨어 애플리케이션 릴리스 작업을 간소화하고 가속화할 수 있습니다. 소프트웨어 팀은 분산된 트레이스를 검토하여 소프트웨어 개발 속도를 높이고, 개발 비용을 최소화하고, 사용자 행동을 이해하고, 시장 준비를 개선하는 인사이트를 얻습니다. 

분산 추적에는 어떤 유형이 있나요?

소프트웨어 팀은 분산 추적 도구를 사용하여 애플리케이션을 모니터링, 분석 및 최적화합니다.

코드 추적

코드 추적은 특정 기능을 수행할 때 애플리케이션의 소스 코드 흐름을 검사하는 소프트웨어 프로세스입니다. 개발자가 코드의 논리적 흐름을 이해하고 알려지지 않은 문제를 식별하는 데 도움이 됩니다. 예를 들어 개발자는 코드 추적을 사용하여 서비스 요청이 데이터베이스를 쿼리하는 단계를 호출했는지 확인합니다. 일부 소프트웨어 기능이 응답하지 못할 경우 추적 시스템은 적절한 오류 상태를 수집하고 응답 시간에 주의를 기울입니다. 

프로그램 추적

프로그램 추적은 개발자가 활성 애플리케이션에서 호출한 명령 및 변수의 주소를 검사할 수 있는 방법입니다. 소프트웨어 애플리케이션을 실행할 때 애플리케이션은 할당된 특정 메모리 공간에 있는 각 코드 줄을 처리합니다. 또한 애플리케이션은 기기 메모리에 저장된 변수를 처리합니다. 자동화된 도구가 없으면 프로그램 및 데이터 메모리의 변경 사항을 검사하기가 어렵습니다. 소프트웨어 팀은 프로그램 추적을 통해 메모리 오버플로, 과도한 리소스 소비, 로직 작업 차단과 같은 심층적인 성능 문제를 진단할 수 있습니다. 

엔드 투 엔드 추적

개발 팀은 엔드 투 엔드 추적을 통해 서비스 요청 경로를 따라 데이터 변환을 추적할 수 있습니다. 애플리케이션이 요청을 시작하면 추가 처리를 위해 다른 소프트웨어 구성 요소에 데이터를 보냅니다. 개발자는 추적 도구를 사용하여 중요한 데이터가 겪는 변경 사항을 처음부터 끝까지 추적하고 컴파일합니다. 애플리케이션을 통해 전달되는 요청을 애플리케이션 중심으로 볼 수 있습니다.

마이크로서비스 아키텍처에서 엔드투엔드 분산 추적은 어떻게 작동하나요?

애플리케이션을 사용할 때 사용자는 서비스 요청을 시작하고 다른 애플리케이션 구성 요소가 요청을 처리합니다. 

사용자가 온라인 영화 예약 애플리케이션에서 티켓을 예약한다고 가정해 보겠습니다. 사용자는 연락처 세부 정보, 영화 세부 정보 및 결제 정보를 입력하고 지금 예약하기를 선택합니다. 다음과 같은 요청이 생성됩니다.

  • 사용자가 입력한 데이터를 검증하는 마이크로서비스 A.
  • A의 데이터를 가져와 고객 데이터베이스에 레코드를 생성하는 마이크로서비스 B.
  • B로부터 데이터를 가져와 결제를 검증하는 마이크로서비스 C.
  • C에서 데이터를 가져와 좌석을 할당하고 영화 티켓 데이터를 생성하는 마이크로서비스 D.
  • D에서 데이터를 가져와 서식이 지정된 티켓 PDF 파일을 만드는 마이크로서비스 E.

그런 다음 티켓 PDF가 포함된 응답이 E, D, C, B, A 등 마이크로서비스 체인에 다시 반환되어 최종적으로 사용자에게 전달됩니다. 위의 예는 간단합니다. 요청은 종종 수십 개의 마이크로서비스와 애플리케이션 외부의 타사 소프트웨어 구성 요소 체인을 거칩니다. 이로 인해 프로세스가 점점 더 복잡해집니다.

분산 추적 시스템은 분산 컴퓨팅 환경의 다른 마이크로서비스 및 소프트웨어 구성 요소와 서비스 요청의 이러한 상호 작용을 추적합니다. 분산 추적은 요청 생성과 응답 수신 사이에 발생하는 타임라인과 모든 작업을 나타냅니다. 소프트웨어 팀은 추적을 사용하여 초기 요청과 상호 작용하는 여러 마이크로서비스를 통한 데이터 이동을 추적합니다. 

스팬

서비스 요청을 처리할 때 애플리케이션은 여러 작업을 수행할 수 있습니다. 이러한 동작은 분산 추적에서 범위로 표시됩니다. 예를 들어 범위는 API 호출, 사용자 인증 또는 스토리지 액세스 활성화일 수 있습니다. 단일 요청으로 여러 작업이 발생하는 경우 초기(또는 상위) 범위가 여러 하위 범위로 분기될 수 있습니다. 상위 및 하위 범위로 구성된 이러한 중첩된 계층은 서비스 요청을 수행하기 위해 수행한 단계를 연속적이고 논리적으로 표현합니다.

트레이스 ID

분산 추적 시스템은 모든 요청에 고유한 ID를 할당하여 요청을 추적합니다. 각 스팬은 해당 스팬이 속한 원래 요청의 동일한 트레이스 ID를 상속합니다. 또한 스팬에는 고유한 스팬 ID가 태그되어 추적 시스템이 수집한 메타데이터, 로그 및 지표를 통합하는 데 도움이 됩니다. 

지표 수집

각 스팬이 서로 다른 마이크로서비스를 통과할 때 개발자에게 소프트웨어 동작에 대한 심층적이고 정확한 통찰력을 제공하는 지표가 추가됩니다. 범위와 함께 오류율, 타임스탬프, 응답 시간 및 기타 메타데이터를 수집할 수 있습니다. 트레이스가 전체 주기를 완료한 후 분산 추적 도구는 수집된 모든 데이터를 통합합니다. 

예를 들어, API 호출은 응답 시간, 오류 상태, 여러 타사 서비스에서 수행한 보조 기능 분석을 통해 평가됩니다. 추적 도구는 데이터를 시각적 형태로 변환하여 주요 지표와 성과 요약을 강조 표시합니다. 이러한 방식으로 사이트 안정성 엔지니어는 오류를 신속하게 식별하고, 중요한 데이터 요소를 검사하고, 개발 팀과 협업하여 성능 문제를 해결하고 서비스 수준 계약(SLA) 준수를 보장할 수 있습니다.

분산 추적 표준이란 무엇인가요?

분산 추적 표준은 개발자를 위한 공통 프레임워크와 소프트웨어 도구를 제공합니다. 이러한 표준은 최신 애플리케이션 환경에서 서비스 요청을 모니터링, 시각화 및 분석합니다. 분산 추적 워크플로를 표준화함으로써 소프트웨어 팀은 공급업체에 종속되지 않고 요청 추적을 계측할 수 있습니다. 

다음 섹션에서는 분산 추적을 수행할 때 상호 운용성을 지원하기 위해 도입된 표준을 설명합니다.

OpenTracing

OpenTracing은 클라우드 네이티브 컴퓨팅 재단(CNCF)에서 개발한 오픈 소스 분산 추적 표준입니다. OpenTracing은 개발자가 계측 API를 사용하여 트레이스를 생성할 수 있도록 하는 데 중점을 둡니다. 이를 통해 개발자는 코드 기반, 라이브러리 또는 기타 종속성의 다양한 부분에서 분산 트레이스를 생성할 수 있습니다.

OpenCensus

OpenCensus는 소프트웨어 지표를 추출하고 분석하기 위해 백엔드 시스템으로 보낼 수 있는 다국어 라이브러리로 구성됩니다. 개발자는 제공된 API를 사용하여 트레이스가 생성되고 수집되는 방식을 관리할 수 있습니다. OpenTracing과 달리 개발자는 개별 코드 기반 및 라이브러리 대신 단일 프로젝트 리포지토리에서 OpenCensus를 사용합니다. 

OpenTelemetry

OpenTelemetry는 OpenTracing과 OpenCensus를 통합합니다. 두 표준의 장점을 결합하여 포괄적인 분산 추적 프레임워크를 제공합니다. OpenTelemetry는 분산 추적을 보다 쉽게 구현할 수 있는 광범위한 소프트웨어 개발 키트, API, 라이브러리 및 기타 계측 도구를 제공합니다. 

분산 추적과 로깅의 차이점은 무엇인가요?

로깅은 애플리케이션이 실행될 때 발생하는 특정 이벤트를 기록하는 방법입니다. 로깅 도구는 시스템 오류, 사용자 상호 작용, 통신 상태 및 기타 지표와 같은 타임스탬프가 지정된 이벤트를 수집하여 개발 팀이 시스템 이상을 감지하는 데 도움을 줍니다. 일반적으로 로깅에는 두 가지 유형이 있습니다. 

  • 중앙 집중식 로깅은 기록된 모든 활동을 수집하여 단일 위치에 저장합니다.
  • 분산 로깅은 클라우드의 개별 위치에 로그 파일을 저장합니다. 

두 로깅 방법 모두 개발자에게 애플리케이션에서 발생한 상황을 보여주는 정적 인시던트 개요를 제공합니다. 반면 분산 추적은 서비스 요청 기간 동안 수집된 다양한 원격 측정 데이터의 상관 관계를 분석하여 사고가 발생한 이유를 명확히 하는 감사 추적을 제공합니다. 분산 추적은 특정 서비스 요청을 추적하기 위해 로깅 및 기타 데이터 수집 방법을 사용할 수 있습니다. 

분산 추적의 문제점은 무엇인가요?

분산 추적은 소프트웨어 문제를 진단, 디버깅 및 해결하는 개발자의 업무를 단순화했습니다. 그럼에도 불구하고 소프트웨어 팀이 추적 도구를 선택할 때 염두에 두어야 할 다음과 같은 과제가 남아 있습니다.

수동 계측

일부 추적 도구를 사용하려면 소프트웨어 팀이 필요한 트레이스를 생성하기 위해 코드를 수동으로 계측해야 합니다. 개발자가 추적 요청을 위해 코드를 수정하면 프로덕션 릴리스에 영향을 미치는 코딩 오류가 발생할 위험이 있습니다. 게다가 자동화가 이루어지지 않으면 추적이 복잡해져 데이터 수집이 지연되고 부정확해질 수 있습니다. 

제한된 프런트엔드 지원

추적 도구가 백엔드 분석으로 제한되는 경우 개발자가 성능 문제를 완전히 감독하지 못할 수 있습니다. 경우에 따라 분산 추적 시스템은 첫 번째 백엔드 서비스가 요청을 수신할 때만 데이터 수집을 시작합니다. 즉, 개발자는 해당 사용자 세션 중에 프런트엔드 서비스에서 발생하는 문제를 감지하고 검사할 수 없습니다.

무작위 샘플링

일부 도구에서는 소프트웨어 팀이 추적의 우선 순위를 지정할 수 없으므로 관찰 가능성을 무작위로 샘플링한 추적으로 제한할 수 있습니다. 샘플 데이터가 제한적이기 때문에 조직은 추적 도구를 사용할 수 없는 주요 문제를 포착하기 위해 추가적인 소프트웨어 문제 해결 접근 방식이 필요합니다. 

AWS는 분산 추적 요구 사항을 어떻게 지원할 수 있나요?

AWS X-Ray는 소프트웨어 개발자가 사용자 요청을 추적하고 클라우드 애플리케이션의 병목 현상을 식별하는 데 도움이 되는 분산 추적 플랫폼입니다. 조직에서는 X-Ray를 사용하여 애플리케이션 지표를 시각화하고 워크로드 가용성을 개선합니다. AWS X-Ray를 사용하면 다음을 수행할 수 있습니다.

지금 계정을 만들어 AWS를 기반으로 분산 추적을 시작하세요.

AWS의 다음 단계

무료 계정 가입

AWS 프리 티어에 즉시 액세스할 수 있습니다.

가입 
콘솔에서 구축 시작

AWS Management Console에서 구축을 시작하세요.

로그인