ホーム Topics Apache Sparkとは Apache Kafka
Apache Kafkaとは、AirBnB、Netflix、Pinterestなどの、Web上で最も人気のあるリアルタイムのイベント駆動型ユーザー体験の一部に使用されている、オープンソース・ストリーミング・テクノロジーです
黒と青の抽象的なイメージ
Apache Kafkaとは

Apache Kafka(Kafka)は(ストリーミング・プラットフォームの中でも特に)リアルタイムのイベント駆動型のアプリケーションの開発を可能にするオープン・ソースの分散ストリーミング・プラットフォームです。 つまり、どういうことなのでしょうか。

今日、何十億ものデータ・ソースが絶えず、イベント・ストリームなどのデータ・レコードを生成し続けています。 イベントとは、発生したアクションと発生時刻についてのデジタル記録です。 一般的に、イベントは他のアクションをプロセスの一部として駆動させるアクションです。 顧客による注文、フライトの座席の選択、または登録フォームの提出がイベントの例です。 イベントは人に関わるものでなくても構いません。たとえば、特定の時間にネット接続されたサーモスタットが温度を報告することもイベントです。

これらのストリームにより、アプリケーションがリアルタイムに、データまたはイベントに対応する機会を提供します。 ストリーミング・プラットフォームは、正しい発生順序に基づく高レベルの精度と正確性を備え、こうしたストリームを高速で絶えず消費、処理するアプリケーションを、開発者が構築できるようにします。

2011年、LinkedIn社は、独自で使用するために、高スループットのメッセージ・ブローカーとしてKafkaを開発し、その後、Kafkaをオープン・ソース化してApache Software Foundation (ibm.com外部へのリンク)に寄付しました。 今日、Kafkaは、ボリュームが拡大しても、明らかなパフォーマンス・ラグを発生させることはなく、1日に何兆もの記録を取り込み、処理できる、最も広く使用されるストリーミング・プラットフォームへと進化しました。 Target、Microsoft、AirBnB、NetflixなどのFortune 500に掲載されている組織はKafkaを利用し、リアルタイムのデータ駆動型のエクスペリエンスを顧客へ届けています。

Kafkaの詳しい情報については以下のビデオをご覧ください。(9:10)

Kafkaの仕組み

Kafkaには以下の3つの主要機能があります。

  1. アプリケーションがデータ・ストリームまたはイベント・ストリームを、公開あるいはサブスクライブできるようにします。
  2. フォールト・トレラントで耐久性のある方法で記録を正確に(発生した順番に並べるなどして)保管します。
  3. 記録をリアルタイムで(発生時に)処理します。

開発者は以下の4つのAPIを介してこれらのKafkaの機能を活用できます。

  • プロデューサーAPI:アプリケーションがストリームをKafkaのトピックに公開することを可能にします。 トピックは、相互に関連させて、記録を発生した順番に並べて保管する名前付きログです。 記録がトピックに書き込まれると、変更や削除ができなくなります。代わりに、事前に設定した時間(2日間など)あるいはストレージのスペースがなくなるまでトピック内に残ります。
  • コンシューマーAPI:アプリケーションが1つ以上のトピックをサブスクライブし、トピック内に保管されたストリームを取り込み、処理できるようにします。 トピック内の記録をリアルタイムで処理したり、過去の記録を取り込み、処理したりできます。
  • Stream API:プロデューサーAPIやコンシューマーAPI上に構築され、アプリケーションが連続する、前から後ろへのストリーム処理を実行するのを可能にする複雑な処理機能を追加し、とりわけ、1つ以上のトピックから記録を利用したり、必要に応じてこれらを分析、総計、変換したり、結果として生じるストリームを同じトピックまたは別のトピックに公開したりします。 プロデューサーAPIやコンシューマーAPIは、単純なストリーム処理に使えますが、より高度なデータおよびイベントのストリーミング・アプリケーションの開発を可能にするのはStream APIです。
  • コネクターAPI:開発者がコネクターを構築でるようにします。このコネクターは、データ・ソースのKafkaクラスターへの統合を簡素化、自動化する、再利用可能なプロデューサーまたはコンシューマーです。 人気のあるデータ・ストア用の既成のコネクター (ibm.com外へのリンク)の一部をご覧ください。
Kafkaのパフォーマンス

Kafkaは分散プラットフォームです。複数のサーバー、さらには複数のデータ・センターにまたがる、フォールト・トレラントで可用性の高いクラスターとして実行されます。 Kafkaのトピックは、パフォーマンスに影響を及ぼすことなく、拡大でき、同時に大量のコンシューマーに提供できるように、パーティション化と複製が行われます。 Apacheの組織によると、その結果、「サーバー上の永続ストレージが50 KBであっても50 TBであってもKafkaは機能します。」

Kafkaのユースケース

