And Brain said,

Jaeger vs Zipkin, MSA의 뛰어난 추적자들 본문

IT/DevOps \ Architecture

Jaeger vs Zipkin, MSA의 뛰어난 추적자들

The Man 2023. 8. 7. 20:14
반응형

Jaeger와 Zipkin은 Microservices Architecture (MSA)에서 주로 사용되는 분산 추적 시스템입니다. MSA에서 서비스 간의 상호 작용이 복잡해질 수 있기 때문에, 이러한 분산 추적 시스템은 문제 진단 및 성능 최적화에 필요합니다. Jaeger와 Zipkin 이외에도 OpenTelemetry, Elastic APM, Datadog APM, AWS X-Ray 등등이 있지만, 오늘은 가장 많이 사용되는 Jaeger와 Zipkin에 대해서 각각의 장단까지 살펴보도록 하겠습니다.

 

Jaeger와 Zipkin의 주요 역할은 다음과 같습니다.

 

  • 트랜잭션 추적: 서비스 간의 요청 경로를 시각화하여 어떤 서비스가 어떤 순서로 호출되는지 파악할 수 있습니다. 이를 통해 요청이 시스템을 통과하는 방식을 이해하고 문제가 발생한 위치를 식별할 수 있습니다.

  • 성능 분석: 각 서비스의 응답 시간, 지연 시간 등의 성능 지표를 수집하고 분석합니다. 이를 통해 성능 병목 현상이나 지연 원인을 찾아낼 수 있습니다.

  • 문제 진단: 에러나 예외가 발생했을 때 해당 문제의 원인을 찾기 위해 추적 정보를 사용합니다.

  • 종합적인 시각화: Jaeger와 Zipkin은 사용자에게 UI를 제공하여 서비스 간의 상호 작용, 트랜잭션의 흐름, 성능 지표 등을 시각적으로 확인할 수 있게 합니다.

  • 컨텍스트 전파: 서비스 간의 요청에서 컨텍스트 정보(예: 추적 ID)를 전파하여 전체 트랜잭션을 연결하고 추적합니다.

  • 샘플링: 모든 요청을 추적하는 것은 비효율적일 수 있으므로, 일부 요청만을 샘플링하여 추적하는 기능을 제공합니다.

 

이 추적자들은 특정한 장점과 단점을 가지고 있는데, 아래는 Jaeger와 Zipkin의 주요 장단점에 대한 개요입니다.

 

 

Jaeger

 

장점:

유연한 저장 백엔드: Jaeger는 Elasticsearch, Cassandra, Kafka, 그리고 Badger와 같은 다양한 저장 백엔드를 지원합니다.

OpenTracing 호환: Jaeger는 OpenTracing 표준을 지원하여 다양한 프레임워크와 언어에 쉽게 통합될 수 있습니다.

고급 UI: Jaeger의 사용자 인터페이스는 직관적이며, 세부적인 추적 정보와 서비스 종속성 그래프를 제공합니다.

확장성: Jaeger는 대규모 시스템에서의 확장성을 고려하여 설계되었습니다.


단점:

설치 및 설정 복잡성: 초기 설정과 특히 다양한 백엔드와의 통합은 복잡할 수 있습니다.

저장 비용: 대규모 시스템에서는 저장 비용이 증가할 수 있습니다, 특히 Elasticsearch와 같은 백엔드를 사용할 때.

 

Zipkin

장점:

간단한 설치: Zipkin은 시작하기 쉽고, 단일 JAR 파일로 실행될 수 있습니다.

다양한 저장 백엔드 지원: Elasticsearch, Cassandra, MySQL 등 다양한 백엔드를 지원합니다.

넓은 언어 지원: 다양한 프로그래밍 언어에 대한 라이브러리와 통합이 가능합니다.

성숙도: Zipkin은 오랜 시간 동안 사용되어 왔으며, 안정적이고 검증된 시스템입니다.


단점:

UI 제한: Jaeger에 비해 UI가 상대적으로 기본적입니다.

확장성: 대규모 배포에 대한 확장성이 Jaeger만큼 강력하지 않을 수 있습니다.

OpenTracing 미지원: Zipkin은 OpenTracing 표준을 직접 지원하지 않습니다. 그러나 브릿지나 어댑터를 사용하여 통합할 수 있습니다.

 

두 시스템 모두 각각의 장점을 가지고 있으므로, 특정 환경과 요구 사항에 따라 적합한 시스템을 선택하는 것이 중요합니다.

 

 

* OpenTracing이란?

OpenTracing은 CNCF(Cloud Native Computing Foundation) 프로젝트의 일부로, 클라우드 네이티브 애플리케이션의 추적을 지원하기 위해 개발된 분산 시스템에서의 트랜잭션 추적을 위한 업계 표준 API와 라이브러리입니다.

 

 

Thanks for watching, Have a nice day.

반응형
Comments