로그인 / 등록 Account

마이크로서비스

Jaeger란?

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

분산 추적은 무엇인가요?

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

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

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

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

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

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

Jaeger의 오픈소스 커뮤니티

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

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

Jaeger 용어 및 구성 요소

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

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

Jaeger는 연동하여 스팬과 추적을 수집, 저장, 시각화하는 여러 구성 요소가 포함되어 있습니다.

Jaeger Client는 분산 추적을 위한 OpenTracing API의 언어별 구현이 포함되어 있습니다. 수동으로 사용하거나 다양한 오픈소스 프레임워크와 함께 사용할 수 있습니다.

Jaeger Agent는 사용자 데이터그램 프로토콜 (User Datagram Protocol)을 통해 전송된 스팬을 수신하는 네트워크 데몬으로, 계측된 애플리케이션과 동일한 호스트에 배치됩니다. 일반적으로 쿠버네티스와 같은 컨테이너 환경의 사이드카를 통해 구현됩니다.

Jaeger Collector는 프로세싱을 위해 스팬을 수신하여 대기열에 배치합니다.

Collector에는 영구 스토리지 백엔드가 필요하기 때문에 Jaeger에는 스팬 스토리지용 플러그 가능 메커니즘이 있습니다. 

Query는 스토리지에서 추적을 검색하는 서비스입니다.

Jaeger Console은 분산된 추적 데이터를 시각화하는 사용자 인터페이스입니다.

Jaeger와 Red Hat

Jaeger는 Red Hat® OpenShift® Service Mesh의 일부로 기본 설치되며 오픈소스 서비스 메쉬인 Istio 구현이 포함됩니다.

이러한 분산 추적 구현으로 다양한 이점을 누릴 수 있습니다. Jaeger는 Istio용 관측 콘솔인 Kiali를 통합합니다. Jaeger 백엔드는 단일 장애 지점 없이 고도로 확장할 수 있도록 설계되어 있습니다. Jaeger는 다양한 구성 요소의 데이터를 연결해 완전한 엔드 투 엔드 추적이 가능합니다. Jaeger는 Zipkin과의 역호환성도 지원합니다.

Red Hat OpenShift Service Mesh 시작하기