Amazon EventBridgeとは?
Amazon EventBridgeとは、『イベント』を通じて様々なアプリケーション同士を簡単に接続できるようにするサービスです。AWSのサービスや、独自のアプリケーション、SaaS(Software as a Service:サーズ)同士を接続し、イベント駆動型アプリケーションを簡単に構築・管理する環境を提供します。本記事では、Amazon EventBridgeのサービスの特徴や、活用パターンについて記載していきます。
システムの疎結合化とは?
システムの疎結合化とは、システムを安定稼働させるために、システム同士のつながりを弱くする設計のことです。現在、様々なITシステムは、オープン系といい、数台~数十台のサーバが連携しあって1つのシステムを構築しています。それぞれのサーバの、様々なプログラムが複雑に連携することで、大規模なシステムの処理が成り立っています。そのような場合、1つのプログラムに問題が発生すると他のプログラムの処理も止まってしまい、場合によってはシステム全体が停止してしまう、ということも珍しくありません。そのようなことを防ぐために、システムの複雑さを切り離す必要があります。このように、システムの複雑さを切り離すことを、疎結合化といいます。
イベント駆動型アーキテクチャとは?
イベント駆動型アーキテクチャとは、アプリケーションやシステムを構成するプログラム同士が、『イベント』を介してデータのやり取りを行うような、アプリケーション設計方法のことです。イベント駆動型アーキテクチャがなぜ優れているのか、どのようなことを実現できるのかを、記載してきます。
そもそも、『イベント』とは?
イベントは、システムのハードウェアまたはソフトウェアの状態における何らかの意味のある出来事または変化です。例えば、バッチ処理の完了といった、あるプロセスの完了や、CPUの使用率の上昇といったリソースの変化が該当します。 我々が普段コンピュータを操作する際に行っている、マウスのクリックやコマンドの入力といったものも、イベントに該当します。
イベント駆動型アーキテクチャのパターンは?
- Pub/Sub型
Pub/Subとは、Publish/Subscribeを略したもので、あるシステムで発生したイベントを別のシステムに”メッセージ”として伝える仕組みを利用したシステム設計です。メッセージを発出する側をPublisher、メッセージを受け取る側をSubscriberといいます。Publisher側のメッセージ発出を検知して、メッセージの受け取り側の処理がスタートします。 - イベントストリーミング型
イベントをログに書き込み、ストレージなどに保存し続けながらほかのシステムと連携する形式です。他のシステムはストレージへの書き込みを検知したり、ストレージの中に特定のメッセージが書き込まれるのを検知して、処理がスタートします。
イベント駆動型アーキテクチャのメリットとは?
イベント駆動型アーキテクチャのメリットは、『柔軟なシステム構成が可能』『負荷や障害影響を分離できる』にあると考えられます。具体的にどういうことか見ていきましょう。
- 柔軟なシステム構成が可能
システム間ではイベントのやり取りを行っているだけなので、イベントを発出する仕組みと、イベントを刈り取る仕組みを構築するだけで、つなぐシステムを増やしたり減らしたりすることが可能です。また、構成だけでなく、テスト時の工数も減少します。例えば、システムAとシステムBが密結合しているシステムであれば、Aの担当者とBの担当者が同時に検証を進める必要がありますが、イベント駆動型アーキテクチャを採用した疎結合システムであれば、システムAから発せられたイベントをシステムBがうまく刈り取ることができるか、という試験項目のみとなり、システムBの担当のみ、検証を進めればいいことになります。 - 負荷や障害影響を分離できる
先述のように、あるシステムが障害等で停止した場合、他のシステムもタイムアウトなどで停止する、といったことを防ぐことができます。
Cloudwatch Eventsと何が違う?
Amazon EventBridgeより前に、AWSではCloudwatch Eventsというサービスが利用可能でした。これらのサービスにはどのような違いがあるのでしょうか?そもそもAmazon EventBridgeは、CloudWatch Eventsをベースに構築された、CloudWatch Events発展版のサービスです。したがって、CloudWatch EventsよりもAmazon EventBridgeのほうが、機能が増えており、ユーザーとしては使いやすくなっています。
Amazon EventBridgeでできるようになったこと
CloudWatch Eventsから、Amazon EventBridgeにバージョンアップするにあたって、どのような機能が増えているのでしょうか。具体的に見ていきましょう。
連携するサービスが増えた
CloudWatch Eventsは、AWS内のイベントや、cron機能による定時イベントのみ、取り扱うことが可能でした。一方で、Amazon EventBrideは、AWS以外のSaaS製品で発生したイベントについても、取り扱うことが可能になりました。例えば、AWSと連携が可能なシステム監視サービスである、DatadogやNewRelicといたサードパーティの製品とも連携が可能になっています。
イベントの集約が可能になった
リージョン間のイベント転送がサポートされたことで、同一アカウント内におけるリージョンをまたいだイベントの集約も可能です。イベント駆動アーキテクチャを採用したシステムのイベント統合管理も可能になっており、利便性が大きく増しています。
Cloudwatch Eventsユーザーはそのまま利用可能
Amazon EventBridgeがリリースされたからと言ってCloudwatch Eventsが廃止されることはないということが明言されています。また、Amazon EventBridgeでは同じCloudWatch Events APIを使用するため、既存のシステムでCloudwatch Eventsを利用していたからと言って、乗り換えをする必要はなく、そのままEventBridgeを利用することができます。
Amazon EventBridgeのユースケースや利用パターンとは?
Amazon EventBridgeは、システムとシステムをつなぐような要件がある場合、利用に適しています。AWSのサービスだけでなくサードパーティの製品とも連携できるため、ユースケースは無限に考えられますが、以下に代表的かつ具体的なユースケースについて記載していきます。
サードパーティのシステム監視製品と連携して、システムの異常を知らせる
DatadogやNewRelicといったモニタリングサービスと連携し、AWS上のシステムのスローダウンや以上を検知すると、モニタリングサービスからイベントを発生させ、Amazon EventBridge経由でLambdaやAmazon SNSを経由して、Slackやメールに通知を行う、といったことが可能です。
データ分析において定期的なバッチ分析を行う
5分おきにAmazon Sagemakerなどの機械学習エンジンを用いて、顧客の来場者数の予測や購買指定している商品の分析を行い、関係者に通知したり、ダッシュボードに表示したり、といったことが可能です。また、顧客の来場者数に閾値を設け、閾値を下回ると”イベント”として他システムに連携し、顧客に購買を促すようなメールやクーポンを送付する、といったことも可能です。
AWS上のシステムにおけるセキュリティイベントを通知する
AWS WAFやGuardDutyといった、AWS上で稼働する各種セキュリティ関連のサービスから、セキュリティに関するイベントをAmazon EventBridgeに集約します。万が一、セキュリティイベントが発生したらLambda等を通じて通知を行う、といったことが可能になります。また、セキュリティ関連のイベントをAmazon EventBridgeに集約しているため、イベントの詳細な状況把握や、分析といったことも可能になります。
ワークフローの起点とする
会社の新入社員が入社した際などに、Active Directoryなどにユーザー登録が行われた場合、Amazon EventBridgeにイベントを送信し、その後にStepfunctionなどを実行することで、新入社員にメールをに送付する、他の社内システムの登録作業をLambdaで行う、上長に承認メールを送付する、といったルーティン化されたワークフローの実行が可能です。
まとめ
Amazon EventBridgeはCloudwatch Eventsを拡張した、イベント駆動アーキテクチャを実現するためのサービスです。Amazon EventBridgeを利用することで、システムの疎結合化が実現でき、システムの拡張性の確保や、障害の分離による安定稼働を実現することが可能です。多様なサービスと連携できるようになっており、イベントの集約による運用負荷の軽減も可能です。モダンでクラウドネイティブなシステム開発を進めるためにも、是非利用を検討してみて下さい。
AWSをご利用いただくには、直接契約するより断然お得。
AWS利用料が5%割引、さらに日本円の請求書による支払いが可能です!