概要
イベント駆動型アーキテクチャとは、アプリケーション設計用のソフトウェア・アーキテクチャモデルです。イベント駆動型システムでは、イベントのキャプチャ、通信、処理、永続性がソリューション構造の中核を担っています。これが従来の要求駆動型モデルとの違いです。
リアルタイムで顧客データを利用する必要がある顧客エンゲージメント・フレームワークなど、先進的なアプリケーション設計の多くはイベント駆動型です。イベント駆動型アプリケーションはどのプログラミング言語を使用しても作成できます。これはイベント駆動は言語ではなく、プログラミングによるアプローチだからです。イベント駆動型アーキテクチャでは結合が最小限になるので、先進的な分散アプリケーション・アーキテクチャにとって効果的なオプションとなります。
イベント駆動型アーキテクチャは疎結合ですが、これはイベントプロデューサーはどのイベントコンシューマーがイベントを待機しているか認識せず、イベントは結果を認識しないからです。
イベントとは
イベントは、システムのハードウェアまたはソフトウェアの状態における何らかの意味のある出来事または変化です。イベント通知、つまりイベントが発生したことをシステムの他の部分に知らせる、システムが送信するメッセージまたは通知とは異なります。
イベントのソースは、内部入力の場合も外部入力の場合もあります。つまり、マウスクリックやキーストロークなどのユーザー操作やセンサー出力などの外部ソースから発生することもあれば、プログラムの読み込みなどによってシステム内部で発生することもあります。
イベント駆動型アーキテクチャが機能する仕組み
イベント駆動型アーキテクチャは、イベントプロデューサーとイベントコンシューマーで構成されています。イベントプロデューサーはイベントを検出または感知し、イベントをメッセージとして表現します。イベントのコンシューマーやイベントの結果を知ることはありません。
検出されたイベントは、イベントプロデューサーからイベントチャネルを通じてイベントコンシューマーに送信され、イベント処理プラットフォームで非同期的に処理されます。イベントが発生したとき、その情報をイベントコンシューマーに伝える必要があります。コンシューマーはイベントを処理することもあれば、ただ影響を受けるだけの場合もあります。
イベント処理プラットフォームはイベントに対して適切な対応を実行し、アクティビティをダウンストリームの適切なコンシューマーに送信します。このダウンストリーム・アクティビティの出力が、イベントの結果となります。
Apache Kafka はイベント処理によく使われる分散データ・ストリーミング・プラットフォームで、イベントストリームのパブリッシュ、サブスクライブ、保存、処理をリアルタイムで処理できます。高スループットとスケーラビリティが欠かせないさまざまなユースケースに対応し、特定のアプリケーションでデータを共有するためのポイントツーポイントの統合の必要性を最小化することで、レイテンシーをミリ秒単位にまで削減します。
イベント処理プラットフォームとして機能するミドルウェア・イベント・マネージャーは他にもあります。
イベント駆動型アーキテクチャ・モデル
イベント駆動型アーキテクチャは、Pub/Sub モデルまたはイベント・ストリーム・モデルをベースにして構築できます。
Pub/Sub モデル
イベントストリームへのサブスクリプションをベースにした、メッセージ・インフラストラクチャです。このモデルでは、イベントが発生したりパブリッシュされたりすると、通知を受ける必要があるサブスクライバーに送信されます。
イベント・ストリーミング・モデル
イベント・ストリーミング・モデルでは、イベントはログに書き込まれます。イベントコンシューマーはイベントストリームにサブスクライブしませんが、ストリームの任意の部分から読み取って、いつでもストリームに参加できます。
イベントストリーミングには、次のようないくつかの種類があります。
- イベントストリーム処理:Apache Kafka などのデータ・ストリーミング・プラットフォームを使用して、イベントを取り込み、イベントストリームを処理または変換します。イベントストリーミング処理を使用して、イベントストリーム内の意味のあるパターンを検出できます。
- シンプルなイベント処理:イベントによって、即座にイベントコンシューマーでアクションがトリガーされます。
- 複雑なイベント処理:パターンを検出するには、イベントコンシューマーが一連のイベントを処理する必要があります。
イベント駆動型アーキテクチャのメリット
イベント駆動型アーキテクチャは、変化に適応できてリアルタイムで意思決定できる、柔軟なシステムを組織が達成できるよう支援します。リアルタイムで状況を把握できるので、システムの現状を表すすべての利用可能なデータを使用して、手動または自動でビジネス上の意思決定を下せます。
IoT (モノのインターネット) デバイス、アプリケーション、ネットワークなどのイベントソースで発生したイベントはすぐにキャプチャされ、ステータスと応答情報はイベントプロデューサーとイベントコンシューマーの間でリアルタイムで共有されます。
イベント駆動型アーキテクチャをシステムとアプリケーションに追加すると、アプリケーションのスケーラビリティと応答性、および必要なデータとコンテキストへのアクセスを向上させ、ビジネス上の意思決定を改善できます。
アジャイル・インテグレーションに Red Hat を選ぶ理由
俊敏なDevOps 手法で開発された現在の疎結合されたクラウドネイティブ・アプリケーションとイベント駆動型アーキテクチャには、やはり俊敏でスケーラブルな統合アプローチが必要です。
Red Hat が考えるアジャイル・インテグレーションとはリソースを接続するアプローチで、統合テクノロジー、アジャイル・デリバリー・テクニック、およびクラウドネイティブ・プラットフォームを組み合わせてソフトウェア提供の速度とセキュリティを向上するものです。
Red Hat は、統合プラットフォームと管理ソフトウェアを提供し、レガシー・テクノロジーとマイクロサービスをハイブリッドクラウド環境上で速やかに接続できるようにして、イベント駆動型アーキテクチャをアジャイル・インテグレーションでサポートします。