MENU

Apache Kafka — 大規模分散ストリーミングのデファクト基盤

Apache Kafka アイキャッチ
Apache Kafka

Apache Kafkaは2011年、LinkedInで開発されてOSS化された分散ストリーミングプラットフォームです。現在はApache Software Foundationが運営し、Confluent社が商用化を主導。「ログのような順序付きイベント列を、大量のプロデューサーとコンシューマで非同期に共有する」設計で、リアルタイムデータパイプライン、イベント駆動アーキテクチャ、ログ集約等の用途で世界中で使われています。

目次

この記事の目次

  1. Kafkaの基本概念
  2. Kafkaの主な使われ方
  3. Kafkaエコシステム
  4. Kafkaと類似ツール
  5. まとめ

Kafkaの基本概念

Kafkaの基本概念

Kafkaはイベント(メッセージ)を「Topic」に分類して保存します。各Topicは複数のPartitionに分かれており、Partition単位で並列処理・順序保証が成立します。Producerがメッセージを送り、Consumer Groupが分担して受信、という仕組みです。

「キューでありながらログでもある」のがKafkaの特徴。受信側がメッセージを読み終えても削除されず、設定した期間(または容量)保持されるため、後から別のConsumerが過去のイベントを読み直すこともできます。

Kafkaの主な使われ方

Kafkaの主な使われ方

Kafkaの典型ユースケースは「非同期メッセージング」「ログ集約」「イベントソーシング」「ストリーミングETL」など。「Aサービスで起きたイベントを、B/C/D/E複数の下流サービスが好きなタイミングで読む」という疎結合な構成が、マイクロサービス・データ基盤双方で重宝されます。

「全企業の中央神経系」として位置付けることもあり、ユーザー行動・在庫変動・センサー値などをKafkaに流して、リアルタイム分析・推薦・通知・倉庫制御に分配する、というアーキテクチャは現代の常識になっています。

Kafkaエコシステム

Kafkaエコシステム

Kafka本体はBroker(メッセージ仲介役)が中心ですが、周辺にも豊富なエコシステムがあります。Kafka ConnectでDB等の外部システムから取り込み・書き出し、Kafka Streamsでアプリ内ストリーム処理、ksqlDBでSQL風にストリーム集計などが可能。

Confluent Platformはこれらをまとめた商用版で、Schema Registry、Replicator、Control Center等の付加機能を持ちます。クラウドのマネージドサービスもAmazon MSK、Confluent Cloud、Aiven、Upstashなど選択肢豊富です。

Kafkaと類似ツール

Kafkaと類似ツール

Kafkaは大規模・大流量・耐障害性に強みがある一方、運用とコストの面では重い選択肢でもあります。小規模なら RabbitMQ や Redis Streams で十分なケースも多く、PoCではこれらから始めて伸びてからKafkaに移る判断もあり。

Apache Pulsarは Kafka と類似のミッションを持つ後発OSSで、ブローカと永続化を分離した設計が特徴。AWS環境なら Amazon Kinesis という選択肢もあり、用途・規模・運用体制で総合判断します。

まとめ

Apache KafkaはリアルタイムデータをWebサービス/エンタープライズの中央に流す基盤として、業界標準の地位を確立しました。イベント駆動アーキテクチャ・データ基盤・マイクロサービス全てに関わる現代エンジニアにとって、避けては通れない技術です.

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次