助け合いフォーラム
問題:
ある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クラスタの設定と管理が必要となるため、運用管理の負担が増えます。よって誤りです。
Dockerコンテナを使っているが、Kubernetesで運用しているとも、コンテナオーケストレーションを利用しているとも書いてないので、
現在Kubernetesで運用している、とまでは思いませんでした。
いかがでしょうか?
コメント
「サーバーの運用管理は減少させ」たいとか「デプロイを簡素化したい」って言ってますし、KubernetesでDockerコンテナをServiceとして常駐させるための環境構築やらをするよりもECSでServiceとして起動しておくほうが簡単とかいう話はないですか?
コメント
「Dockerコンテナ」と「Kubernetes」は類似したシステムではありますが、
厳密には異なるものになるようです。
https://cloud-ace.jp/column/detail229/
※外部サイト
そのため、「Dockerコンテナを使っている=Kubernetesが使える」という式にはなりません。
結果、EKSに切替えた場合は「実績のあるDockerコンテナを使う」という前提要件から外れます。
コメント
AWSの推奨としては、コンテナオーケストレーションを利用する場合はECSです。
マネージドサービスとまではいかないにしても、管理が簡単になっており、Fargateなどの他サービスとの親和性も高いです。
例外は現在Kubernetesで運用している場合です。解説にもある通り、EKSだと既存のツールや知識を活用できるためです。
実際はKubernetesの方が有識者が多く、OpenshiftなどのPaasを利用できる点でEKSの方が推奨されるべきかと思いますが。。。
コメント
この投稿に対して返信しませんか?
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に購入履歴やユーザーのアカウント情報を保存する