Tiered Storageは、Kafkaブローカーのホットデータをローカルディスクに、コールドデータを外部オブジェクトストレージ(S3/GCS/Azure Blobなど)に退避する仕組みです。これにより、コンピュート(ブローカー)とストレージを独立にスケールでき、障害復旧やコスト最適化の選択肢が広がります。
Confluent Platform/Confluent CloudではTiered Storageとして提供され、Apache Kafka本体でもRemote Log Storage APIにより実現可能になりつつあります。試験(CCAAK)では、プロデュース/フェッチの基本セマンティクスが変わらない点、リテンションやセグメントの基礎、運用上の効果と制約を正しく説明できることが問われます。
分離の最大の狙いは、計算資源(CPU/メモリ/ネットワーク)とストレージ容量を独立にスケールさせることです。ローカルディスクはホットセット提供に最適化し、長期の保持はオブジェクトストレージに任せます。これにより、ディスク増設のためだけにブローカー台数を増やす非効率が減ります。
Tiered Storageは書き込みパスやISR/acksのセマンティクスを変えません。プロデューサーは従来どおりブローカーのローカルログに追記し、セグメントがロールした後に外部ストレージへ段階的にオフロードされます。コンシューマーが古いオフセットを読む際は、必要部分が外部ストレージから取り寄せられます。
基本コンポーネントは、ブローカーのローカルログ(アクティブ/最近のセグメント)、オフローダ(セグメントを外部ストレージに転送する役割)、外部オブジェクトストレージ、そしてフェッチ時のオンデマンド読取りです。オフロードはセグメントがクローズされ、ローカル保持条件を満たした後に非同期で実行されます。
読み取りは原則としてローカルから行われます。要求範囲がローカルにない場合、ブローカーは外部ストレージから対象セグメントの該当部分を取得し、読み出しを継続します。これによりホットワーキングセットは低レイテンシ、過去データはコールドでも到達可能というバランスを取ります。
Kafka Tiered Storageの概念図
セグメントサイズはスループット、オフロード頻度、復旧時間に直結します。大きすぎるとオフロードやフェッチの単位が重くなり、小さすぎるとメタデータ過多になります。一般的には数百MB〜1GB程度が妥当な起点です。
ローカル保持とグローバル保持を分けて考えます。ローカル保持(ホットセット)は直近N時間/日分の読取りをローカルで満たすための容量計画、グローバル保持(オブジェクトストレージ)は監査/分析用途の長期保存です。ベンダーやRLM実装により設定キーは異なりますが、log.segment.bytes、log.retention.ms/bytesなどの基本キーは共通して重要です。
内部トピック(__consumer_offsets、__transaction_stateなど)は、低レイテンシと可用性の観点からティアード対象外にするのが一般的です。対象トピックはビジネスデータ中心に限定し、SLAに応じてローカル保持期間を設けます。
server.properties例(安定キー中心、ティアード有効化はベンダー依存)
# セグメントと保持の基本設定(Kafka共通の安定キー)
log.segment.bytes=1073741824 # 1 GiB
log.segment.ms=0 # 時間によるロール無効(必要なら設定)
log.retention.ms=604800000 # 7日(例)
log.retention.bytes=-1 # 容量制限を使わない例
# 内部トピックは短めかローカル優先の方針で(対象外にする運用ルール)
# 例: __consumer_offsetsの保持を短く保つ
offsets.retention.minutes=10080 # 7日(要件に応じて)
# ティアードストレージの有効化と外部ストレージ設定は製品ごとに異なる
# Confluent Platform/CloudやApache Kafka RLM実装の公式ドキュメントで確認すること
# 例(擬似):
# tiered.storage.enable=true
# tiered.storage.bucket=<your-bucket>
# tiered.storage.region=<region>
# tiered.storage.credentials.provider=<provider>コスト観点では、ホットセットを支えるローカルSSDの容量を抑え、長期保持をオブジェクトストレージへ寄せるのが定石です。アクセス頻度の低いデータのコスト/GBは大幅に下がりますが、リストアや初回フェッチ時のリクエスト課金・帯域を見積もる必要があります。
障害復旧やスケールアウトが速くなります。新規ブローカーを追加・交換しても、過去セグメントの大部分は外部ストレージに既にあり、必要最小限のアクティブデータやメタデータの同期で済むためです。パーティション再割当の時間短縮にも寄与します(ただし実装とデータ量に依存)。
監視の主眼は、オフロードの滞留、リモート読取りのレイテンシ、ローカルキャッシュのヒット率、そして外部ストレージのエラー率/IAMエラーです。通常時のベースラインを作り、夜間バッチ等でのピークを織り込んだSLOを定義します。
典型的な障害は、権限不足による外部ストレージアクセス失敗、レイテンシ劣化(初回フェッチが遅い)、オフロードバックログの増加などです。まずは認証情報/バケットポリシーとネットワーク経路を確認し、次にブローカー側のオフローダスレッド/キュー、タイムアウト設定を点検します。
CCAAKでは、Tiered Storageはあくまでストレージ階層化であり、プロデュース/フェッチ/ISR/acks/トランザクションの基本セマンティクスは変えない点を押さえます。メリット(スケール分離、復旧短縮、コスト最適化)と、考慮点(初回リモート読取りの遅延、外部ストレージSLA/IAM依存)を対で説明できるようにします。
コンパクションやトピッククリーンアップとの相互作用は実装依存です。受験では、サポート状況は製品ドキュメント前提で説明し、内部トピックをティアード対象外にする設計判断や、ローカル保持と全体保持の違いを正確に区別できることが重要です。
| 観点 | ローカルのみ | ティアードストレージ | 注意点 |
|---|---|---|---|
| スケール戦略 | 容量=台数に連動 | 計算と容量を独立スケール | ホットセット見積りが鍵 |
| 復旧/再割当 | 全データの再同期が重い | 過去セグメントは外部にあり軽量 | 実装とデータ分布に依存 |
| 保持コスト | 高価(SSD/HDDに長期保持) | 安価(オブジェクトストレージ利用) | リクエスト課金/帯域を計上 |
| レイテンシ | 一貫して低い(ローカル) | 初回リモート読みは高遅延になり得る | キャッシュ/プリフェッチで緩和 |
| セマンティクス | 標準Kafka | 標準Kafka(変更なし) | acks/ISR/EOSは不変 |
| 内部トピック | ローカルで安定 | 対象外が一般的 | SLA/可用性重視 |
CCAAK
問題 1
KafkaのTiered Storage(ConfluentまたはRLM実装)に関する説明として最も正しいものはどれか。
正解: A
Tiered Storageは書き込みのセマンティクス(acks/ISR/EOS)を変更せず、クローズ済みセグメントを外部ストレージにオフロードする。読取りは通常ローカルで、必要に応じてブローカーが外部から取得する。内部トピックを外部化するのは一般的ではなく、長期保持にこそ適する。
Tiered Storageで保持期間の考え方はどう変わるか?
ローカル保持(ホットセット)と全体保持(外部ストレージ)の二層で設計します。SLAに合わせてローカル保持を設定し、コンプライアンス/分析要件に合わせて全体保持を長めに設定します。従来のlog.retention.ms/bytesなどの基本キーは引き続き有効です。
レイテンシやスループットへの影響は?
通常の書き込みと最新データの読取りはローカルで処理されるため影響は限定的です。一方、古いデータの初回読取りは外部ストレージ往復のため遅延が増える可能性があります。ホットセット容量、キャッシュ、プリフェッチで緩和します。
コンパクションやトランザクションと両立するか?
基本セマンティクス(acks/ISR/EOS)は不変です。コンパクションやクリーンアップ動作の詳細は実装に依存するため、利用する製品(Confluent/Apache RLM等)のドキュメントでサポート状況を確認してください。内部トピックは原則ローカルに留める運用が一般的です。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Kafka Topic と Partition の基礎: 分散とスケーラビリティの要
CCDAK 対策と実務の両立を意識し、Topic/Partition/Replica/Consumer Group の役...
CCDAK 試験ガイド:出題範囲・配点・申込み・対策
Confluent Certified Developer for Apache Kafka (CCDAK) の出題範囲...
Confluent Certified Administrator (CCAAK) 対策: 出題範囲・配点の考え方・運用観点の要点
CCAAKに向けて、試験領域の押さえどころを運用目線で整理。プロダクションで通用する設定・監視・セキュリティの実践知を、...
Kafka の Replica と In-Sync Replicas を正しく設計する: 耐障害性と一貫性
レプリカとISRの仕組みを起点に、acks と min.insync.replicas、クリーン/アンクリーンリーダー選...
Kafka の Offset とコミット: ポジション管理と at-least-once の基礎
CCDAK 対策と実務の両立を意識して、Kafka コンシューマのオフセット管理とコミット戦略を整理。at-least-...