アカウント ログイン
Jump to section

イベント駆動型アーキテクチャとは

URL をコピー

イベント駆動型アーキテクチャとは、アプリケーション設計用のソフトウェア・アーキテクチャモデルです。イベント駆動型システムでは、イベントのキャプチャ、通信、処理、永続性がソリューション構造の中核を担っています。これが従来の要求駆動型モデルとの違いです。

リアルタイムで顧客データを利用する必要がある顧客エンゲージメント・フレームワークなど、先進的なアプリケーション設計の多くはイベント駆動型です。イベント駆動型アプリケーションはどのプログラミング言語を使用しても作成できます。これはイベント駆動は言語ではなく、プログラミングによるアプローチだからです。イベント駆動型アーキテクチャでは結合が最小限になるので、先進的な分散アプリケーション・アーキテクチャにとって効果的なオプションとなります。

イベント駆動型アーキテクチャは疎結合ですが、これはイベントプロデューサーはどのイベントコンシューマーがイベントを待機しているか認識せず、イベントは結果を認識しないからです。

イベントは、システムのハードウェアまたはソフトウェアの状態における何らかの意味のある出来事または変化です。イベント通知、つまりイベントが発生したことをシステムの他の部分に知らせる、システムが送信するメッセージまたは通知とは異なります。

イベントのソースは、内部入力の場合も外部入力の場合もあります。つまり、マウスクリックやキーストロークなどのユーザー操作やセンサー出力などの外部ソースから発生することもあれば、プログラムの読み込みなどによってシステム内部で発生することもあります。

イベント駆動型アーキテクチャは、イベントプロデューサーとイベントコンシューマーで構成されています。イベントプロデューサーはイベントを検出または感知し、イベントをメッセージとして表現します。イベントのコンシューマーやイベントの結果を知ることはありません。 

検出されたイベントは、イベントプロデューサーからイベントチャネルを通じてイベントコンシューマーに送信され、イベント処理プラットフォームで非同期的に処理されます。イベントが発生したとき、その情報をイベントコンシューマーに伝える必要があります。コンシューマーはイベントを処理することもあれば、ただ影響を受けるだけの場合もあります。 

イベント処理プラットフォームはイベントに対して適切な対応を実行し、アクティビティをダウンストリームの適切なコンシューマーに送信します。このダウンストリーム・アクティビティの出力が、イベントの結果となります。 

Apache Kafka はイベント処理によく使われる分散データ・ストリーミング・プラットフォームで、イベントストリームのパブリッシュ、サブスクライブ、保存、処理をリアルタイムで処理できます。高スループットとスケーラビリティが欠かせないさまざまなユースケースに対応し、特定のアプリケーションでデータを共有するためのポイントツーポイントの統合の必要性を最小化することで、レイテンシーをミリ秒単位にまで削減します。 

イベント処理プラットフォームとして機能するミドルウェア・イベント・マネージャーは他にもあります。

イベント駆動型アーキテクチャは、Pub/Sub モデルまたはイベント・ストリーム・モデルをベースにして構築できます。

Pub/Sub モデル

イベントストリームへのサブスクリプションをベースにした、メッセージ・インフラストラクチャです。このモデルでは、イベントが発生したりパブリッシュされたりすると、通知を受ける必要があるサブスクライバーに送信されます。

イベント・ストリーミング・モデル

イベント・ストリーミング・モデルでは、イベントはログに書き込まれます。イベントコンシューマーはイベントストリームにサブスクライブしませんが、ストリームの任意の部分から読み取って、いつでもストリームに参加できます。 

イベントストリーミングには、次のようないくつかの種類があります。

  • イベントストリーム処理:Apache Kafka などのデータ・ストリーミング・プラットフォームを使用して、イベントを取り込み、イベントストリームを処理または変換します。イベントストリーミング処理を使用して、イベントストリーム内の意味のあるパターンを検出できます。
  • シンプルなイベント処理:イベントによって、即座にイベントコンシューマーでアクションがトリガーされます。
  • 複雑なイベント処理:パターンを検出するには、イベントコンシューマーが一連のイベントを処理する必要があります。

