API・メッセージング

Apache Kafka あぱっちかふか

メッセージキューストリーミングパブリッシュ/サブスクライブトピックブローカーイベント駆動
Apache Kafkaについて教えて

簡単に言うとこんな感じ!

Kafkaは「超高性能な伝言板」だよ!たくさんのシステムが同時にメッセージを投稿したり読んだりしても壊れない、超タフな仕組みなんだ。大量データをリアルタイムで捌く現代システムの要(かなめ)ってこと!


Apache Kafkaとは

Apache Kafka(カフカ)は、大量のデータをリアルタイムで送受信するための分散メッセージストリーミング基盤です。もともとLinkedIn社が社内の膨大なログデータを処理するために開発し、2011年にオープンソースとして公開されました。現在はApache Software Foundationが管理しています。

Kafkaの最大の特徴は「どんな大量のメッセージでも高速・安全に中継できる」点です。ECサイトの注文履歴、IoTセンサーのデータ、金融取引ログなど、1秒間に数百万件という規模のデータをリアルタイムで複数システムに届けることができます。従来のデータベースや単純なキューでは到底捌けないようなデータ量を扱えるのが、Kafkaが注目される理由です。

ビジネスの現場では「システム間の配管工事」に例えられることがあります。注文システム・在庫システム・物流システムなど、バラバラに動く複数のシステムをKafkaがハブとなってつなぎ、リアルタイムにデータを橋渡しします。これにより、各システムが直接通信し合う複雑な依存関係を解消できます。


Kafkaの核心構造:パブリッシュ/サブスクライブモデル

Kafkaはパブリッシュ/サブスクライブ(Pub/Sub)モデルという仕組みで動いています。「伝言板にメモを貼る人(Producer)」と「そのメモを読む人(Consumer)」が、Kafkaという掲示板を通して非同期にやり取りします。

構成要素役割身近な例え
Producer(プロデューサー)メッセージを送信する側注文システム、センサー機器
Topic(トピック)メッセージの分類フォルダ掲示板のカテゴリ(「注文情報」「ログ」など)
Broker(ブローカー)メッセージを受け取り保存するサーバー掲示板の管理人
Consumer(コンシューマー)メッセージを受信して処理する側在庫システム、分析システム
Partition(パーティション)トピックを並列処理するための分割単位同じカテゴリの掲示板を複数用意する
Consumer Group複数のConsumerをまとめたグループチームで手分けして読む担当者たち

覚え方:「トピックに投げてグループで拾う」

Kafkaの基本動作はこう覚えよう。「Producerがトピックに投げて、Consumer Groupが拾う」。投げた側は拾う相手を気にしなくていい、拾う側は誰が投げたかを気にしなくていい。この「疎結合(そけつごう)」がKafkaの最大のメリットです。

Kafkaの3大特長

  • 高スループット: 1秒間に数百万件のメッセージ処理が可能
  • 永続化(ログ保持): メッセージを一定期間ディスクに保存。読み直し(リプレイ)が可能
  • スケールアウト: Brokerを追加するだけで処理能力を拡張できる

歴史と背景

  • 2010年: LinkedIn社がサービスの急成長に伴うログデータ処理の限界に直面。内部ツールとしてKafkaを開発
  • 2011年: Apache Software Foundationにオープンソースとして寄贈・公開
  • 2012年: Apache トップレベルプロジェクトに昇格
  • 2014年: Kafkaの主要開発者たちがConfluent社を設立。エンタープライズ向けサポートとKafkaエコシステムの拡充を開始
  • 2017年頃: Kafka Streams(ストリーム処理ライブラリ)が安定版に。単なるメッセージングを超えたリアルタイム処理基盤へと進化
  • 2019年: KIP-500(KRaft) プロジェクト開始。ZooKeeperへの依存を廃止してKafka単体での動作を目指す
  • 2022〜現在: KRaftモードが本格導入。Netflix・Uber・Airbnb・LINE・PayPayなどグローバルな大規模サービスでの採用が標準化

他のメッセージング技術との比較

Kafkaとよく比較されるのが、RabbitMQ(ラビットMQ)とAmazon SQS(キューサービス)です。それぞれの特性を整理します。

比較項目Apache KafkaRabbitMQAmazon SQS
モデルPub/Sub・ログ型キュー型・ルーティング型キュー型
スループット非常に高い(数百万件/秒)中程度高い
メッセージ保持期間指定で保持(リプレイ可能)消費後は削除消費後は削除
ユースケースログ収集・イベントストリーミングタスクキュー・RPCシンプルなタスク分散
運用難易度高い(クラスター管理が必要)中程度低い(フルマネージド)
向いている規模大規模・ハイスループット中小規模中小〜大規模
Kafkaのデータフロー Producers 注文システム IoTセンサー Webアクセスログ Apache Kafka (Broker Cluster) Topic: orders Partition 0 / 1 / 2 Topic: iot-data Partition 0 / 1 Topic: access-log Partition 0 / 1 / 2 / 3 メッセージを期間保持・リプレイ可能 Consumers 在庫システム 分析・BIツール 通知サービス ProducerとConsumerは互いを知らなくてよい(疎結合)

関連する規格・RFC

規格・RFC番号内容
RFC 7519JWT(JSON Web Token)。Kafkaのアクセス認証連携で利用されることがある
RFC 8446TLS 1.3。Kafkaブローカー間・クライアント間の通信暗号化に使用

関連用語