프로젝트 소개

Zipkin은 서비스 아키텍처의 지연 문제를 해결하는 데 필요한 타이밍 데이터를 수집하기 위한 분산 추적 시스템입니다. 추적 데이터의 수집과 조회를 모두 지원합니다. 사용자는 로그에서 ID로 직접 추적을 열거나 서비스, 작업 이름, 태그, 지속 시간 및 기타 속성으로 조회할 수 있습니다. UI는 서비스에서 소요된 시간과 작업 실패 같은 정보를 요약하며, 집계된 오류 경로를 포함하여 애플리케이션 간 추적된 요청 볼륨을 보여주는 의존성 다이어그램을 표시합니다. 애플리케이션은 스팬을 보고하려면 트레이서 또는 계측 라이브러리로 계측되어야 합니다. Zipkin은 HTTP와 Kafka를 통해 데이터를 수신할 수 있으며, ActiveMQ, gRPC, RabbitMQ, Pulsar를 포함한 추가 전송 옵션도 제공합니다. 서버는 웹 UI와 API를 제공하며, 스팬 데이터는 테스트를 위해 메모리에 보관하거나 지원되는 영구 백엔드에 저장할 수 있습니다. 배포 옵션에는 JRE 17 이상이 필요한 자체 포함 실행 JAR, Docker 이미지, Homebrew, Helm 차트가 포함됩니다. 슬림 빌드는 더 작고 빠르게 시작되며, 메모리 및 Elasticsearch 저장소를 지원하지만 Kafka 및 RabbitMQ와 같은 메시징 전송은 생략합니다. 저장소 구성 요소에는 테스트용 메모리 저장소, Cassandra, Elasticsearch/OpenSearch가 포함됩니다. Cassandra 및 Elasticsearch 의존성 링크는 별도의 zipkin-dependencies 작업을 통해 집계됩니다. 레거시 MySQL v1 저장소 구성 요소는 전환을 위해 남아 있지만, README에서는 그 스키마가 고성능을 위해 설계되지 않았다고 언급합니다. 검색 엔드포인트를 비활성화하여 저장 비용을 줄이거나 쓰기 처리량을 늘릴 수 있으며, 이 경우 ID로만 추적을 검색할 수 있습니다. 저장소에는 계측 및 서버 코드에서 사용하는 최소 Java 코어 라이브러리도 포함되어 있으며, Zipkin v1 및 v2 JSON 스팬 모델용 코덱이 있습니다. 코어 라이브러리는 Java 8+를 대상으로 하고, 저장소 구성 요소와 현재 서버는 Java 17+가 필요합니다. 서버 아티팩트는 io.zipkin Maven 그룹으로, 라이브러리 아티팩트는 io.zipkin.zipkin2로 게시되며, 컨테이너 이미지는 Docker Hub와 GitHub Container Registry에서 제공됩니다.