Apache Kafka

大規模なリアルタイムデータストリーミングのための分散メッセージングプラットフォーム

メッセージングストリーム処理

Apache Kafka とは

Apache Kafka は、LinkedIn が 2011 年に開発し Apache Software Foundation に寄贈した分散ストリーミングプラットフォームである。高スループット、低レイテンシ、耐障害性を備え、1 日に数兆メッセージを処理する大規模システムで使われている。

Kafka の基本概念

[Producer][Topic (Partition 0)][Consumer Group A]
              [Topic (Partition 1)][Consumer Group B]
              [Topic (Partition 2)]
概念 説明
Topic メッセージのカテゴリ (例: orders, payments)
Partition Topic を分割した単位。並列処理の基盤
Producer メッセージを Topic に送信
Consumer Topic からメッセージを読み取り
Consumer Group 複数の Consumer でパーティションを分担処理
Broker Kafka サーバー。クラスターを構成
Offset パーティション内のメッセージの位置

Kinesis との比較

観点 Kafka (MSK) Kinesis Data Streams
管理 MSK でマネージド フルマネージド
スループット パーティション数で無制限 シャードあたり 1MB/s
保持期間 無制限 (設定次第) 最大 365 日
Consumer Consumer Group で柔軟 1 シャード 5 読み取り/s
エコシステム Kafka Connect, Kafka Streams Lambda 統合
コスト ブローカーインスタンス課金 シャード時間課金
適用場面 大規模、既存 Kafka 資産 AWS ネイティブ、小〜中規模

AWS に閉じたシンプルな構成なら Kinesis、大規模で Kafka エコシステムを活用するなら MSK を選択する。

MSK (Managed Streaming for Apache Kafka)

AWS MSK は Kafka のマネージドサービスで、ブローカーのプロビジョニング、パッチ適用、モニタリングを AWS が担う。MSK Serverless を使えばクラスターの容量管理も不要になる。

タイプ 管理負荷 コスト
MSK Provisioned 中 (ブローカー数を指定) インスタンス時間 + ストレージ
MSK Serverless 低 (自動スケール) スループット課金

ユースケース

  • イベントソーシング: 全イベントを Kafka に永続化し、状態を再構築
  • CDC (Change Data Capture): DB の変更を Kafka 経由で下流システムに伝播 (Debezium)
  • ログ集約: 複数サービスのログを Kafka に集約し、OpenSearch や S3 に転送
  • リアルタイム分析: ストリーム処理エンジン (Kafka Streams, Flink) でリアルタイム集計

関連書籍も参考になる。

関連用語