助け合いフォーラム

AWS

AWS ソリューションアーキテクト - アソシエイト(SAA-C03)
問題ID : 36519
問題を開く
あるeコマース企業がAWSに新しいオンラインショップを立ち上げる準備をしている。担当者と話をしたところ以下のような要望があった。「商品ページなどの静的コンテンツを安定的に配信する必要がある。カート処理やユーザーのアカウント管理などの動的な処理は現在運用して実績のあるDockerコンテナを使うが、変動するトラフィックに迅速に対応できないと困る。購入履歴やユーザーのアカウント情報はリレーショナルデータベースで安全に管理したい。サーバーの運用管理は減少させ、インフラストラクチャの自動スケーリングとデプロイを簡素化したい。」担当者の希望要件を満たす最も効果的なアーキテクチャはどれか。

正解

商品ページをAmazon S3でホスティングし、AWS FargateとAmazon ECSで動的処理を実行し、Amazon RDSに購入履歴やユーザーのアカウント情報を保存する

解説

担当者の要望を順に検討していきます。

- 静的コンテンツの安定配信:
静的コンテンツのホスティングにはS3が最適です。

- Dockerコンテナを使用し、変動するトラフィックに迅速に対応可能な動的処理:
FargateとECSの組み合わせ、FargateとEKSの組み合わせともDockerコンテナの実行に適しており、自動スケーリングもサポートしており問題ありません。

- 購入履歴やユーザーアカウント情報のリレーショナルデータベースでの管理:
リレーショナルデータベースサービスにはRDSとAuroraがあります。

- サーバーの運用管理を効率化:
Fargateはサーバーレスのコンテナサービスであり、サーバーの運用管理が不要でとなり効率化が実現できます。
コンテナオーケストレーションにECSを使用する場合、ECSは他のAWSサービスとしての統合が深く、他のサービスとの連携が容易であるため運用管理が簡素化できます。
一方コンテナオーケストレーションにEKSを使用する場合、Kubernetesクラスタの設定と管理が必要となり管理負担が増えます。

- インフラの自動スケーリングとデプロイの簡素化:
FargateとECSの組み合わせ、FargateとEKSの組み合わせとも要件に当てはまります。また、S3のホスティングは管理が簡単であるため要件にあっています。

よって全ての要望を満たしている正解は以下となります。
・商品ページをAmazon S3でホスティングし、AWS FargateとAmazon ECSで動的処理を実行し、Amazon RDSに購入履歴やユーザーのアカウント情報を保存する

その他の選択肢については、以下の通りです。

・Amazon EC2インスタンスで静的コンテンツの表示と動的処理を実行し、Amazon Auroraに購入履歴やユーザーのアカウント情報を保存する
EC2は柔軟性が高く、静的・動的コンテンツの両方の表示に使用できます。しかしEC2は柔軟性が高い一方、インスタンスの運用やセキュリティ管理などの手間がユーザーに求められるため、運用の効率が低下する可能性があります。この点で「サーバーの運用管理を効率化」の要望を満たすことは難しいです。よって誤りです。

・商品ページをAmazon S3でホスティングし、Amazon EC2インスタンスで動的処理を実行し、Amazon DynamoDBで購入履歴やユーザーのアカウント情報を保存する
EC2は前述した通り、「サーバーの運用管理を効率化」の要望を満たすことは難しいです。またDynamoDBはNoSQLデータベースであるためリレーショナルデータベースの要件に合いません。よって誤りです。

・商品ページをAmazon S3でホスティングし、Amazon API GatewayとAWS Lambdaで動的処理を実行し、Amazon ElastiCacheに購入履歴やユーザーのアカウント情報を保存する
API GatewayとLambdaはサーバーレスアーキテクチャを提供するため、サーバーの運用管理の負担を減少させることができます。ですが、API GatewayとLambdaの組み合わせでは要望であるDockerコンテナを利用できません。また、ElastiCacheはインメモリデータストアであるためリレーショナルデータベースとしての要望を満たしていません。よって誤りです。

・商品ページをAmazon S3でホスティングし、AWS FargateとAmazon EKSで動的処理を実行し、Amazon RDSに購入履歴やユーザーのアカウント情報を保存する
正解との違いは、コンテナオーケストレーションにEKSを使用することです。EKSはAWSが提供するKubernetesのマネージドサービスです。現在Kubernetesで運用している場合は、EKSでも既存のツールや知識を活用できますが、新規環境を作る場合は新たに知識やKubernetesクラスタの設定と管理が必要となるため、運用管理の負担が増えます。よって誤りです。

学習テキスト

この学習テキストはプレミアムコンテンツです。 プレミアムプランへのお申込みは 「プレミアムプランの紹介ページ」 よりお願いいたします。

上に戻る

Dockerコンテナについて

投稿日 2024/02/27

