Apache Kafkaとは
Apache Kafkaは、分散ストリーミングプラットフォームです。高スループットでリアルタイムデータの配信・処理を実現し、Producer-Consumer型のメッセージングシステムを提供します。LinkedIn社で2011年にオープンソース化され、Netflix、Uber、Airbnb、PayPalなど世界中の大規模システムで活用されています。
2025年時点では、Apache Kafkaは単なるメッセージキューを超え、イベントストリーミングプラットフォームとして位置づけられています。
Kafkaの基本概念
- Producer:データ(メッセージ)をKafkaに書き込む送信者
- Consumer:Kafkaからデータを読み取る受信者
- Topic:メッセージを分類するカテゴリ(例:user-events、order-created)
- Partition:Topicを並列処理するための分割単位
- Broker:Kafkaサーバー(クラスター構成で高可用性を実現)
- Consumer Group:複数のConsumerが協調して並列処理するグループ
- Offset:Partitionでのメッセージ位置(処理済み位置の追跡に使用)
主な特徴と強み
- 高スループット:単一ブローカーで1秒間に数百万メッセージを処理可能
- 低レイテンシ:ミリ秒以下のリアルタイムデータ配信
- 耐久性・永続性:データをディスクに永続化(設定期間分をリプレイ可能)
- スケーラビリティ:Partitionを増やしてスケールアウト
- フォールトトレランス:レプリカで冗長化し単一障害点なし
主な活用シーン
- ログ収集・集約:マイクロサービス間のログを一元収集
- リアルタイム分析:Webサイトのページビュー・クリック等をリアルタイムで集計
- イベント駆動アーキテクチャ:Eコマースの注文→在庫更新→配送通知の非同期連携
- データパイプライン:DBからデータレイクへのETLパイプライン
- IoTデータ収集:センサーデータの大量処理
- 変更データキャプチャ(CDC):DBの更新をKafkaでリアルタイム同期
Kafkaエコシステム
- Kafka Connect:DB・S3・Elasticsearch等とのコネクタ(Source/Sink)
- Kafka Streams:軽量なストリーム処理ライブラリ(Java)
- KSQL/ksqlDB:SQL構文でのストリーム処理
- Confluent Platform:企業向けKafkaマネージドサービス
- Amazon MSK:AWSのマネージドKafkaサービス
- Confluent Cloud:フルマネージドのクラウドKafka
2025〜2026年の最新動向
- KRaft(ZooKeeper不要):Kafka 3.x以降でZooKeeper依存を廃止し、Kafka自体で合意形成
- Kafka 4.0(2024年末〜2025年):KRaft必須化、パフォーマンス大幅向上
- AI/MLパイプライン統合:機械学習の特徴量エンジニアリングをKafka Streamsで実装するパターンが普及
- Serverless Kafka:Confluent Cloud serverless・Amazon MSK Serverlessの普及
よくある質問(FAQ)
Q. Apache Kafkaとは何ですか?
Apache Kafkaは分散ストリーミングプラットフォームです。Producer-Consumer型のメッセージングシステムで、高スループット・低レイテンシ・耐久性を実現します。LinkedIn社で開発され、Netflix・Uber等の大規模システムで活用されています。
Q. KafkaとRabbitMQの違いは何ですか?
Kafkaはログ永続化・大容量スループット・リプレイに強く、ストリーミング処理や大量データパイプラインに適しています。RabbitMQはタスクキュー・細かいルーティング・低レイテンシが強みで、マイクロサービス間の非同期通信に向いています。用途に応じて選択します。
Q. Kafkaのマネージドサービスはありますか?
はい。Amazon MSK(AWSのマネージドKafka)、Confluent Cloud(フルマネージド・Confluent Platform)、Azure Event Hubs(Kafkaプロトコル互換)、Google Cloud Pub/Sub(Kafka互換)などがあります。インフラ管理を省略したい場合はマネージドサービスが便利です。
