マイクロサービスは、クラウド・ネイティブ・アーキテクチャの不可欠な要素であり、個別に展開できる疎結合されたサービスで構築されたアプリケーションです。マイクロサービスは通常、HTTP、メッセージングキュー、イベントストリームなどの軽量プロトコルを介して相互に通信します。イベントドリブン型アーキテクチャは、モジュール性、耐障害性、スケーラビリティの向上を促進するため、マイクロサービスを導入するための最良の方法であることがよくあります。
イベントドリブン型アーキテクチャ(EDA)は、システムがリアルタイムでイベントを検知、処理、伝達し、それに対応できるようにするソフトウェア設計のパターンです。EDA は、イベントが発生するとそれをすぐに伝達します。これにより、イベントを把握する必要のある人、サービス、イベントドリブン型アプリケーションはリアルタイムで対応できます。
非同期メッセージングと疎結合は、イベントドリブン型アーキテクチャの 2 つの重要な要素です。非同期伝達は、サービスが応答を待ってからタスクを実行しなければならない従来の「要求と応答」のアーキテクチャに取って代わるものです。これにより、低レイテンシーで大量のリアルタイムデータを処理できるため、統合が容易になり、システムのスケーラビリティが向上します。また、関連するシステムを分離または疎結合することもできます。つまり、アプリやサービスは、イベントを公開して利用することで、他方のシステムについて詳しく知ることなく相互に通信できるということです。その結果、イベントドリブン型システムは迅速にスケーリングでき、障害に対する回復力にも優れています。なぜなら、1 つのコンポーネントが利用できなくても、システムは機能し続けられるからです。また、EDA は、コンポーネントが完全なデータセットを待たずにイベントに対応し、データが到着するとそれを処理できるため、リアルタイムの処理や大量のデータの処理にも適しています。
イベントとは
イベントとは、バケットに追加されたオブジェクト、データベースに追加された新しいレコード、ショッピングカートに入れられたアイテム、リセットされたパスワードなど、ビジネスシステム内の何かの状態の変化を指します。これは過去に発生したものであり、通常は JSON または YAML 形式です。
イベントドリブン型のアーキテクチャが必要な理由
すべてのビジネスプロセスはイベントによって動かされます。イベントに迅速に対応する能力は、生産性、効率性、競争力を得るために不可欠です。アプリケーション、サービス、人がイベントに関する情報をより速く取得できれば、組織はより効果的に事業を運営できます。
このような環境では、イベントドリブン型アーキテクチャが重要です。これは、システムの定期更新を待つ API のようなアーキテクチャアプローチとは異なり、イベントドリブン型アーキテクチャはイベントが発生するとすぐに伝達するためです。
イベントドリブン型アーキテクチャのコンポーネントとは
イベントドリブン型アーキテクチャには、イベントに関するリアルタイムの伝達とメッセージングを提供するために展開および接続されたソフトウェアコンポーネントとハードウェアコンポーネントが含まれます。そのコンポーネントとは、次のとおりです。
- イベントパブリッシャー:このイベントソース(イベントプロデューサーとも呼ばれる)は、イベントを生成し、イベントチャネルまたはイベントバスに公開します。
- イベントバス:これには、イベントブローカー、メッセージキュー、イベントチャネルが含まれます。イベントパスは、イベントプロデューサーからイベントコンシューマーにイベントが伝達される経路です。イベントチャネルにより、非同期で分離されているという EDA の性質が実現し、システムの柔軟性とスケーラビリティが高まり、関連するメッセージンググループの組織化が強化されます。
イベントサブスクライバー:イベントサブスクライバーは、イベントコンシューマーまたはイベントリスナーとも呼ばれ、イベントを受信、処理し、それに対応します。対応には、データベースの更新、タスクの実行、プロセスの開始、新しいイベントの生成などが含まれます。
イベントドリブン型アーキテクチャの仕組み
イベントドリブン型アーキテクチャ内でイベントを伝達する手順は次のとおりです。
- イベントパブリッシャーがイベントを生成し、そのデータをイベントバス上のチャネルに公開します。
- イベントサブスクライバーが関心のあるチャネル上のイベントを「リッスン」し、関連するイベントが公開されると対応します。他のワークフロー、アクション、イベントをトリガーする可能性があります。
イベントドリブン型のアーキテクチャは通常、パブリッシュ/サブスクライブ(pub/sub)モデルまたはイベント・ストリーミング・モデルで展開されます。
- パブリッシュ/サブスクライブ:イベント・メッセージング・モデルとも呼ばれるこのモデルでは、イベントプロデューサーによって公開されるメッセージのクラスにイベントコンシューマーが登録します。プロデューサーがイベントを公開すると、その情報はそれを利用したいすべてのサブスクライバーに伝達されます。これは通常、メッセージブローカーを介して実行されます。メッセージブローカーは、イベントメッセージを受信し、必要に応じて変換し、メッセージの順序を管理し、サブスクライバーがメッセージを利用できるようにし、メッセージが使用されると削除します。
- イベントストリーミング:このモデルでは、パブリッシャーからブローカーに送信されてログに記録されるイベントのストリームにイベントコンシューマーが登録します。コンシューマーは、公開された各イベントを受信して使用するのではなく、いつでもストリームにアクセスして、関心のあるイベントのみを使用できます。イベントは一定期間保持されるため、コンシューマーはいつでも受信できます。一部のイベント・ストリーミング・プロセスでは、Apache Kafka などのデータ・ストリーミング・プラットフォームを使用して、イベントストリームのインジェスト、処理、変換を管理します。イベントストリーミングは、コンシューマーが多数のイベントを同時に処理する複雑なイベント処理にも使用できます。
イベントドリブン型アーキテクチャのメリット
イベントドリブン型アーキテクチャは、あらゆる業界の組織に多くのメリットをもたらします。
- システムの柔軟性の向上:イベントドリブン型アーキテクチャの疎結合性により、組織はシステム全体に影響を与えることなく、コンポーネントを簡単に変更、追加、削除できるため、要件の変化に適応できるようになります。EDA によって、モノリシックなワークフローをシンプルで分離された一連のサービスに分割して、個別に管理し、イベントメッセージを介して非同期で伝達できるようになるため、開発者にとっては複雑さが軽減されます。
- スケーラビリティの向上:EDA は簡単な水平スケーリングをサポートしているため、組織は必要に応じてコンポーネントやサービスのインスタンスを追加し、ワークロードやトラフィックの増加に対処できます。
- システムの回復力の向上:EDA では伝達が非同期で、コンポーネントが分離されているため、1 つのコンポーネントに障害が発生してもシステム全体が停止するとは限りません。そのため、耐障害性の向上につながります。
- リアルタイム処理機能:EDA により、大量のデータや複雑なイベントパターンをリアルタイムで処理できるようになります。そのため、EDA は、即座に知見を得たり、急速に変化する現実の状況に対応したりする必要のある企業に適しています。
- リソース使用の最適化:EDA は、イベントが発生したときにのみ対応することで、リソースの使用を最適化し、プロセスを継続的に実行する必要性を軽減します。そのため、コスト削減と効率向上につながる可能性があります。
- 高速化:EDA では各コンポーネントが互いを待つ必要がないため、システムを高速化できます。
イベントドリブン型アーキテクチャのユースケース
イベントドリブン型アーキテクチャの最も一般的なユースケースは次のとおりです。
- リアルタイムモニタリング:EDA により、アプリケーション、サービス、チームは定期的なチェックインや更新の結果を待つのではなく、システムの異常、変更、更新について即座にアラートを受信できるようになります。
- データ複製:EDA により、1 つのイベントを複数のサービス間で簡単に共有し、イベントデータをさまざまなデータベースにコピーできるようになります。また、EDA はさまざまな地域やアカウントで運用されているシステムを連携させることができます。
- 冗長性:サービスが停止した場合、サービスがバックアップされ、再びイベントを使用できるようになるまで、ルーター内でイベントが持続します。
- 並列処理:EDA では、1 つのイベントで複数のプロセスを同時にトリガーできます。
- 統合と相互運用性:イベントドリブン型アーキテクチャにより、異なるスタックで実行されているシステムが緊密に結合することなく情報を共有できるようになります。
イベントドリブン型アーキテクチャの例
イベントドリブン型アーキテクチャは、さまざまな業界やシステムで使用されています。
- E コマース:EDA により、E コマース企業は、いつ商品がショッピングカートに入れられたり、購入が行われたり、支払いが処理されたり、荷物が出荷されたりしても、即座に対応できるようになります。
- IoT:イベントドリブン型アーキテクチャは、モノのインターネット(IoT)システムでデータを収集し、IoT デバイスが特定の条件や指標を検知したときにアクションをトリガーするために不可欠です。
- 株式市場:市場の状況が変化した際に、EDA は自動取引戦略をトリガーできます。
- リアルタイム分析:EDA は、リアルタイムイベントの分析を即座にトリガーして、不正行為を検知し、トラフィックを監視し、リアルタイムの状況に基づいて適切な判断を下すことができます。
- オンラインゲーム:EDA により、オンラインゲームはプレイヤーのアクション、キャラクターの移動、タスクの完了などのイベントを特定して対応できるようになります。
- スマートホーム:家庭内のセンサーやスマートデバイスが、温度、動き、照明、その他のイベントの変化に対応できます。
- ワークフローの自動化:EDA により、組織は、1 つのイベントがプロセス内の新しいステップをトリガーする複雑なワークフローの多くのステップを自動化できるようになります。
よくあるご質問
イベントドリブン型システムには、分離と疎結合という概念が関係しています。分離とは、システム内の異なるコンポーネント間の依存関係を排除し、どちらのコンポーネントも他方に依存しないようにするプロセスです。これにより、コンポーネントの独立性が高まり、柔軟性と回復力に優れたシステムが構築されます。疎結合は、コンポーネントを完全に分けるのではなく、依存を最小限に抑える分離の一形態です。コンポーネントは相互にインタラクションを行うことができますが、それによって長期的な依存関係が生まれることはありません。
サーバーレスコンピューティングは、開発者がバックエンドサービスにオンデマンドでアクセスできるコンピューティングパラダイムです。これにより、基盤となるサーバーやインフラの管理を心配することなく、コードの記述に集中できるようになります。HTTP リクエスト、ファイルアップロード、データベース更新などのイベントによって機能がトリガーされるイベントドリブン型アーキテクチャをベースとしているため、アプリケーションアーキテクチャがシンプル化され、スケーラビリティが向上します。
Akamai が選ばれる理由
Akamai はサイバーセキュリティとクラウドコンピューティングを提供することで、オンラインビジネスの力となり、守っています。市場をリードするセキュリティソリューション、優れた脅威インテリジェンス、そして世界中の運用チームが、あらゆるところで企業のデータとアプリケーションを多層防御で守ります。Akamai のフルスタック・クラウドコンピューティング・ソリューションは、世界で最も分散されたプラットフォーム上で、パフォーマンスと手頃な価格を両立します。安心してビジネスを展開できる業界トップクラスの信頼性、スケール、専門知識の提供により、Akamai は、グローバル企業の信頼を獲得しています。