本ガイドは、Apache KafkaとConfluentの認定(CCDAK/CCAAK)に向けて、公式ドキュメント・演習・実機学習をどう組み合わせるかを具体化した学習プランです。
試験対策だけでなく、現場でそのまま役立つ観点(設計・運用の意思決定、設定の落とし穴)を重視しています。最新の仕様や出題範囲は、Kafka公式ドキュメントとConfluent公式ドキュメント、認定ページを必ず併読してください。
CCDAKは開発者視点(プロデューサ/コンシューマ、シリアライゼーション、スキーマ管理、配信保証、Kafka Streams/ksqlDB基礎、Connect基礎)が中心です。CCAAKは管理者視点(ブローカー/トピック設定、セキュリティ、ACL、レプリケーション、ISR、リバランス、監視、容量計画、メンテナンス)が中心です。
出題はベンダー中立のKafka基本仕様に、Confluent製品(Schema Registry、ksqlDB、Connect、Control Center等)が絡むことがあります。基礎はKafka公式ドキュメント、製品固有はConfluent公式ドキュメントを一次情報として学習してください。最新の試験範囲はConfluentの認定ページで確認するのが安全です。
Kafka公式は仕様の一次情報です。まずConfigurationリファレンスで各設定の意味とデフォルト、相互依存(例: enable.idempotenceとacks/retries/max.in.flight)を確認します。Design/Operations/Securityで背景設計と運用要点を押さえます。
Confluent公式ではSchema Registry(互換性レベル、バージョニング、見落としやすいsubject名の運用)、Connect(分散運用、タスク/ワーカー、エラーハンドリングとDLQ)、ksqlDB(ストリーム/テーブル、キーマテリアライズ、処理保証)を一次情報として把握します。
読み方の型を固定すると効率が上がります。What(何をするか)、When(いつ/なぜ使うか)、Defaults(既定値と推奨値)、Trade-offs(性能・信頼性・コストのトレードオフ)、CLI(検証手順)を各トピックごとにノート化します。
最短で学ぶなら、ローカル単一ブローカーから始め、必要に応じてマルチブローカーへ拡張します。KafkaはKRaftモードが主流に移行中ですが、初学時はZooKeeperベースの最小構成でも基本概念(トピック/パーティション/オフセット/レプリケーションの挙動)を体感できます。試験学習では両方の用語と役割を把握しておくのが無難です。
ConfluentのDockerイメージを用いたComposeは導入が速く、CLIの場所や環境差異も少なめです。ポート競合やリソース不足に注意し、学習ではレプリケーション係数1の前提でまず動作確認、その後にレプリケーション/ISR/フェイルオーバの演習へ進みます。
ローカル学習用コンポーネント相関図
最小限のDocker Compose例(学習用・ZooKeeperベース)
version: '3.8'
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.6.1
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- '2181:2181'
kafka:
image: confluentinc/cp-kafka:7.6.1
depends_on:
- zookeeper
ports:
- '9092:9092'
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
# 起動: docker compose up -d
# 停止: docker compose down配信保証、パーティション設計、スキーマ管理、コンシューマグループのリバランスを手で動かすと、設計判断の根拠が明確になります。コンフィグは単独ではなく組み合わせで覚え、CLIで観察指標(lag、ISR、leader、retention、compactionの挙動)を確認します。
CCDAK狙いの演習は、キー設計→順序性→重複/ロス→トランザクション→Schema Registry→Streams/ksqlDBの順。CCAAK狙いでは、レプリケーションとISR、リバランス方式、ACL、証明書、ログセグメント/リテンション、ツール(kafka-topics, kafka-configs, kafka-reassign-partitions等)を重点的に。
| セマンティクス | 主な設定(Producer/Consumer/Broker) | 長所 | 注意点 |
|---|---|---|---|
| At-most-once | Producer: acks=0 または retries=0。Consumer: enable.auto.commit=true(処理前コミット) | 最小レイテンシ、スループット最大化 | メッセージロスが発生し得る。試験では信頼性要件を満たさない選択肢として出やすい |
| At-least-once | Producer: acks=all, retries>0。Broker: min.insync.replicas>=2(本番)。Consumer: enable.auto.commit=false、処理後にcommitSync | ロスなし(重複は許容)。現実的なデフォルト | 重複が起き得るため下流で冪等性や重複排除が必要 |
| Exactly-once | Producer: enable.idempotence=true, transactional.id を設定しbegin/commit。Consumer: isolation.level=read_committed。Streams: processing.guarantee=exactly_once_v2 | ロス・重複なしの処理保証 | 要件と引き換えにレイテンシ/複雑度が上がる。外部システムまで含む完全なE2Eはシンク側のトランザクション対応が前提 |
配信保証の実験用プロパティ例
# producer.properties
bootstrap.servers=localhost:9092
enable.idempotence=true
acks=all
retries=2147483647
max.in.flight.requests.per.connection=5
transactional.id=txn-app-1
# consumer.properties
bootstrap.servers=localhost:9092
enable.auto.commit=false
isolation.level=read_committed
group.id=g1
# 実行例(コンソールを使う場合)
# プロデューサ(トランザクション対応のクライアントAPIが必要。コンソールはbegin/commitを明示できないため、アプリ実装で確認推奨)
# コンシューマ(コミットはアプリで制御)
# kafka-console-producer --topic t1 --bootstrap-server localhost:9092 --producer.config producer.properties
# kafka-console-consumer --topic t1 --bootstrap-server localhost:9092 --from-beginning --consumer.config consumer.properties設定の相互依存とデフォルトの思い込みがミスの起点になりがちです。以下は試験でひっかけになりやすく、実務でも事故につながる代表例です。
CLIで状態確認まで一連で練習し、どのメトリクス/出力で裏付けできるかを自問できるようにしておくと、ケース問題で強くなります。
代表的なトピック/ブローカー設定の適用例(CLI)
# 最小ISRを設定(可用性要件に合わせる)
# kafka-configs --bootstrap-server localhost:9092 --alter --topic orders --add-config min.insync.replicas=2
# リテンション時間(ミリ秒)
# kafka-configs --bootstrap-server localhost:9092 --alter --topic logs --add-config retention.ms=604800000
# コンパクションに切替
# kafka-configs --bootstrap-server localhost:9092 --alter --topic kv-store --add-config cleanup.policy=compact
# 設定確認
# kafka-configs --bootstrap-server localhost:9092 --describe --topic kv-store短期集中なら4週間で往復学習を回せます。週ごとに範囲を絞り、必ず「読む→動かす→メモを更新→小テスト」で一周させます。模擬問題は根拠の出典(公式ドキュメントの節)を書き込み、暗記依存を避けます。
当日は問題文の要件語(重複許容か、ダウンタイム許容か、順序要件はキー単位か全体か、運用制約は何か)に下線を引くイメージでスクリーニングし、消去法を徹底します。数値や既定値は丸暗記よりも、トレードオフとセットで思い出せるように。
CCDAK / CCAAK
問題 1
注文イベントを単一トピックにプロデュースし、消費側で重複もロスも許容しない要件がある。Kafkaの標準機能で満たす最適な構成はどれか。
正解: A
Exactly-onceにはプロデューサの冪等送信とトランザクション(transactional.id、begin/commit)が必要で、コンシューマはread_committedで未コミットのレコードを除外する。acks=allは整合の一部。コンパクションはストレージのポリシーであり処理保証ではない。auto commitの可否だけでは重複が防げない。
KRaftとZooKeeper、どちらで学ぶべきですか?
概念学習と試験対策の両立には両方の用語と役割を把握しておくのが安全です。ローカルの初期学習はZooKeeperベースでも十分ですが、近年はKRaftが主流に移行しているため、公式ドキュメントでKRaftの用語(controller quorum、metadata logなど)も併読してください。
Confluent固有機能(Schema Registry、ksqlDB、Connect)はどこまで必要ですか?
CCDAKではSchema Registryの互換性レベル、シリアライゼーション、Connect/ksqlDBの基本概念が頻出です。CCAAKでもConnectの分散運用やセキュリティは重要です。深掘りは出題範囲と一致する章に限定し、用語と運用イメージを押さえるのが効率的です。
模擬問題のスコアが伸びません。何から見直せばいいですか?
誤答を設定単体で覚えていないかを点検し、設定セット(acks+min.insync.replicas、batch.size+linger.ms、retention.ms+bytesなど)で因果を説明できるかに切り替えましょう。必ず公式ドキュメントの根拠節に立ち返り、CLIや小さな実験で再現してから暗記します。
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-...