イベント駆動型アーキテクチャは、変化に適応できてリアルタイムで意思決定できる、柔軟なシステムを組織が達成できるよう支援します。リアルタイムで状況を把握できるので、システムの現状を表すすべての利用可能なデータを使用して、手動または自動でビジネス上の意思決定を下せます。 

IoT (モノのインターネット) デバイス、アプリケーション、ネットワークなどのイベントソースで発生したイベントはすぐにキャプチャされ、ステータスと応答情報はイベントプロデューサーとイベントコンシューマーの間でリアルタイムで共有されます。 

イベント駆動型アーキテクチャをシステムとアプリケーションに追加すると、アプリケーションのスケーラビリティと応答性、および必要なデータとコンテキストへのアクセスを向上させ、ビジネス上の意思決定を改善できます。

俊敏なDevOps 手法で開発された現在の疎結合されたクラウドネイティブ・アプリケーションとイベント駆動型アーキテクチャには、やはり俊敏でスケーラブルな統合アプローチが必要です。 

Red Hat が考えるアジャイル・インテグレーションとはリソースを接続するアプローチで、統合テクノロジー、アジャイル・デリバリー・テクニック、およびクラウドネイティブ・プラットフォームを組み合わせてソフトウェア提供の速度とセキュリティを向上するものです。 

Red Hat は、統合プラットフォームと管理ソフトウェアを提供し、レガシー・テクノロジーとマイクロサービスハイブリッドクラウド環境上で速やかに接続できるようにして、イベント駆動型アーキテクチャをアジャイル・インテグレーションでサポートします。

Kafka を無料で試す

ストリームベースのアプリケーション向けの Kafka サービスで、完全にホストおよび管理されている Red Hat OpenShift Streams for Apache Kafka をご利用ください。

関連資料

記事

統合 (インテグレーション) とは

統合に関する詳細な情報をお探しですか?デジタル・トランスフォーメーションとは何か、どのように導入できるか、そして、オープンソースがどのような相乗効果をもたらすのかを説明します。

記事

Apache Kafka とは

Apache Kafka は分散データストリーミング・プラットフォームで、レコードのストリームをリアルタイムで公開、サブスクライブ、保存、処理できます。

記事

API とは

API はアプリケーション・プログラミング・インタフェースの略であり、アプリケーション・ソフトウェアを構築および統合するための一連の定義とプロトコルです。

統合 (インテグレーション) の詳細はこちら

製品

Red Hat Integration

包括的な統合 (インテグレーション) およびメッセージング・テクノロジー群。

Red Hat Cloud Services

ハイブリッドクラウドのエクスペリエンスを効率化するホスト型およびマネージド型のプラットフォーム、アプリケーション、データサービスが含まれます。これにより、クラウドネイティブ・アプリケーションの提供に伴う運用コストと複雑さを軽減できます。

Red Hat Runtimes

クラウドネイティブ・アプリケーションの開発とメンテナンスに役立つ製品、ツール、コンポーネン​トを 1 つのセットとしてまとめたものです。Red Hat AMQ、Red Hat Data Grid、Red Hat JBoss® Enterprise Application Platform、Red Hat JBoss Web Server、 Red Hat の OpenJDK ビルド、Red Hat の Quarkus ビルド、クラウドネイティブ・ランタイム一式、Migration Toolkit for Applications、シングルサインオンおよびランチャーサービスが含まれます。

Red Hat Process Automation

ビジネスプロセスと意思決定をインテリジェントに自動化するための製品群。Red Hat Decision Manager、Red Hat Process Automation Manager、および Red Hat Runtimes が含まれます。

リソース

トレーニング

無料のトレーニングコース

Red Hat Agile Integration Technical Overview

Illustration - mail

その他の関連コンテンツ

無料のニュースレター「Red Hat Shares」(英語) では、注目の IT トピックスに関するコンテンツをお届けしています。