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

분산 추적 정의

분산 추적은 분산 시스템 또는 마이크로서비스 환경을 통해 이동하는 애플리케이션 요청을 추적하고 관찰하는 데 사용되는 기술입니다.

분산 추적은 트랜잭션 프로세스 전반에 걸쳐 사용자의 상호 작용에 대한 데이터를 수집하고 집계하여 이러한 애플리케이션 요청을 추적합니다. 이 기술은 애플리케이션의 상태와 전반적인 사용자 경험에 대한 인사이트를 제공합니다. 개발자는 이러한 추적 컬렉션을 사용하여 버그, 오류 또는 높은 지연 시간이 있는 영역을 해결할 수 있습니다.

전문가의 인사이트를 바탕으로 한 최신 기술 뉴스

Think 뉴스레터를 통해 AI, 자동화, 데이터 등 가장 중요하고 흥미로운 업계 동향에 대한 최신 소식을 받아보세요. IBM 개인정보 보호정책을 참조하세요.

감사합니다! 구독이 완료되었습니다.

구독한 뉴스레터는 영어로 제공됩니다. 모든 뉴스레터에는 구독 취소 링크가 있습니다. 여기에서 구독을 관리하거나 취소할 수 있습니다. 자세한 정보는 IBM 개인정보 보호정책을 참조하세요.

분산 추적은 어떻게 작동하나요?

이제 분산 추적이 무엇인지 알았으니 작동 방식에 대해 자세히 알아보겠습니다. 모놀리식 애플리케이션과 달리 마이크로서비스 환경은 분산된 백엔드에서 실행되므로 전체 요청 여정을 추적하기가 더 어렵습니다. 다행히 분산 추적은 각 단계에서 사용자의 작업을 추적하고 프론트엔드에서 백엔드까지 애플리케이션에 미치는 영향을 모니터링할 수 있습니다.

분산 추적은 마이크로서비스 아키텍처를 계측하는 것에서 시작됩니다. OpenTelemetry와 같은 오픈 소스 도구를 사용하여 계측 및 원격 분석 수집 프로세스를 시작할 수 있습니다.

다음으로, 개발자는 추적 데이터를 추적하고 각 트랜잭션에 고유 식별자를 태그하는 코드를 서비스에 구현해야 합니다. 인코딩된 추적 컨텍스트는 전체 애플리케이션 환경을 통해 한 서버에서 다른 서버로 전달됩니다. 트랜잭션 여정에 연결된 식별자는 고객 경험에 대한 가시성을 제공합니다.

분산 추적 도구는 이벤트에 의해 트리거된 후 서버를 통해 이동하는 각 활동 또는 세그먼트를 추적합니다. 한 스팬이 수집되면 다음 스팬으로 이동하는 방식으로 진행됩니다. 이러한 스팬은 일반적으로 상위 스팬에서 시작하여 하위 스팬으로 이동합니다.

도구는 이러한 작업을 순서대로 배치하고 사용자 지정 속성, 타임스탬프 및 메타데이터와 같은 관련 지표를 수집합니다. 일반적으로 분산 추적 도구를 사용하면 이 데이터를 플레임 그래프 또는 워터폴 보기 형식으로 시각화할 수 있습니다. 이러한 그래프는 엔지니어가 분산 시스템의 어느 부분에서 병목 현상, 속도 저하 또는 성능 문제가 발생하고 있는지 해석하는 데 도움이 됩니다.

마지막으로, 애플리케이션의 엔드투엔드 모니터링을 위해서는 분산 추적 도구와 관측 가능성 플랫폼을 결합해야 합니다. Instana와 같은 플랫폼을 포함하면 데이터를 추출하고 처리하는 데 도움이 되므로 애플리케이션 오류를 해결하기 위한 올바른 다음 단계를 수행할 수 있습니다.

IBM DevOps

DevOps란 무엇인가요?

Andrea Crawford는 DevOps의 정의, DevOps의 가치, 그리고 DevOps 사례와 툴이 아이디어 구상부터 프로덕션에 이르기까지 전체 소프트웨어 Delivery Pipeline을 통해 앱을 이동하는 데 어떻게 도움이 되는지 설명합니다. 최고의 IBM 사고 리더가 이끄는 이 커리큘럼은 비즈니스 리더가 성장을 주도할 수 있는 AI 투자의 우선순위를 정하는 데 필요한 지식을 얻을 수 있도록 설계되었습니다.

분산 추적의 이점과 과제

