Apache Kafka は、大規模なストリーム処理、リアルタイムデータパイプライン、データ統合に使用されるオープンソースの分散型ストリーミングシステムです。リアルタイムデータの処理を目的に2011年に LinkedIn で開発されて以降、メッセージキューから、毎秒100万件以上のメッセージ、つまり1日あたり数兆件以上のメッセージを処理できる本格的なイベントストリーミングプラットフォームへと急速に進化を遂げてきました。
Apache Kafka® を生んだ開発者チームによって設立された Confluent は、非常に幅広い Kafka チュートリアル、トレーニング、サービス、サポートを提供します。また、Confluent はあらゆるクラウド環境向けに構築された完全マネージド型のクラウドネイティブなデータストリーミングサービスを提供しており、最新のデータインフラストラクチャのニーズに対応するスケーラビリティと信頼性が確保されます。
Kafka には無数の利点があります。今日、Kafka はほぼあらゆる業界のフォーチュン100企業の80%以上において、大小さまざまなユースケースで使用されており、最新世代のスケーラブルなリアルタイムデータストリーミングアプリケーションの構築を検討している開発者やアーキテクトが使用するデファクトテクノロジーとなっています。市場には、こうした目的を達成できるさまざまなテクノロジーがありますが、主に以下の理由から Kafka は非常に高い人気を集めています。
Kafka は高速かつ大量のデータに対応し、1 秒あたり数百万件のメッセージを処理できます。そのため、複数のサーバー間でのリアルタイムのデータ処理と統合を必要とするアプリケーションに最適です。
Kafka Cluster は最大1,000点の Broker まで拡張でき、1 日あたり数兆件のメッセージと数ペタバイトのデータを処理できます。Kafka のパーティション分割ログモデルでは、ストレージと処理能力の柔軟な拡張と縮小が可能です。このスケーラビリティにより、Kafka は膨大な数のデータソースとストリームをサポートできます。
Kafka は、2 ミリ秒という低レイテンシでマシンのクラスターを使用して大量のメッセージを配信できます。この低レイテンシは、リアルタイムのデータ処理とデータストリームへの即時応答を必要とするアプリケーションにとって非常に重要です。
Kafka は、分散型で耐久性があり、フォールトトレラントなクラスターにデータストリームを安全かつ確実に保存します。これにより、データレコードが確実に保存され、サーバー障害が発生した場合でもアクセスできるようになります。パーティション化されたログモデルにより、Kafka のデータストリーム管理能力がさらに強化され、1回限りの処理が保証されます。
Kafka は、クラスターを可用性ゾーン間で効率的に拡張したり、地理的リージョン間でクラスターを接続したりできます。この高可用性により、Kafka はフォールトトレラントとなり、データ損失のリスクがなくなります。Kafka の設計により、複数のサブスクライバーと外部ストリーム処理システムをシームレスに管理できます。
Apache Kafka はストレージ層とコンピューティング層で構成されており、効率的なリアルタイムのデータ取り込み、ストリーミングデータパイプライン、分散システム全体にわたるストレージを可能にします。その設計により、Kafka と外部システム間のデータストリーミングが簡素化されるため、リアルタイムのデータを簡単に管理し、あらゆるタイプのインフラストラクチャ内で拡張できます。
データストリーミングプラットフォームには、データの生成と同時にそのデータを処理し、分析できる機能が欠かせません。Kafka Streams API は、強力かつ軽量なライブラリで、集計、ウィンドウパラメータの作成、ストリーム内のデータ結合などの同時処理が可能です。これは Kafka 上に Java アプリケーションとして構築されているため、追加のクラスターを管理する必要なくワークフローを継続できます。
Kafka は、分散データベースに一般的な分散コミットログを抽象化することで、耐久性のあるストレージを提供します。これにより、Kafka は「信頼できる唯一の情報源」として機能し、複数のノードにデータを分散することで、単一のデータセンターや複数の可用性ゾーンにまたがる高可用性のデプロイメントを実現します。この耐久性と永続性に優れたストレージにより、サーバー障害が発生した場合でもデータの整合性と信頼性が確保されます。
Kafka は、シンプルで不変のコミットログを備えています。ユーザーがサブスクライブすることで、任意の数のシステムやリアルタイムアプリケーションにデータを公開できます。従来のメッセージングキューとは異なり、Apache Kafka® は拡張性が高く、フォールトトレラントな分散システムです。これにより、Kafka は個々のアプリケーションから全社的な展開まで拡張できるようになります。例えば Kafka は、Uber での乗客とドライバーのマッチング管理、British Gas のスマートホーム向けリアルタイム分析と予測メンテナンス、LinkedIn 全体の多数のリアルタイムサービスの実行などに使用されています。
リアルタイムストリーミングデータパイプラインやリアルタイムストリーミングアプリケーションの構築によく使用される Kafka は、さまざまなユースケースをサポートします。データに依存している、またはデータを扱う企業は、Kafka を利用することで多くのメリットを得られます。
Apache Kafka のコンテキストにおいて、ストリーミングデータパイプラインとは、データが作成され次第ソースから Kafka にデータを取り込み、そのデータを Kafka から1つ以上のターゲットにストリーミングすることを意味します。これにより、さまざまなシステム間でシームレスなデータ統合と効率的なデータフローが可能になります。
ストリーム処理には、フィルター、結合、マップ、集計、その他の変換などの操作が含まれており、企業はこれらを活用して多くのユースケースを強化します。Apache Kafka のために構築されたストリーム処理ライブラリ Kafka Streams を使用すると、企業はデータをリアルタイムで処理でき、即時のデータ処理と分析を必要とするアプリケーションに最適です。
Kafka は高スループットのイベント配信を提供し、Druid などのオープンソーステクノロジーと組み合わせると、強力なストリーミング分析マネージャー (SAM) を形成できます。Druid は Kafka からのストリーミングデータを消費して分析クエリを有効にします。イベントは最初に Kafka にロードされ、Broker でバッファリングされ、その後 Druid リアルタイムワーカーによって消費されます。これにより、リアルタイムの分析と意思決定が可能になります。
Kafka を使用したリアルタイム ETL は、他のデータベース、アプリケーション、API との間でデータの消費と生成を行うために使用される Kafka Connect ソースコネクターとシンクコネクター、オプションの Kafka Connect 機能である Single Message Transforms (SMT)、大規模なリアルタイムの継続的なデータ処理を実現する Kafka Streams など、さまざまなコンポーネントと機能を組み合わせています。これらにより、効率的なデータ変換と統合が可能になります。
Apache Kafka は、スケーラビリティ、効率性、速度など、マイクロサービスが達成を目指す属性を実現しながらそのオーケストレーションに関連する多くの問題を解決するため、マイクロサービス向けに最も人気のあるツールです。Kafka はサービス間の通信も容易にし、超低レイテンシとフォールトトレランスを維持します。これは、堅牢でスケーラブルなマイクロサービスアーキテクチャの構築に不可欠です。
Apache Kafka の機能を使用することで、組織は効率の高いデータパイプラインを構築し、データストリームをリアルタイムで処理し、高度な分析を実行し、スケーラブルなマイクロサービスを開発でき、最新のデータドリブン型アプリケーションの需要を満たすことができます。
世界有数のブランドが Kafka を使用しています。