助け合いフォーラム

AWS

AWS ソリューションアーキテクト - アソシエイト(SAA-C03)
問題ID : 31223
問題を開く
ある会社は、ユーザー同士によるファイル共有Webアプリケーションを設計している。Webアプリケーションは、ユーザーからファイルがアップロードされると、ファイルを圧縮してS3に保存する。Webアプリケーションのリクエスト数を予測できないので、スケーラブルかつデカップリングを実現して、システムのパフォーマンスを向上させたい。 次のうち、もっとも適切なソリューションはどれか。

この問題はプレミアムコンテンツです。

上に戻る

デカップリングの実現について

投稿日 2023/01/07

お世話になっております。
以下の問題について質問させていただきます。
"""
問題ID:31223
Q:(問題趣旨)スケーラブルかつデカップリングを実現

A: ユーザーからアップロードされたファイルをS3バケットへ保存するようにWebサーバーを設計する。S3イベント通知からファイル圧縮処理をするLambda関数を呼び出して、別のS3バケットに圧縮後のファイルを保存する
"""

解答では、EC2 → S3イベント通知 → Lambda関数 で スケーラブルかつデカップリングの要件を満たすとしていますが、デカップリングの実現になっているのかが疑問に思いました。

問題30639では、S3イベント通知 → SQS → Lambda関数 の流れで、デカップリングを実現していますが、これと同様に、EC2 → S3イベント通知 → SQS → Lambda関数 と間にSQSをはさむのが適当かと思いましたが、いかがでしょうか。

お忙しい所お手数をおかけしますが、アドバイスいただけますと幸いです。
よろしくお願いいたします。

2023/01/10 15:51

問題ID:31223の解説にも書いてありますが、
-ユーザーからAWSへファイルのアップロード
-アップロードされたファイルの圧縮
の2つの処理をEC2とLambdaの間にS3イベント通知を挟んで分けているので、デカップリング(疎結合)は実現できていると思います。
デカップリングできていない場合の例は、EC2でファイルのアップロード処理と圧縮処理を続けて実行するような感じになるのではないかと。
おそらく、S3イベント通知は通知を出すだけなので間にSQSがないと続けて処理される=デカップリングができていない?と疑問に思ってらっしゃるのではないかと思いますが、橋渡しの処理が何であれプログラムを分けている時点でデカップリングは実現しているのではないでしょうか。
プッシュ通知機能を持つSNSもデカップリングに適したサービスとされているので、S3イベント通知も同じという認識です。

SQSの有無の違いは、下記のサイトが分かりやすかったです。
https://engineers.fenrir-inc.com/entry/2022/04/20/104220
1 S3イベントをトリガーとしてLambdaを呼び出す(31223の正答)
2 S3からSQSを挟んでLambdaを呼び出す(30639の正答)

30639の場合、処理が遅延するほど大量のリクエストが発生するのと、処理結果をユーザーに返さなければならないという点から、より柔軟な設計にできるSQSを使用しているのではないかなと思いました。


コメント

z zawawakei

2023/01/10 23:55

ご回答ありがとうございます。 確かに、SNSと同様と考えると納得できました。 参考サイトもとても分かりやすかったです。デカップリングにもいろいろなパターンがあるんですね。

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?