현대 아키텍처의 복잡성으로 인해 모놀리식 레거시 애플리케이션이 이를 호스팅하는 도구를 제공하기가 어려워졌습니다. 이러한 과제를 생각했을 때, 분산 추적은 클라우드 네이티브 환경에서 관측 가능성을 확보하는 데 있어 필수적인 요소가 되었습니다.

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

  • 더 빠른 문제 해결: 평균 해결 시간(MTTR)과 평균 발견 시간(MTTD)을 대폭 단축합니다. 엔지니어는 분산된 추적을 검토하여 애플리케이션 오류의 근본 원인과 위치를 찾을 수 있습니다.

  • 팀 협업 강화: 일반적인 마이크로서비스 환경에서는 전문 팀이 다양한 기술을 다루고 개발합니다. 이러한 상황에서는 오류가 발생한 위치와 해결 책임자가 누구인지 모르는 경우 팀 간에 혼란이 발생할 수 있습니다. 추적 링크를 사용하면 엔지니어링 팀이 데이터를 시각화하여 올바른 개발자에게 문제를 해결하도록 알릴 수 있습니다.
     

  • 유연한 통합 및 구현: 개발자는 거의 모든 클라우드 네이티브 환경에 분산 추적을 구현할 수 있습니다. 이 도구는 다양한 프로그래밍 언어 및 애플리케이션과 호환됩니다.

이러한 각 이점은 서버에서 단일 요청을 처리하는 방식에 대한 인사이트를 제공하여 애플리케이션 성능을 개선합니다. 분산 추적에는 많은 이점이 있지만, 알아두어야 할 몇 가지 문제도 있습니다.

  • 수동 계측: 일부 분산 추적 플랫폼에서는 개발자가 사용자 요청 추적을 시작하려면 코드를 수정해야 합니다. 수동 계측 프로세스는 많은 시간이 소요되고 애플리케이션이 버그에 더 취약해지며 추적 누락으로 결론이 날 수 있습니다.
     

  • 프론트엔드 분석 부족: 분산 추적 도구를 구매할 때는 엔드투엔드 범위를 지원하는지 확인하는 것이 중요합니다. 이 기능이 없으면 최종 사용자의 프론트엔드 경험 없이 백엔드에 대한 인사이트만 얻을 수 있습니다. 이러한 제한으로 인해 애플리케이션 디버깅이 훨씬 더 어려워질 수 있습니다.
     

  • 샘플링: 일부 분산 추적 도구는 샘플링 및 분석할 추적을 무작위로 선택하는 임의 샘플링을 사용합니다. 추적이 무작위로 선택되고 어떤 추적에 문제가 있는지 알 수 있는 방법이 없기 때문에 팀에서 중요한 오류를 놓칠 수 있습니다.

분산 시스템을 사용할 때 발생할 수 있는 몇 가지 어려움이 있지만, 이점은 거의 항상 단점보다 큽니다. 분산 추적 도구를 Instana와 함께 사용하면 이러한 문제를 실시간으로 해결할 수 있습니다.

분산 추적 및 로깅 비교

분산 추적과 로깅의 차이점을 이해하려면 먼저 로그의 정의에 대해 알아볼 필요가 있습니다. 로그는 애플리케이션 시스템 내에서 발생하는 이벤트의 타임스탬프입니다. 로깅은 로그가 식별한 이러한 중요한 이벤트를 모니터링하여 애플리케이션 내에서 예측할 수 없는 동작을 강조 표시합니다. 이는 오류가 발생하면 자동 응답이 트리거되고 DevOps 팀에 이를 알립니다.

로깅 자체의 주요 단점 중 하나는 추적 없이는 애플리케이션 성능을 완전히 포괄적으로 살펴볼 수 없다는 것입니다.

분산 추적은 추적 ID를 사용하여 컨텍스트와 함께 시스템 내 트랜잭션을 추적합니다. 이 컨텍스트를 사용하면 시스템에서 오류가 발생한 정확한 위치를 찾을 수 있습니다. 마이크로서비스 기반 시스템에 대한 이러한 가시성은 트랜잭션 환경 전반에서 탐지에 대한 응답 시간을 줄여줍니다. 따라서 많은 팀이 최신 애플리케이션 상태를 전체적으로 파악하기 위해 분산 추적과 로깅을 함께 사용합니다.

분산 추적 도구

분산 추적 도구는 일반적으로 계측, 데이터 수집 및 데이터를 플레임 그래프로 시각화할 수 있도록 지원합니다. 분산 추적 솔루션을 설정하는 가장 보편적인 방법은 오픈 소스 도구를 사용하는 것입니다.

