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には3つの一次機能があります。
開発者は4つのAPIを介してこれらのKafkaの機能を活用できます。
Kafkaは分散プラットフォームです。複数のサーバー、さらには複数のデータ・センターにまたがる、フォールト・トレラントで可用性の高いクラスターとして実行します。 Kafkaのトピックは、パフォーマンスに影響を及ぼすことなく、拡大して、大規模な同時コンシューマーを提供できる方法でパーティション化、複製されます。 Apache.orgによると、その結果、「サーバー上の永続ストレージが50 KBであっても50 TBであってもKafkaは機能します」。
Kafkaは、主に2種類のアプリケーションを作成するために使用されます。
RabbitMQはアプリケーション、システム、サービスがメッセージング・プロトコルを内部で変換することで違いに通信することを可能にするミドルウェアの一種である、とても人気のあるオープン・ソースメッセージ・ブローカーです。
Kafkaはメッセージ・ブローカーの一種として始まり(理論上は現在もメッセージ・ブローカーとして使用できます)、RabbitMQは(とりわけ)メッセージング・モデルの公開またはサブスクライブをサポートしているので、KafkaとRabbitMQはしばしば代替品として比較されます。 しかし、比較はあまり実際的ではなく、2つの内のどちらかを選ぶ際のポイントとなる技術の詳細を人々は見ます。 たとえば、Kafkaのトピックは複数のサブスクライバーを持てますが、それぞれのRabbitMQメッセージは1つしか持てません。また、Kafkaのトピックは耐性のあるものですが、RabbitMQメッセージは消費されると削除されます。
結論:
Kafkaは頻繁に、より大きなストリーム処理、イベント駆動型のアーキテクチャー またはビッグ・データ分析のソリューションの一部として、他の複数のApacheの技術と使用されます。
Apache Sparkは、大規模なデータを処理するための分析エンジンです。 Sparkを使って、Apache Kafkaによって配信されるストリーム上で分析を実行し、前述したクリックストリーム分析などのリアルタイム・ストリーム処理アプリケーションを生み出します。
Apache NiFiは視覚的なドラッグ・アンド・ドロップ・インターフェースを持つデータ・フロー管理システムです。 NiFiはKafkaのプロデューサーおよびコンシューマーとして実行できるので、Kafkaが対処できないデータ・フローの課題を管理する理想的なツールです。
Apache Flinkは大規模なイベント・ストリーム上で計算を、一貫として速い速度で、待ち時間なく行うためのエンジンです。 FlinkはKafkaのコンシューマーとしてストリームを取り込み、これらのストリームに基づいて操作をリアルタイムで行い、結果をKafkaまたは別のアプリケーションに公開することができます。
Apache Hadoopは、ビック・データ分析、機械学習、データ・マイニング、その他、構造化されたデータと構造化されていないデータを処理するデータ駆動のアプリケーションで使用するために膨大な量のデータをコンピューターのクラスター内で保管することを可能にする分散ソフトウェア・フレームワークです。 Kafkaはしばしば、Hadoopクラスターへのリアルタイム・ストリーミング・データ・パイプラインを作成するのに使用されます。
より良い顧客体験とより多くのアプリケーションへの 要求 がビジネスとIT運用に影響を与えるため、Kafkaはアプリケーションのモダナイゼーションであり続けます。 このような要求を満たすためには、 自動化の強化 も役立ちます。 小規模で測定可能な成功を収めた プロジェクト から 始めることが理想です。 それにより、他のプロセスや組織の他の部分に合わせてスケーリング、 最適化できます。
IBMと協業することで、事前構築されたワークフローを含む、AIを活用した自動化機能を利用できるようになります。これにより、あらゆるプロセスをよりインテリジェントなものにすることで、イノベーションを加速させます。
次のステップに進みます:
今すぐ IBM Cloud アカウントを使い始めましょう。