Apache Kafka

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

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

Apache Kafka とは

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

Kafka の基本概念

Kafka の基本概念を図で示す。

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

Kinesis との比較

Kinesis との主な違いを以下に比較する。

観点Kafka (MSK)Kinesis Data Streams
管理MSK でマネージドフルマネージド
スループットパーティション数で無制限シャードあたり 1MB/s
保持期間無制限 (設定次第)最大 365 日
ConsumerConsumer Group で柔軟1 シャード 5 読み取り/s
エコシステムKafka Connect, Kafka StreamsLambda 統合
コストブローカーインスタンス課金シャード時間課金
適用場面大規模、既存 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) でリアルタイム集計

関連書籍も参考になる。

この記事は役に立ちましたか?

関連用語

関連する記事