Jump to section

Jaeger란?

URL 복사

Jaeger는 분산 서비스 간 트랜잭션을 추적하는 오픈소스 소프트웨어로, 복잡한 마이크로서비스 환경을 모니터링하고 트러블슈팅하는 데 사용됩니다.

분산 추적은 마이크로서비스 간 복잡한 상호 작용에서 이벤트 전체를 파악하는 방식입니다.

현대적인 클라우드 네이티브 소프트웨어 개발은 각기 다른 핵심 기능을 제공하는 개별 서비스인 마이크로서비스에 의존합니다. 사용자가 애플리케이션에서 요청을 보내면 여러 개별 서비스가 이에 응답하여 결과를 생성합니다.

애플리케이션에서의 단 한 번의 호출로 상호 작용하는 수십 개의 서로 다른 서비스가 실행될 수도 있습니다. 어떤 문제가 발생하거나 요청의 실행 속도가 느릴 경우 개발자와 엔지니어가 문제를 파악하기 위해서는 모든 연결을 추적할 수 있는 방식이 필요합니다.

바로 이런 경우에 분산 추적이 사용됩니다. 일반적으로 서비스 메쉬의 일부로 실행되는 분산 추적은 마이크로서비스를 관리하고 관찰할 수 있는 방법입니다.

Jaeger는 분산 추적을 사용해 다양한 마이크로서비스의 요청 경로를 추적하기 때문에 모호하게 추측하는 것이 아니라 실제 요청 흐름을 시각적으로 확인할 수 있습니다.

트랜잭션에 대한 체계적인 정보는 디버깅이나 최적화에 유용하게 활용될 수 있습니다. Jaeger는 분산 트랜잭션을 모니터링하고, 성능과 대기 시간을 최적화하고, 문제 해결을 위한 근본 원인 분석(Root Cause Analysis, RCA)을 수행할 툴을 갖추고 있습니다.

Jaeger는 여러 커뮤니티의 도움으로 완성되는 오픈소스 프로젝트입니다. Jaeger는 벤더에 종속되지 않는 OpenTracing API와 계측을 기반으로 합니다.

차량 공유 서비스 기업인 우버(Uber)에서 2015년 Jaeger를 오픈소스 프로젝트로 개발했습니다. 2017년 Cloud Native Computing Foundation(CNCF) Incubation 프로젝트로 채택되었으며 2019년에는 정식 프로젝트로 승인되었습니다.

Jaeger는 분산 시스템으로부터 '추적'을 수집, 저장, 시각화하여 요청이 시스템을 통해 흘러가는 방식과 시간이 소요되는 곳, 그리고 오류가 발생하는 곳에 대한 인사이트를 제공합니다.

Jaeger는 실행 요청을 추적으로 표시합니다. 추적은 시스템 전반에서 데이터/실행 경로를 나타냅니다. 

추적은 1개 이상의 스팬으로 이루어집니다. 스팬은 Jaeger에서 작업의 논리적 단위입니다(예: 데이터베이스 쿼리, HTTP 요청). 각 스팬에는 운영 작업의 이름, 시작 시간, 기간이 포함되어 있습니다. 스팬은 중첩되거나 순서대로 정리되어 있을 수 있습니다.

Jaeger의 프로세스

Jaeger는 분산 시스템 전반에서 작업의 실행을 추적하고 Jaeger의 여러 구성 요소에 특정 루틴을 할당하는 방식으로 작동합니다. 

OpenTelemetry SDK는 모든 프로그래밍 언어에서 사용할 수 있으며, 그 후에 Jaeger나 기타 추적 플랫폼이 이해하는 형식으로 내보낼 수 있습니다.

작동 중인 Jaeger는 아래의 프로세스를 따릅니다.

  1. Jaeger 추적은 애플리케이션 계측에서 시작됩니다. 계측을 통해 애플리케이션의 코드를 수정하여 추적을 생성합니다. 계측은 다양한 프로그래밍 언어에 제공되는 Jaeger 클라이언트 라이브러리를 사용하는 수동 방식, 또는 OpenTracing API나 OpenTelemetry API를 지원하는 미들웨어와 프레임워크를 사용하는 자동 방식으로 수행할 수 있습니다.
  2. 애플리케이션이 실행되면, 추적은 마이크로서비스 전반에 걸친 작업의 상세 실행 경로를 제공합니다. 각 추적은 여러 스팬으로 구성되며, 각 스팬에는 작업 이름, 시작 및 종료 시간, 그리고 추가 컨텍스트(예: HTTP 상태 코드, 오류 메시지)를 제공하는 키-값 쌍 태그와 같은 정보가 포함됩니다.
  3. 여러 스팬을 한꺼번에 단일 추적에 연결하기 위해 Jaeger는 식별자는 물론, 서비스 간 기타 추적 컨텍스트를 요청과 응답의 일부로 전달합니다. 이를 컨텍스트 전파라고 합니다. 각 스팬과 추적에는 요청 여정의 개별 구성 요소들을 하나로 구성할 수 있는 고유 ID가 있습니다.
  4. 스팬은 Jaeger 클라이언트 라이브러리를 사용하여 수집되고, 주로 애플리케이션과 함께 배포되거나 쿠버네티스와 같은 환경에서 데몬셋으로 배포되는 Jaeger Agent로 전송됩니다.
  5. Jaeger Collector는 Jaeger Agent로부터 스팬을 수신하고 이를 백엔드 데이터베이스에 저장합니다. Jaeger는 Elasticsearch, Cassandra, Google Cloud Bigtable 등 여러 스토리지 옵션을 지원하므로 추적 데이터를 확장 가능하고 유연한 방식으로 관리할 수 있습니다.
  6. Jaeger Query 서비스는 사용자에게 추적을 검색하고 시각화할 수 있는 UI를 제공합니다. 개발자와 운영자는 Jaeger UI를 사용하여 개별 추적의 상세 정보를 탐색하고, 스팬 계층 및 시기를 시각화하고, 시스템 행동과 성능을 분석할 수 있습니다.
  7. Jaeger Console은 분산된 추적 데이터를 시각화하는 사용자 인터페이스로, 사용자는 대기 시간 문제, 오류 분석, 종속성 분석, 성능 최적화에 대한 인사이트를 얻을 수 있습니다.

