Apache Kafka
クラウド・リードスケープ
Apache Sparkとは

AirBnB、Netflix、PinterestなどWeb上で最も人気なリアルタイムのイベント駆動型のユーザー体験のいくつかの背後にあるオープン・ソース・ストリーミング技術であるApache Kafkaについて学びましょう。

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

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

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

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

Kafkaの詳細は次のビデオをご覧ください。(9:10)


Kafkaの仕組み

Kafkaには3つの一次機能があります。

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

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

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

Kafkaのパフォーマンス

Kafkaは分散プラットフォームです。複数のサーバー、さらには複数のデータ・センターにまたがる、フォールト・トレラントで可用性の高いクラスターとして実行します。 Kafkaのトピックは、パフォーマンスに影響を及ぼすことなく、拡大して、大規模な同時コンシューマーを提供できる方法でパーティション化、複製されます。 Apache.orgによると、その結果、「サーバー上の永続ストレージが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クラスターへのリアルタイム・ストリーミング・データ・パイプラインを作成するのに使用されます。


KafkaとIBM Cloud®

 より良い顧客体験とより多くのアプリケーションへの 要求 がビジネスとIT運用に影響を与えるため、Kafkaはアプリケーションのモダナイゼーションであり続けます。 このような要求を満たすためには、  自動化の強化 も役立ちます。 小規模で測定可能な成功を収めた プロジェクト から 始めることが理想です。 それにより、他のプロセスや組織の他の部分に合わせてスケーリング、 最適化できます。 

IBMと協業することで、事前構築されたワークフローを含む、AIを活用した自動化機能を利用できるようになります。これにより、あらゆるプロセスをよりインテリジェントなものにすることで、イノベーションを加速させます。  

次のステップに進みます:

今すぐ IBM Cloud アカウントを使い始めましょう。


関連ソリューション

アプリケーションのモダナイゼーション

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


AIを活用した自動化

IBMは、お客様のビジネス・ワークフローからIT運用まで、AIを活用した自動化を提供いたします。


IBM Cloud Pak for Integration

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