問題:
あるeコマース企業がAWSに新しいオンラインショップを立ち上げる準備をしている。担当者と話をしたところ以下のような要望があった。「商品ページなどの静的コンテンツを安定的に配信する必要がある。カート処理やユーザーのアカウント管理などの動的な処理は現在運用して実績のあるDockerコンテナを使うが、変動するトラフィックに迅速に対応できないと困る。購入履歴やユーザーのアカウント情報はリレーショナルデータベースで安全に管理したい。サーバーの運用管理は減少させ、インフラストラクチャの自動スケーリングとデプロイを簡素化したい。」担当者の希望要件を満たす最も効果的なアーキテクチャはどれか。

こちらの問題について「現在運用して実績のあるDockerコンテナを使う」という要件があるため
「商品ページをAmazon S3でホスティングし、AWS FargateとAmazon EKSで動的処理を実行し、Amazon RDSに購入履歴やユーザーのアカウント情報を保存する」が正解と考えたのですが
「商品ページをAmazon S3でホスティングし、AWS FargateとAmazon ECSで動的処理を実行し、Amazon RDSに購入履歴やユーザーのアカウント情報を保存する」が正解でした。

解説には以下と書かれていますが、Dockerコンテナの運用実績があるとわざわざ問題文に書いてあるので
Kubernetesで運用していると考えそうですが、どう考えるべきでしょうか?

解説:
正解との違いは、コンテナオーケストレーションにEKSを使用することです。EKSはAWSが提供するKubernetesのマネージドサービスです。現在Kubernetesで運用している場合は、EKSでも既存のツールや知識を活用できますが、新規環境を作る場合は新たに知識やKubernetesクラスタの設定と管理が必要となるため、運用管理の負担が増えます。よって誤りです。

2024/02/29 08:37

Dockerコンテナを使っているが、Kubernetesで運用しているとも、コンテナオーケストレーションを利用しているとも書いてないので、
現在Kubernetesで運用している、とまでは思いませんでした。
いかがでしょうか?


コメント

s shia125

2024/02/29 21:18

ご返信ありがとうございます。 そうなりますと、以下の2択から最適解を選ぶ手がかりがなくなってしまうと思いました。 独自規格を使いたい、OSSを使いたいなどの要件が書いてあれば別ですが・・・。 ・商品ページをAmazon S3でホスティングし、AWS FargateとAmazon ECSで動的処理を実行し、Amazon RDSに購入履歴やユーザーのアカウント情報を保存する ・商品ページをAmazon S3でホスティングし、AWS FargateとAmazon EKSで動的処理を実行し、Amazon RDSに購入履歴やユーザーのアカウント情報を保存する

J Jun101

2024/03/30 17:57

私もこの問題はECSに絞り込むことはできない問題だと思います。おそらくですが、EKSがFargateに対応していないときの問題内容だと思います。

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

2024/02/29 23:06

「サーバーの運用管理は減少させ」たいとか「デプロイを簡素化したい」って言ってますし、KubernetesでDockerコンテナをServiceとして常駐させるための環境構築やらをするよりもECSでServiceとして起動しておくほうが簡単とかいう話はないですか?


コメント

s shia125

2024/03/02 02:35

この問題を振り返って思ったのですが「現在運用して実績のあるDockerコンテナ」とは ランタイムではなくDockerコンテナのイメージを指していて 運用実績のあるイメージを継続利用する要件と捉えることもできるかと思いました。 もしそうであれば、実績のあるDockerコンテナ(イメージ)を使う要件に対してはEKS/ECSどちらも適切であり 解説いただいた理由を加味して最適解はECSになりそうですね。ご解説ありがとうございました。

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

2024/03/01 11:30

「Dockerコンテナ」と「Kubernetes」は類似したシステムではありますが、
厳密には異なるものになるようです。

https://cloud-ace.jp/column/detail229/
※外部サイト

そのため、「Dockerコンテナを使っている=Kubernetesが使える」という式にはなりません。
結果、EKSに切替えた場合は「実績のあるDockerコンテナを使う」という前提要件から外れます。


コメント

s shia125

2024/03/02 02:33

ご返信ありがとうございます。 pinkcammeoさんからも回答いただいたように Kubernetesで運用しているとも、コンテナオーケストレーションを利用しているとも書いてない、 という考え方ですね。

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

2024/03/24 15:40

Dockerはkubernetesで非推奨ですので、問題文でDockerがでてきたらECS一択と考えてよいのでは?


コメント

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

2025/04/05 23:55

AWSの推奨としては、コンテナオーケストレーションを利用する場合はECSです。
マネージドサービスとまではいかないにしても、管理が簡単になっており、Fargateなどの他サービスとの親和性も高いです。
例外は現在Kubernetesで運用している場合です。解説にもある通り、EKSだと既存のツールや知識を活用できるためです。

実際はKubernetesの方が有識者が多く、OpenshiftなどのPaasを利用できる点でEKSの方が推奨されるべきかと思いますが。。。


コメント

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

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