Jaeger는 분산 시스템을 통해 마이크로서비스 및 요청의 행동에 대한 인사이트를 제공합니다. 제공하는 내용은 다음과 같습니다.

  1. 성능 최적화: Jaeger는 일련의 마이크로서비스 내부에서 지연이 발생하고 있는 위치를 정확히 파악하는 것은 물론, 서비스 간에 상호 작용하고 상호 의존하는 방식을 시각화하여 리소스 할당을 최적화할 수 있습니다.
  2. 근본 문제 분석: Jaeger 추적은 서비스 장애 또는 예기치 못한 결과를 출처까지 추적하여 빠른 문제 해결을 지원합니다. 또한 Jaeger는 모니터링 시스템과 통합되어 대기 시간이나 오류 발생률의 급증과 같은 비정상적 패턴이 나타날 때 팀에 경고를 보낼 수 있습니다.
  3. 보안 및 컴플라이언스: 추적은 데이터가 시스템을 통해 흐르는 과정을 보여주므로 감사 추적의 한 형태로 사용될 수 있으며, 이는 데이터 핸들링 및 처리와 관련된 규정 요건을 준수하는 데 있어 매우 중요합니다.
  4. 개발 및 테스트: 개발자는 로컬 환경에서 Jaeger 추적을 수행할 수 있으므로 애플리케이션을 배포하기 전에 오류, 대기 시간 및 종속성 문제를 감지할 수 있습니다. 

Red Hat® OpenShift® Observability는 OpenShift 기반 애플리케이션과 인프라의 성능 및 상태에 대한 심층적인 인사이트를 제공하는 통합 관측성 기능 세트입니다. Red Hat 관측성 스택의 특징은 분산 추적으로, 2024년까지 Jaeger가 포함되었습니다. 2024년 초에 Red Hat은 Jaeger와 Elasticsearch를 사용 중단하고 Tempo Operator와 OpenTelemetry의 Red Hat 빌드를 채택했습니다.

OpenTelemetry의 Red Hat 빌드는 Jaeger 클라이언트뿐만 아니라 zipkin과 OpenTelemetry Protocol(OTLP)로부터 오는 여러 형식의 추적을 수집하는 데 사용할 수 있습니다. 이 수집기는 모든 관측성 신호를 수집하는 데 사용할 수 있으므로 이것은 시작에 불과합니다. Red Hat의 최신 분산 추적 릴리스는 다양한 개선 사항을 포함합니다. 스팬에서 자동 메트릭 생성을 구현할 뿐만 아니라, 이러한 메트릭을 기반으로 경고를 생성할 수도 있습니다. Prometheus 스택 통합을 지원하기 위해 Red Hat은 Red Hat 빌드에 Target Allocator 구성 요소를 추가했습니다. 따라서 고객은 Prometheus 엔드포인트를 손쉽게 제거하고 효율적으로 관리 및 확장할 수 있습니다.

Tempo는 Jaeger 제품에서 제공되는 분산 추적 스토리지 및 시각화 기능을 즉시 대체하여 성능을 향상합니다. 또한 분산 추적을 실험하거나 광범위한 추적 스토리지 및 대규모 배포가 필요 없는 배포를 신속하게 트러블슈팅하기 위한 간단한 로컬 배포를 용이하게 해줍니다. Tempo는 여전히 Jaeger 사용자 인터페이스를 통합하여 추적의 원활한 시각화를 보장합니다.

OpenShift의 구성 요소 및 기능 살펴보기 →

추가 자료

문서

마이크로서비스가 의료 부문에서 IT 통합을 지원하는 방식

마이크로서비스는 의료 및 기타 업종의 개발자가 탄력적으로 결합된 서비스로 구성된 애플리케이션을 만들 수 있도록 지원하므로 개발자는 더 쉽게 개발, 테스트, 배포, 업그레이드를 수행할 수 있습니다.

문서

마이크로서비스란?

마이크로서비스란 애플리케이션을 구축하기 위한 아키텍처 기반의 접근 방식으로 애플리케이션의 각 요소가 독립적으로 작동합니다.

문서

서비스 메쉬란 무엇일까요?

서비스 메쉬는 애플리케이션에 구축된 인프라 레이어로, 서비스 상호작용을 통해 보다 손쉽게 통신을 최적화하고 다운 타임을 줄이는 방법을 기록합니다.

마이크로서비스에 대한 자세한 내용

제품

선택한 인프라에서 애플리케이션 출시 테스트를 완료한 통합 서비스 세트를 포함하는 엔터프라이즈 애플리케이션 플랫폼입니다.

리소스

웨비나

100% 비대면으로 진행하는 Red Hat OpenShift PoC 활용 가이드 온라인 세미나 1일차 : 클라우드 네이티브

웨비나

100% 비대면으로 진행하는 Red Hat OpenShift PoC 활용 가이드 온라인 세미나 2일차: 디지털 트랜스포메이션

교육

무료 교육 과정

Developing Cloud-Native Applications with Microservices Architectures