このブログ投稿は AWS Lambda と Serverless Advent Calendar 2023 の 22日目です。
AWS Lambda と Serverlessのカレンダー | Advent Calendar 2023 - Qiita
ヤサイブログへの投稿はお久しぶりな状況です...
当方、re:Invent 2023 は現地参加しました。その際にExpoやSessionでServerlessVideoが紹介されるケースがありまして、大変興味を持ちました。
本エントリーではserverlessVideoのアーキテクチャについて深掘りしてみます。(深掘りしきれていないところもありますがご容赦下さい。🙇♂️)
ServerlessVideoとは
ServerlessVideoは、AWS re:Invent 2023で展示されたサーバーレスアーキテクチャを用いた動画ストリーミングアプリケーションで、AWS Step Functions、Amazon EventBridge、AWS Lambda、Amazon ECS、Amazon BedrockなどのAWSサービスが利用されています。
⬆️こちら、どこかで見たことがあるロゴだと思いませんか?そう、serverlesspressoに似ていますよね。serverlesspressoもAWSの各種イベントで展示されることがあり、serverlesspresso ワークショップで独自のserverlesspressoを構築することも可能になっています。
ServerlessVideoの特徴
ServerlessVideoはどんなところに魅力があるのでしょうか。その特徴をチェックしていきます。
特徴その1. プラグイン・アーキテクチャであること
ServerlessVideoはプラグイン・アーキテクチャです。プラグイン・アーキテクチャはAWS Step Functions と Amazon EventBridgeによってプラグインによる機能拡張の追加を実現してします。
プラグインは、⬆️の画像にある複数のフックを条件として起動することができます。フックの詳細は以下の通りです。
フック名 | フックの説明 |
---|---|
preValidate |
ライブ放送後に映像内容を検証する前のフック |
postValidate |
映像内容の検証時のフック。検証前に生成したフック情報を参照可能 |
preMetadata |
メタデータ生成前に利用するフック |
postMetadata |
メタデータ生成時に利用するフック |
ServerlessVideoで実装されている機能の一部は拡張機能で実装されていることが分かります。既存の拡張機能は以下の通りです。
拡張機能名 | フック | 拡張機能の説明 |
---|---|---|
Content Moderation | preValidate |
不適切・不要・不快なコンテンツかどうかをAmazon Rekognition Videoで分析 |
Duration | preValidate |
動画の長さのチェック |
Transcribe | preMetadata |
CloudFrontのURLから取得したオブジェクトをS3に転写 |
Generate Tags | postMetadata |
Bedrockを利用して動画のタグを生成 |
Generate Title | postMetadata |
Bedrockを利用して動画のタイトルを生成 |
Leader Board | postMetadata |
ストリームのカウントとストリームの合計時間のリーダーボードを構築 |
Rollup Stats | postMetadata |
動画の総数や総時間などの統計情報を取得 |
Translate | postMetadata |
異なる言語への翻訳処理 |
そして、上記のプラグインがEventBridgeによってトリガーされる Plugin Lifecycle Manager によって実行されます。このフックは全てEventBrigeのEventBridgeRuleのパターンによって分類されて実行されているようです。(ここは各イベントパターンの相関的な図が欲しいところです ... )
肝心のPlugin Lifecycle ManagerのStep Functionsの処理はASLファイルで書き出されていたので、可視化してみました。可視化した内容はこちら⬇️
すいません、ちょっと半端ないワークフローでびっくらこいた状態です。 見たところ、DynamoDBを状態遷移のデータソースとして、それぞれのフック用の状態遷移グループ(と呼ぶべきですかね?)が定義されているワークフローかなと思いました。
イベント駆動におけるサーバーレスアーキテクチャをふんだんに、これでもかっていうくらい活用していますよね。もうかっこよすぎて惚れます。
特徴その2. サービスが独立してデプロイ可能であること
チャンネル、ダッシュボード、プラグインマネージャー、動画管理などそれぞれのサービスが独立したAWS SAMのテンプレートファイルとして定義されており、それぞれ独立してデプロイ可能になっています。これは、モノレポのような思想なのでしょうか?とても素晴らしいです。カルチャーショックです。
詳しくはServerless LandのPDFをご覧ください!!
それぞれのサービスの説明や、全体アーキテクチャ図、プラグインアーキテクチャの説明などの記載がありますので、ご興味がありましたら是非ご覧ください!コンピューティングリソースをLambdaとECS Fargate Taskで使い分けてるのも重要なポイントですね!!
ServerlessVideoに私が期待すること
私は個人用AWSアカウントにデプロイして利用したいのですよ! ですから、私はServerlessVideoについて以下の事柄を期待します!!
期待すること1. フロントエンドのコードも閲覧したい!
バックエンドは公開されていますが、今のところ(2023年12月22日時点)はAmplifyで構築されたフロントエンドのコードってないですよね?是非ともフロントエンドのコードも見てみたいです!!
期待すること2. serverlesspresso と同じくワークショップコンテンツが欲しい!
自分だけのServerlessVideoを構築できるワークショップが欲しいですね!serverlesspressoはあるので是非とも同じようなワークショップを期待します!!AWS様お願いします! 🙇♂️
まとめ
ServerlessVideoは可能性に満ちあふれています。AWSのこういった楽しい取り組みは本当に好きです。これからもServerlessVideoの動向を追っていきたいと思います!以上です!