MEGAZONE

MEGAZONEブログ

Navigating the journey to serverless event-driven architecture
re:Invent 2023 Serverless Compute

Navigating the journey to serverless event-driven architecture

Pulisher : Strategic Tech Center チャン・セジョン
Description : 企業がEvent-Drivenアーキテクチャ(EDA)を採用する際に実行するジャーニーについて紹介したセッション

サーバーレスEDA(Event-Driven Architecture)は、変化するビジネス状況にアジャイルに対応し、適応できるソフトウェアシステムを構築するための強力なアプローチです。

普段、自分の業務領域ではEDAの部分は接することのない領域ですが、経験したことのない業務領域についても聞いてみたかったし、イベントに反応して動作するアーキテクチャという意味自体が好奇心を刺激し、そのセッションを申し込みました。

このセッションでは、初期の設計と実装から継続的な運用とメンテナンスまで、企業がEDAを導入する際の道のりについて説明します。

今日、イベント中心のアーキテクチャへのアクセスと関心が高まっています。
イベント中心のアーキテクチャには大きく5つのAWSサービスが主に使用されています。
Amazon API Gateway、Amazon DynamoDB、Amazon EventBridge、AWS Step Function、AWS Lambdaの5つです。

イベント中心のアーキテクチャには図のような流れがあります。生産者の役割のProducer、中間者の役割のBroker、そして消費者の役割のConsumerで。

では、EDAのメリットは何でしょうか?

イベント駆動型アーキテクチャは、緩やかな結合を促進し、コンポーネントが実装の詳細を知らなくても相互に通信できるようにします。 このような分離は、あるコンポーネントの変更が他のコンポーネントに影響を与えないことを保証し、システムの柔軟性と保守性を向上させます。

イベント駆動型アーキテクチャは、アプリケーションを水平方向に拡張し、ワークロードを複数のインスタンスまたはマイクロサービスに分散することでこの問題を解決します。これにより、システムはパフォーマンスや安定性を低下させることなく、増大するトラフィックをスムーズに処理し、変動する需要に適応することができます。

Event Stormingは、製品が実際にどのように機能するかを理解するのに役立つ目標指向のワークショップです。
駐車場では、空席の情報が更新され、ユーザーは駐車場を予約し、後で駐車した後、駐車場の予約情報が削除されます。
このような一連の行為が時間順に行われます。

非同期式のPoint to Point方式メッセージングサービスであるAmazon SQSを見てみましょう。
SenderとReceiverの間でメッセージキューの役割をします。
AWSで完全に管理されるメッセージキューであり、無限に拡張可能です。

今回はAmazon EventBridgeについて説明します。
完全管理型のイベントバスで、28以上のAWSサービスを対象とすることができます。
AWSを超え、既存システムやSaaSアプリケーションで大規模なイベントベースのアプリケーションを構築することができます。

外部On-Premise環境でもKafka Connectorサービスを通じてAWS Amazon EventBridgeを経由してAWS Step Function, Amazon SQS, Amazon API Gateway, Amazon SageMakerなどにアクセスすることもできます。

EDAを実装し、運用・保守する上で、イベント優先の思考が必要です。

確認し、定義し、実行するプロセスを継続的に繰り返す必要があります。

イベントファーストシンキングを受け入れることで、イベントソーシング、再生成、ストリーム処理、データフロー設計など、イベントストリーミングプラットフォームの基礎を自然に身につけることができます。

イベントベースアーキテクチャパターンを通じて、開発者は従来のアーキテクチャよりも拡張性、柔軟性、応答性に優れたリアルタイムアプリケーションを作ることができます。

セッションを聞きながら考えたEDAのメリットは、分散されたシステム間の依存性が排除される点であり、デメリットとしては、システム間の依存性は低くなりますが、メッセージブローカーへの依存性が発生する点だと思いました。

また、システムフローの把握も容易ではないような気がしました。

このセッションでEDAには固定された構造がないという説明を聞きましたが、複雑性/ダイナミクスに最も効率的に対応可能なアーキテクチャが何なのかよく考えて、アーキテクチャ設計及び実装、そして運営をしなければならないと思います。

ブログ一覧

この記事の読者はこんな記事も読んでいます