Kafkaは、主に以下に挙げるような2つのタイプのアプリケーションを作成するために使用されます。

  • リアルタイム・ストリーミング・データ・パイプライン:とりわけ、莫大な量のデータを高速で移動させるときに発生するデータの汚染や複製のリスクやその他の問題を発生させることなく、何百万ものデータまたはイベントの記録を企業のシステム間で確実に(大規模にリアルタイムで)移動させるよう設計されたアプリケーションです。
  • リアルタイム・ストリーミング・アプリケーション:記録またはイベント・ストリーム駆動型ののアプリケーションで独自のストリームを生成します。 オンラインで過ごすことがある場合は毎日、ローカル・ストアで製品の数量を絶えず更新する小売サイトに始まり、クリック・ストリーム分析に基づいてパーソナライズされたおすすめや広告を表示するサイトまで、数多くのアプリケーションに遭遇するでしょう。
KafkaとRabbitMQ

RabbitMQは、とても人気のあるオープン・ソースのメッセージ・ブローカーで、アプリケーション、システム、およびサービスがメッセージング・プロトコルを内部で変換することで互いに通信することを可能にするミドルウェアの一種です。

Kafkaはメッセージ・ブローカーの一種として始まり(理論上は現在もメッセージ・ブローカーとして使用できます)、RabbitMQは(とりわけ)メッセージング・モデルの公開またはサブスクライブをサポートしているので、KafkaとRabbitMQはしばしば代替品として比較されます。 しかし、この比較は実際にはあまり実用的ではなく、人々は、2つの内のどちらかを選ぶ際のポイントととして、技術上の細かい部分を見ます。 例えば、Kafkaのトピックは複数のサブスクライバーを持てますが、それぞれのRabbitMQメッセージは1つしか持てません。また、Kafkaのトピックは耐性のあるものですが、RabbitMQメッセージは消費されると削除されます。

結論は以下の通りです。

  • Kafkaはアプリケーションが莫大な量のレコード・ストリームを迅速に永続的な方法で公開、消費、処理できるようにするストリーム処理プラットフォームです。
  • RabbitMQはメッセージ・ブローカーで、異なるメッセージング・プロトコルを使用するアプリケーションが、互いにメッセージを送受信できるようにするものです。
Kafkaでよく使用されるApacheのテクノロジー

Kafkaは頻繁に、より大きなストリーム処理、イベント駆動型のアーキテクチャー またはビッグ・データ分析のソリューションの一部として、他の複数のApacheのテクノロジーとともに使用されます。

Apache Spark

Apache Sparkは、大規模なデータを処理するための分析エンジンです。 Sparkを使って、Apache Kafkaによって配信されるストリーム上で分析を実行し、前述したクリック・ストリーム分析などのリアルタイム・ストリーム処理アプリケーションを生み出します。

Apache NiFi

Apache NiFiは視覚的なドラッグ・アンド・ドロップ・インターフェースを持つデータ・フロー管理システムです。 NiFiはKafkaのプロデューサーおよびコンシューマーとして実行できるので、Kafkaが対処できないデータ・フローの課題を管理する理想的なツールです。

Apache Flink

Apache Flinkは。イベント・ストリーム上で、一貫して高速で、低遅延で、大規模な計算を行うためのエンジンです。 FlinkはKafkaのコンシューマーとしてストリームを取り込み、これらのストリームに基づいて操作をリアルタイムで行い、結果をKafkaまたは別のアプリケーションに公開することができます。

Apache Hadoop

Apache Hadoopは、ビック・データ分析、機械学習、データ・マイニング、およびその他の、構造化データと非構造化データを処理するデータ駆動型のアプリケーションで使用するために、膨大な量のデータをコンピューターのクラスター内で保管することを可能にする分散ソフトウェア・フレームワークです。 Kafkaはしばしば、Hadoopクラスターへのリアルタイム・ストリーミング・データ・パイプラインを作成するのに使用されます。

関連ソリューション
アプリケーションのモダナイゼーション・サービス

信頼性の高いさまざまなクラウドで、アプリケーションを安全に構築、モダナイズ、管理します。

アプリケーション・モダナイゼーション・コンサルティング・サービスの詳細はこちら
AIを活用した自動化

ビジネス・ワークフローからIT運用まで、AIを活用した自動化を実現します。

AIを活用した自動化の詳細はこちら
IBM Cloud Pak for Integration

アプリケーション、サービス、データを、市場で最も包括的な統合プラットフォームであるIBM Cloud Pak for Integrationで連携できます。

IBM Cloud Pak for Integrationの詳細はこちら
詳細情報はこちら

優れた顧客体験とより多くのアプリケーションに対する需要が、ビジネスとIT運用に影響を与えているため、Kafkaはアプリケーションのモダナイゼーションの一部であり続けるでしょう。 このような需要に対応するためには、さらに自動化を進めることが大事です。 IBMと協業することで、事前構築されたワークフローを含む、AIを活用した自動化機能を利用できるようになります。これにより、あらゆるプロセスをよりインテリジェントなものにすることで、イノベーションを加速させます。 IBM Cloudで、イベント駆動型アプリケーションの構築が可能になる、フル・マネージドのKafka-as-a-Serviceイベント・ストリーミング・プラットフォームのIBM Event Streams for IBM Cloudについて詳細をご覧ください。

IBM Event Streamsの詳細はこちら