Kafka ConnectのSource Connectorは、データベースやファイル、SaaSなど外部システムからKafkaトピックへ連続的にデータを取り込む公式メカニズムです。
本稿では、アーキテクチャ、スケーリング、スキーマ/順序性、信頼性・運用、デプロイ選択、セキュリティ/性能チューニングを5〜7セクションで体系化し、CCDAK対策ポイントも明確化します。
Kafka Connectはプラガブルなコネクタで外部システムとKafka間のデータ連携を標準化します。Source Connectorは外部からKafkaへの一方向同期を担い、ジョブの定義(Connector)と並列実行単位(Tasks)で構成されます。設定・実行・監視はREST APIから行えます。
実務では「安定運用」「再利用性」「メンテ性」が理由で、個別のProducerアプリより先にSource Connectorを検討します。特にRDB取り込み(JDBC/CDC)、オブジェクトストレージ、ログ/ファイル取り込み、SaaSイベント購読などで効果的です。
Kafka ConnectはWorkers(プロセス)がクラスタを形成し、Connector定義を分散管理、Tasksを各Workerに割り当てます。スケールアウトは主にtasks.maxの増加と、十分なKafkaパーティション数の確保で行います。再平衡はWorkerの増減や設定変更で発生します。
信頼性は内部トピックのレプリケーション・クォーラム、acks=all、十分なmin.insync.replicasで担保します。トピック設計とプロデューサ設定はConnectorから委譲/上書きされるため、要件に合わせて明示します。
Source Connectorの論理構成
キー設計は最重要です。エンティティ単位の順序保証が必要なら、同一エンティティで同一キーを用い、同一パーティションに集約します。Kafkaの順序保証はパーティション内のみです。取り込み後の集約や下流処理のシャッフルも見越して、キーの安定性とカーディナリティを検討します。
スキーマはSchema Registryの利用を前提に設計すると変更管理が容易です。後方互換(Backward)を基本とし、列追加を優先、既存フィールドの削除/型変更は避けます。JDBC/CDCではDDL差分やNULL可否も考慮してください。
JDBC Source Connectorの例(増分同期)
{
"name": "jdbc-users-source",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
"connection.url": "jdbc:postgresql://db:5432/app",
"connection.user": "appuser",
"connection.password": "${file:/opt/connect/secrets.properties:db.password}",
"mode": "timestamp+incrementing",
"incrementing.column.name": "id",
"timestamp.column.name": "updated_at",
"table.whitelist": "public.users",
"topic.prefix": "src.postgres.",
"poll.interval.ms": "10000",
"batch.max.rows": "5000",
"value.converter": "io.confluent.connect.avro.AvroConverter",
"value.converter.schema.registry.url": "http://schema-registry:8081",
"key.converter": "org.apache.kafka.connect.storage.StringConverter",
"producer.override.acks": "all",
"producer.override.enable.idempotence": "true",
"errors.tolerance": "all",
"errors.deadletterqueue.topic.name": "_dlq.src.postgres.users",
"errors.deadletterqueue.context.headers.enable": "true"
}
}Kafka ConnectのSourceは一般に少なくとも1回の配信です。送信成功後にオフセットをコミットするため、クラッシュ復旧時に重複送信が起こり得ます。冪等なキー設計、下流での重複排除、またはソース側の変更検知列を活用して整合性を保ちます。
エラー処理は段階的に設計します。レコード変換やスキーマ不一致はDLQへ退避し、運用で是正。リトライ可能な一時エラーはバックオフ付きで再試行し、恒久エラーはDLQ+アラートに切り分けます。
開発/検証ではスタンドアロン、本番は分散モードが基本です。分散モードではConnector設定は内部トピックで共有され、Worker間で自動的にTasksが再割当てされます。更新やスケールアウトはREST APIからオンラインで実施できます。
独自Producerを実装すべきケースは限定的です。コネクタでサポートしないAPI仕様や厳格な独自トランザクション制御が必要な場合に検討します。まずは既存コネクタとSMTの組合せで要件充足を試みます。
| 方式 | 適用規模/可用性 | 再平衡・横展開 | 管理コスト/ユースケース |
|---|---|---|---|
| スタンドアロン | 小規模/単機(冗長性なし) | 再平衡なし。単一プロセス内で実行 | 最小コスト。開発/PoC/単発取り込み向け |
| 分散モード | 中〜大規模/高可用(複数Worker) | 自動再平衡でTasks再割当。ローリング更新可 | 本番標準。複数コネクタの集中管理 |
| 独自Producer実装 | 要件依存/可用性は自前実装 | アプリ側でスケール管理 | コネクタ非対応APIや厳格な独自制御が必要な場合のみ |
Kafka接続はSASL/SSLで保護し、最小権限のACLを設定します。外部ソースの認証情報はConfig Providerで間接参照(例: ファイル/環境変数/外部シークレットストア)し、平文を避けます。監査上、DLQや内部トピックも含めてデータ分類を行ってください。
性能はエンド・ツー・エンド最適化が必要です。タスク並列、外部ソースのページング/スキャン戦略、Connector固有のpoll/batch設定、Producerのバッチ/遅延、Kafkaトピックのパーティション/圧縮、ネットワークMTU等を一貫して調整します。
CCDAK
問題 1
社内PostgreSQLのusersテーブルをKafkaに継続取り込みしたい。初回フル取得後は更新のみ取り込み、整合性を保ちつつ重複は下流で吸収可能。コネクタで最も適切な設定はどれか。
正解: A
RDBからKafkaへの取り込みにはJDBC Sourceが適し、mode=timestamp+incrementingで初回フル+増分を安全に扱える。acks=allとidempotenceにより重複発生時の影響を最小化できる。他の選択肢は要件に合致しない。
Source Connectorは正確に一度(exactly-once)の保証がありますか?
一般には少なくとも1回(at-least-once)です。重複は発生し得るため、キー設計や下流での重複排除を前提にします。一部の条件下で重複を最小化する手段(冪等プロデュースやトランザクション活用)はありますが、エンドツーエンドの厳密な意味でのexactly-onceはソース特性やコネクタ実装に依存します。
スループットが頭打ちです。最初に確認すべきポイントは?
tasks.maxとKafkaのパーティション数のバランス、外部ソース側の分割可能性(テーブルシャーディング/並列スキャン)、poll.interval.msやbatch設定、Producerのlinger.ms/batch.size/圧縮、ネットワーク/ディスクIO、内部トピックのブローカー健全性を順に確認します。
コネクタ設定の更新はどう適用されますか?停止が必要ですか?
分散モードではREST APIで設定をPUT/POSTすると、Connectクラスタが設定を内部トピックに反映し、必要に応じてTasksを再起動・再割当します。通常は停止不要ですが、一部の設定はタスク再起動を伴うため瞬間的な再平衡が発生します。
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-...