Zipkin (分散トレーシング・2012)(ジップキン)
Twitter 2012年公開のオープンソース分散トレーシング。Google Dapper 論文ベース、Java / Spring Cloud で広範採用、Jaeger と並ぶ二大OSS。
概要
Zipkin はTwitter Engineering が2012年6月にオープンソース公開した分散トレーシングシステム。Google Dapper 論文 (2010・Sigelman 等) ベースの実装。Trace ID + Span 構造・Service Graph 可視化・Cassandra / Elasticsearch / MySQL Backend。Java 主流のエコシステム (Spring Cloud Sleuth + Zipkin が定番組合せ) で広範採用、2015年Apache Foundation 配下。Jaeger (Uber 2017-) と並ぶ二大OSS、近年はOpenTelemetry 標準化 + Jaeger / Tempo へのシフトで主流地位は譲ったが、レガシーJava企業で依然継続採用。
Zipkin 主要マイルストーン
| 年月 | 出来事 |
|---|---|
| 2010-04 | Google Dapper 論文 |
| 2012-06 | Twitter Zipkin 公開 |
| 2015 | Apache Software Foundation 移管 |
| 2016-10 | OpenTracing 互換性 |
| 2017-09 | OpenTracing 1.0 |
| 2019-05 | OpenTelemetry 規格化 |
| 2020-2022 | Jaeger / Tempo へのシフト進行 |
| 2024 | 継続メンテナンスのみ (active 新機能少) |
Zipkin アーキテクチャ
| コンポーネント | 役割 |
|---|---|
| Reporter (Client SDK) | Span 送信 |
| Collector | Span 受信 + 検証 |
| Storage | Cassandra / ES / MySQL |
| Query API | Span 検索API |
| UI | Web GUI |
シンプル設計でJaeger より軽量・運用容易。
Storage Backend
| Backend | 用途 |
|---|---|
| In-Memory | 開発・テスト |
| MySQL | 小規模 |
| Cassandra | 大規模 |
| Elasticsearch | 検索重視 |
Spring Cloud Sleuth 統合
Java エコシステムでZipkin が普及したのは Spring Cloud Sleuth との統合:
# application.yml
spring:
application:
name: my-service
zipkin:
base-url: http://zipkin:9411
sleuth:
sampler:
probability: 1.0
@SpringBootApplication で自動計測・Spring エコシステム (Spring MVC / WebFlux / REST Template / Feign / Kafka) すべて自動Trace。
Zipkin vs Jaeger
| 項目 | Zipkin | Jaeger |
|---|---|---|
| 公開 | 2012 (Twitter) | 2017 (Uber) |
| 言語実装 | Java | Go |
| アーキ | シンプル | コンポーネント分離 |
| Storage | Cassandra / ES / MySQL | Cassandra / ES / Kafka |
| Sampling | Static / Rate Limit | Adaptive |
| UI | シンプル | 機能豊富 |
| Multi-tenant | × | ◎ |
| OpenTracing | ◎ | ◎ |
| OpenTelemetry | ◎ | ◎ |
| CNCF | × (Apache) | ◎ Graduated |
| 主要採用 | Java エンタープライズ | クラウドネイティブ |
| 採用率 (2024) | 縮小 | 縮小 (Tempo へシフト) |
主要採用企業
| 企業 | 用途 |
|---|---|
| Twitter / X (起源) | 全社マイクロサービス |
| Yelp | 飲食レビュー |
| Salesforce | CRM |
| Spotify | 音楽配信 |
| Adobe | 一部サービス |
| Naver / LINE | 韓国・日本 |
Trace Context Propagation
Zipkin の HTTP Header 規約 (B3 Propagation):
X-B3-TraceId: e6c50d5d2c1a4c9d
X-B3-SpanId: a9b8c7d6e5f4321
X-B3-ParentSpanId: 8a8b8c8d8e8f8a8
X-B3-Sampled: 1
X-B3-Flags: 0
W3C Trace Context (Traceparent / Tracestate) が後継・OpenTelemetry 標準。
関連用語との違い
- vs Jaeger: 同世代分散トレース
- vs OpenTelemetry: 規格 / 実装
- vs Tempo: Grafana 新世代
FAQ
Q1: 現代でZipkin 採用? A: 既存Java エンタープライズで運用継続多いが、新規はOpenTelemetry + Jaeger / Tempo 推奨。
Q2: Spring Boot 3+ で? A: Spring Cloud Sleuth は2022年12月で機能廃止 → Micrometer Tracing で代替・Zipkin / OpenTelemetry / Wavefront へ送信可。
Q3: 移行コスト? A: OpenTelemetry にする場合 SDK 変更必要だが、Zipkin Format Exporter を OTel で出力可能・段階移行可。