시중에서 가장 인기 있는 오픈 소스 옵션은 다음과 같습니다.

  • OpenTelemetry: OpenTelemetry는 소프트웨어 개발 키트(SDK), 데이터 수집 소프트웨어, 공급업체 중립적인 API 및 계측 도구 모음을 제공합니다. 이는 OpenCensus와 OpenTracing을 결합한 것입니다. 클라우드 환경을 위한 이 성능 모니터링 프레임워크는 가장 널리 사용되는 분산 추적 도구 중 하나입니다. OTel에는 데이터 분석 또는 시각화를 위한 도구가 포함되어 있지 않지만 이 연구를 수행하기 위해 원격 분석 데이터를 타사 애플리케이션으로 보낼 수 있습니다.

  • OpenCensus: OpenCensus는 Google의 내부 추적 시스템을 기반으로 Google에서 만들었습니다. 이는 향후 오픈 소스로 공개되어 다중 언어 라이브러리에서 사용할 수 있게 되었습니다. 이는 디버깅을 돕기 위해 데이터를 수집하고 백엔드 플랫폼으로 전송할 수 있지만, 안타깝게도 소프트웨어를 코드에 임베드할 수 있는 API가 부족합니다. 이러한 제한은 Cloud Native Computing Foundation(CNCF)이 OpenCensus와 OpenTracing을 결합하여 OpenTelemetry를 만든 주된 이유 중 하나입니다.

  • OpenTracing: OpenTracing은 개발자가 분산 추적을 위한 코드를 계측할 수 있도록 지원하는 공급업체에 구애받지 않는 API입니다. 이 오픈 소스 프로젝트는 Java, Python, Ruby 등 9개 언어로 제공됩니다.

  • Zipkin: Zipkin은 Twitter에서 만든 또 다른 오픈 소스 프로젝트입니다. 이 분산 추적 시스템은 DevOps 전문가가 중요한 애플리케이션 데이터를 수집하고 다양한 서비스 아키텍처의 지연 시간 문제를 해결하는 데 도움이 됩니다. Apache, Kafka 또는 HTTP를 사용하여 Zipkin에 데이터를 보고할 수 있습니다.
  • Jaeger: Jaeger는 이 목록에서 가장 최근에 만들어진 오픈 소스 프로젝트로, Uber에서 만들었으며 OpenTracing과 쉽게 통합됩니다. 이 도구는 매우 탄력적이어서 마이크로서비스 환경에서 요청을 추적하는 데 매우 적합한 옵션입니다. Zipkin과 Jaeger는 둘 다 통계 시각화를 지원하지만 데이터 샘플링과 관련해서는 제한이 있습니다.

과거에는 OpenCensus와 OpenTracing이 인기가 있었지만 OpenTelemetry, Zipkin 또는 Jaeger를 사용하는 것이 좋습니다. 이러한 도구를 APM 또는 Instana와 같은 관측 가능성 도구와 함께 사용하면 애플리케이션 내에서 무슨 일이 일어나고 있는지 완전하고 명확하게 파악할 수 있습니다.

Instana를 사용하여 모든 서버에서 모든 요청을 추적하세요.

애플리케이션과 애플리케이션 구성 요소 간에 전달되는 메시지 간의 상호 작용을 이해하려면 추적 기능이 필요합니다. Instana AutoTrace를 사용하면 모든 요청을 캡처하고 오픈 소스 API의 추적을 상호 연관시키는 기능 덕분에 어떤 컨텍스트나 호출도 놓치지 않게 됩니다. Instana의 Dynamic Graph를 활용하면 이 과정이 더욱 쉬워집니다.

Instana는 애플리케이션, 서비스 및 시스템 아키텍처 간의 각 추적을 최적화하여 시스템 전체를 커버합니다. 분산 추적을 제공하는 Instana의 기능을 사용해 보려면 2주 무료 체험판에 가입하세요.

관련 솔루션
IBM DevOps Accelerate

온프레미스, 클라우드 또는 메인프레임의 모든 애플리케이션에 대한 소프트웨어 제공을 자동화합니다.

DevOps Accelerate 살펴보기
DevOps 솔루션

DevOps 소프트웨어 및 도구를 사용하여 여러 장치 및 환경에서 클라우드 네이티브 앱을 구축, 배포 및 관리합니다.

DevOps 솔루션 살펴보기
클라우드 컨설팅 서비스 

IBM Cloud 컨설팅 서비스를 통해 새로운 역량을 개발하고 비즈니스 민첩성을 향상하세요. 하이브리드 클라우드 전략 및 전문가 파트너십을 통해 솔루션을 공동으로 개발하고, 디지털 혁신을 가속화하고, 성능을 최적화하는 방법을 알아보세요.

클라우드 서비스
다음 단계 안내

지속적인 통합 및 배포를 통해 안전한 클라우드 네이티브 앱을 빌드, 테스트 및 배포할 수 있는 DevOps의 잠재력을 활용하세요.

DevOps 솔루션 살펴보기 DevOps 활용 사례 살펴보기