はじめに
イベントメッシュは、分散環境全体のアプリケーションに通知を送信するための動的インフラストラクチャです。イベント駆動型アーキテクチャ (EDA) のコンテキストでは、イベントは、通知を生成するシステム内の変更、アクション、または監視であり、通知はそのイベントに対応する他のシステムに送信されます。イベントメッシュにより、このような接続が可能になります。
イベントメッシュで解決できる問題
大規模組織では、高度に分散されたインフラストラクチャ全体に大量のデータを配布できるようにすることが必須になっています。ミッションクリティカルなアプリケーションは、ビジネスを推進する相互作用とトランザクションを処理するのに必要な重要データを共有するために、信頼性が高くタイムリーな方法で通信できる必要があります。
大規模組織のインフラストラクチャは地理的に分散しているだけでなく、別個の異種クラスタに存在しています。先進的な組織にとっては、そのようなインフラストラクチャ全体で、このデータをどのようにスケーラブルで効率的かつ経済的な方法で移動させるかが課題となります。そのソリューションがイベントメッシュです。これは、あらゆる環境で (クラウド間でも)、シームレスな方法でイベントをスムーズに転送するように設計されたインフラストラクチャです。
Red Hat のリソース
イベント駆動型アーキテクチャ (EDA) とは
イベントメッシュを説明するには、まず、「イベント」を介した通信に基づくソフトウェア・アーキテクチャであるイベント駆動型アーキテクチャ (EDA) について説明する必要があります。イベントは、通知を生成するシステム内の変更、アクション、または監視であり、通知はそのイベントに対応する他のシステムに送信されます。
イベントのトリガーには、たとえば顧客の請求先住所の変更、新規注文のようなアクション、バッテリーの充電レベルやセンサーによる温度測定値の監視などがあります。 各イベントは、他のアプリケーションによって消費される情報です。複数のコンシューマーが同じメッセージを受信し、関連するデータをそれぞれ独自の方法で利用して、特定のジョブを遂行することができます。
EDA のイベントベースの通信は「非同期」型であり、このタイプのデータ転送の方法としては従来の「同期」通信より適しています。同期メッセージングでは、2 つのアプリケーションが直接接続します。通常は HTTP アプリケーション・プログラミング・インタフェース (API) を介して接続し、正常に通信するには、両方のサービスが利用可能かつ応答可能であることが必要です。いずれかのサービスが利用できない場合、メッセージを処理できず、システム全体が停止したり、破綻したりする可能性があります。同期送信は、多くの場合、組織全体の複数のシステムに大量の情報を送信する方法として理想的なものではありません。
逆に「非同期」通信はイベント駆動型であり、複数のアプリケーションがほぼリアルタイムで同時かつ迅速に通信することが可能です。システムが一時的にイベントを受信できない状態になっていたとしても、EDA の非同期性により、システムが使用可能になれば通知が配信されます。
EDA は、イベントプロデューサーとコンシューマーの間のランタイムカップリングを必要としないため、EDA は先進的な分散アプリケーションに最適です。
イベントメッシュの機能
組織全体で、毎分数百から数千ものイベントが生成されます。組織は、クラウドとオンプレミスの分散環境にまたがってデプロイされたさまざまなアプリケーションに、大量のイベントを配信する効果的な方法を必要としています。イベント駆動型の組織では、イベントメッシュによってそれが可能になります。
イベントメッシュは、相互接続された「イベントブローカー」のネットワークを介してプロデューサーからコンシューマーにイベントを配信する動的インフラストラクチャです。イベントメッシュは環境に依存せず、アプリケーションのデプロイ先 (パブリック、プライベート、ハイブリッドクラウド、PaaS、モノのインターネット (IoT)、さらには非クラウド) に関係なく、統合されていないクラウド・プラットフォーム間でイベントを配信するように設計されており、イベントルーティングの構成は必要ありません。
イベントメッシュを使用すると、パブリッシャーはプラットフォームのネイティブなイベントメカニズムを使用でき、サブスクライバーも同様です。したがって、Kubernetes クラスタの Node.js 開発者がイベントを公開し、別のクラスタの Java 開発者が同じイベントにサブスクライブすることも可能です。アプリケーションの種類、アプリケーションが構築された開発プラットフォーム、メッセージングに使用されるストリーミング・テクノロジー、あるいは、アプリケーションがホストされているクラウドの種類に関係なく、すべてのコンシューマーがイベントを利用できます。
イベントメッシュは、環境に関係なくアプリケーション間で情報を配信できるため、レガシーアプリケーション、データベース、デバイス、および最新のマイクロサービスベースのクラウドネイティブ・アプリケーション間の疎結合統合をサポートします。
イベントメッシュは、さまざまなメッセージングサービスと連携させたり、それらのサービス間で変換させたりすることもできます。Apache Kafka は、特にクラウドネイティブ開発者が好んで選択する EDA メッセージングです。イベントメッシュは、Knative Eventing、Cloud Events、HTTP、AMQP などの他のメッセージングサービスもサポートします。
イベント駆動型アーキテクチャを完全に採用している組織では、イベントメッシュは EDA 導入のプロセスが成熟段階に入ったことを意味します。非同期相互作用とイベント駆動型アーキテクチャのパターンは新しいものではありませんが、イベントメッシュは統合への画期的な新しいアプローチで、次世代の組織の通信インフラストラクチャになるものとして位置付けられています。
イベントメッシュとサービスメッシュの違い
名前が似ているため、サービスメッシュとイベントメッシュは混同されがちです。しかし、イベントメッシュはサービスメッシュとは違います。イベントメッシュは非同期ですが、サービスメッシュがサポートするのは従来の同期型の要求/応答メッセージングです。
イベントメッシュとサービスメッシュは、2 つの異なる効果的な通信オプションを提供することで組織内で相互に補完し、開発者が設計しているアプリケーションに最適なものを選択できる柔軟性を提供します。ただし、サービスメッシュは非同期のイベント駆動型通信をサポートしていないので、単一クラスタのデプロイには最適ですがイベントメッシュの代わりに使用することはできません。
イベントメッシュに必須の機能
組織の要求に応え、イベント駆動型アーキテクチャに求められるものを提供するために、イベントメッシュは次の機能を備えている必要があります。
- Kafka、Knative Eventing、HTTP、AMQP などのさまざまなメッセージングサービスのサポート
- ネットワーク障害からの自動回復や配信不能メッセージのフォールバック宛先など、信頼性の高いメッセージ配信のフォールトトレランス
- 統合されていないイベント、アプリケーション、メッセージング・プラットフォーム間のマルチプロトコルブリッジのサポート
- オンプレミスとマルチクラウドの両方のデプロイのサポート
- マルチキャスト (すべてのサブスクライバーが各メッセージのコピーを受信する) またはエニーキャスト (1 つのサブスクライバーが生成された各メッセージのコピーを受信する) アドレスのサポート
- イベントメッセージの安全な接続と送信
イベントメッシュのユースケース
イベント駆動型アーキテクチャとイベントメッシュを組み合わせると、さまざまなアプリケーションスタックを使用して、複雑で広く分散されたマルチクラウドのトポロジー全体にデプロイされる広範なユースケースをサポートできます。以下は、イベントメッシュを活用できる可能性がある多くのユースケースのほんの一例です。
マイクロサービスの統合
イベントメッシュは、マイクロサービスベースのアプリケーションを相互に、そしてレガシー・テクノロジーと簡単に接続します。
e コマース
イベントメッシュにより、トランザクションの迅速な処理が可能になり、Web サイトやアプリケーションを介して、顧客と高速で信頼性の高いやり取りが行えるようになります。
カスタマーサポート
イベントメッシュは、顧客とのやり取りのデータを高速で提供できるため、サポートチームは顧客にリアルタイムで応答し、パーソナライズされたエクスペリエンスを生み出すことができます。
金融サービス
イベントメッシュを使用すると、金融サービスプロバイダーは、リアルタイムの取引データを少ない待ち時間で同期できるようになります。さらに、イベントメッシュは、疑わしいトランザクションに関する情報をリアルタイムで伝達し、不正の検出をサポートします。
IoT 接続
イベントメッシュは、信頼性が高くスケーラブルな IoT (モノのインターネット) 接続をバックエンドシステムにもたらし、ほぼすべてのセンサーのメトリクスを処理します。
イベントメッシュのビジネス上のメリット
イベントメッシュは、最終的に、ビジネスに次のようなメリットをもたらします。
リアルタイムの応答性
ビジネスの成功は、変化への対応力に基づいています。イベントメッシュの主な利点の 1 つは、データを (イベント駆動型アーキテクチャを介したイベントのストリームとして) リアルタイムで提供し、タイムリーな応答を可能にすることです。イベントメッシュは非常に効率的で、イベントプロデューサーとコンシューマーを結ぶ最速のパスを決定し、メッセージングのレイテンシーを実質的に排除します。これにより、ビジネスのステークホルダーは、時間的制約のある意思決定を必要とする重要な問題に迅速に対応するためのアジリティを得ることができます。
カスタマーエクスペリエンスの向上
イベントメッシュは、顧客対応チームと e コマース・テクノロジーが使用するデータのリアルタイム提供を可能にし、顧客へのサービス提供を支援するため、カスタマーエクスペリエンスが向上します。
運用コストの削減
イベントメッシュは、製造、販売、在庫、出荷をリアルタイムで可視化することにより、運用の最適化、効率の向上、コストの削減を可能にします。
開発者の生産性
さまざまな種類の環境、メッセージングシステム、プロトコルに依存しないイベントメッシュのサポートを受け、アプリケーション開発者は、利用可能な最善の技術を使用してビジネスロジックの実装に専念できます。これにより、開発者は、複雑なデータ配信ネットワークを開発することなく、開発環境、メッセージング・プラットフォーム、またはクラウドの種類に制限を加えずに、イノベーションを起こすことができます。
Red Hat 公式ブログ
Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。