助け合いフォーラム
AWS ソリューションアーキテクト - アソシエイト(SAA-C03)
問題ID : 30351
問題を開く
Elastic Beanstalkを使用したDocker環境ついて正しく説明しているのはどれか。(2つ選択)
正解
シングルコンテナ構成とマルチコンテナ構成がある
コンテナ内の環境の管理はユーザーが行う
解説
Dockerとはコンテナ型の仮想化ソフトウェアです。コンテナ型の仮想化とは、1つのホストOS上に複数の独立した環境(コンテナ)を作成できる技術のことです。独立した環境ですから、例えばコンテナに障害が発生した場合でもホストOSには何の影響も与えません。
Dockerは、ミドルウェアの設定や各種環境をDockerfileというテキストファイルにコード化して管理できるため、同じ環境を配布したり別の環境に持ち出したりできる、などの特徴があります。
Elastic BeanstalkはDockerに対応しているため、作成済みのDockerfileをElastic Beanstalkへアップロードすることで、EC2インスタンスやWebアプリケーション等の準備を行うことなくコンテナを稼働させることができます。
Dockerをプラットフォームとした場合、以下の2つの構成を選択できます:
・単一(シングル)コンテナ ... 1つのEC2インスタンスに 1つのコンテナを作成する
・マルチコンテナ ... 1つのEC2インスタンスに複数のコンテナをサポートする
なお、コンテナが動作する環境はElastic Beanstalkによって管理されますが、コンテナ上の環境(コンテナにインストールしたソフトウェアなど)は自分で管理する必要があります。
以上より正解は
・シングルコンテナ構成とマルチコンテナ構成がある
・コンテナ内の環境の管理はユーザーが行う
です。
その他の選択肢については以下の通りです。
・コンテナが動作する環境の管理はユーザーが行う
コンテナの動作環境はElastic Beanstalkによって管理されます。ユーザーが行う必要はありませんので、誤りです。
・コンテナはすべて手作業で環境構築する
Dockerコンテナは「Dockerfile」というテキストファイルに構成を記述することで環境を構築できます。Elastic Beanstalkでは手作業での構築は行いませんので、誤りです。
・コンテナは構築した環境でしか動作しない
Docker(Dockerfile)で構築した環境は、同じDockerfileを使用することで別の(Dockerに対応した)EC2インスタンス上でも同じコンテナを構成できます。異なる環境でも動作しますので、誤りです。
Dockerは、ミドルウェアの設定や各種環境をDockerfileというテキストファイルにコード化して管理できるため、同じ環境を配布したり別の環境に持ち出したりできる、などの特徴があります。
Elastic BeanstalkはDockerに対応しているため、作成済みのDockerfileをElastic Beanstalkへアップロードすることで、EC2インスタンスやWebアプリケーション等の準備を行うことなくコンテナを稼働させることができます。
Dockerをプラットフォームとした場合、以下の2つの構成を選択できます:
・単一(シングル)コンテナ ... 1つのEC2インスタンスに 1つのコンテナを作成する
・マルチコンテナ ... 1つのEC2インスタンスに複数のコンテナをサポートする
なお、コンテナが動作する環境はElastic Beanstalkによって管理されますが、コンテナ上の環境(コンテナにインストールしたソフトウェアなど)は自分で管理する必要があります。
以上より正解は
・シングルコンテナ構成とマルチコンテナ構成がある
・コンテナ内の環境の管理はユーザーが行う
です。
その他の選択肢については以下の通りです。
・コンテナが動作する環境の管理はユーザーが行う
コンテナの動作環境はElastic Beanstalkによって管理されます。ユーザーが行う必要はありませんので、誤りです。
・コンテナはすべて手作業で環境構築する
Dockerコンテナは「Dockerfile」というテキストファイルに構成を記述することで環境を構築できます。Elastic Beanstalkでは手作業での構築は行いませんので、誤りです。
・コンテナは構築した環境でしか動作しない
Docker(Dockerfile)で構築した環境は、同じDockerfileを使用することで別の(Dockerに対応した)EC2インスタンス上でも同じコンテナを構成できます。異なる環境でも動作しますので、誤りです。
参考
【AWS Elastic Beanstalk】
アプリケーションの実行環境を用意する際、通常はアプリケーションの動作に必要なスペックを持つハードウェア(物理マシンや仮想マシン)を用意し、OSやサーバー用のソフトウェアの導入、ネットワークの設定など、基盤となる設備や環境(インフラストラクチャ、インフラ)の準備から始まります。アプリケーションを開発して公開したいだけの開発者にとって環境構築は本来やるべき作業ではないため、最適な環境を用意するのが難しいなど障壁となりがちです。
AWS Elastic Beanstalk は、アプリケーションが動作する定番の構成を提供します。アプリケーションの開発者は、Elastic Beanstalkによって用意されている定番構成の中からアプリケーションの実行環境に適したものを選んで数クリックするだけで、環境(インフラ)を作成することができます。
EC2インスタンスは、OSはもちろん、Webサーバーソフトウェアやアプリケーションの実行環境などがインストール・設定された状態で提供されます。単一インスタンス・複数インスタンス(Multi-AZ)の構成を選択でき、関連する各種AWSサービス(ELBやS3、Auto Scalingグループなど)も設定済みのため、開発者はアプリケーションをアップロードするだけでデプロイ(実行環境への展開)を行うことができます。
![【図を表示】](https://ping-t-resouces.com/uploads/question_image/file/22906/k58470.jpg)
Elastic Beanstalkでは、状況に応じたデプロイ方式を選択することができます。例えば、新規の環境やテスト時などにはすべてのインスタンスに一括でデプロイを行えます。一方、稼働中のアプリケーションをバージョンアップするような場合には、一部のインスタンスから段階的にデプロイを行う方式(ローリングデプロイ)や、旧環境は稼働したまま新しい環境にバージョンアップしたアプリケーションをデプロイし、問題ないことが確認できたら旧環境とURLを入れ替える方式などがあります。段階的にデプロイする際に行うELBの切り替えや新規インスタンスの構築などは、Elastic Beanstalkがすべて自動で行います。アプリケーションの開発者にとってはシステムの複雑な設定や切り替え作業を行う必要がなく、開発したアプリケーションを安全に展開できます。
環境が構築された後も、運用管理などはAWSによって行われます。例えば、EC2インスタンスのOSや導入されている各ソフトウェアへのアップデートも自動的に適用されるように設定できます。
また、Elastic Beanstalkで利用するリソースは自動スケーリング(Auto Scaling)に対応しており、利用状況に合わせた柔軟な構成変更を行うことができます。
なお、Elastic Beanstalk自体は無料で利用可能です。Elastic Beanstalkで構築した環境で動作するEC2インスタンスやS3バケットなど、利用したAWSリソースの分の料金がかかります。
以下はElastic Beanstalkの利用を始める際の入力画面です。
![【図を表示2】](https://ping-t-resouces.com/uploads/question_image/file/22908/kk58470.jpg)
ユーザーはアプリケーションの名前と使用するプラットフォーム(実行環境)の情報のみで使い始めることができます。
さらに細かな設定を行いたい場合は「より多くのオプションの設定」から設定可能です。例えば負荷分散を考慮して複数のインスタンスを構築したい場合や、データベースサービスのRDSに関する設定を行うことができます。
Elastic Beanstalkで利用可能なプラットフォームには、Java、.NET、PHP、Ruby、Python、Node.js、Go、Dockerがあります。またWebサーバー用のソフトウェアにApacheやNginx、IISなどがあります。
●Dockerについて
Dockerとはコンテナ型の仮想化ソフトウェアです。コンテナ型の仮想化とは、1つのホストOS上に複数の独立した環境(コンテナ)を作成できる技術のことです。独立した環境ですから、例えばコンテナに障害が発生した場合でもホストOSには何の影響も与えません。
Dockerは、ミドルウェアの設定や各種環境をDockerfileというテキストファイルにコード化して管理できるため、同じ環境を配布したり別の環境に持ち出したりできる、などの特徴があります。
なお、Elastic Beanstalkでは単一(シングル)コンテナ、マルチコンテナの両方に対応しています。シングル・マルチとはEC2インスタンス上で作成できるコンテナの数を意味しており、シングルコンテナの場合は1インスタンスに1つのコンテナを、マルチコンテナの場合は1インスタンスに複数のコンテナを動作させることができます。
【環境構築の自動化サービス】
基盤となる環境(インフラ)を自動的に構築・管理するサービスには、「Elastic Beanstalk」のほかに「AWS CloudFormation」などがあります。
![【図を表示3】](https://ping-t-resouces.com/uploads/question_image/file/22907/kkk58470.jpg)
※詳細は「CloudFormation」の分野を参照してください。
Elastic Beanstalkを利用する大きな目的は「アプリケーションのデプロイを時間をかけずに行う」という点にあります。インフラやサーバーに関する知識がなくても定番の構成を利用するだけでアプリケーションを公開することができます。
CloudFormationではElastic Beanstalkよりも柔軟な構成を組むことができますが、その分インフラやサーバーに関する知識が必要になります。
アプリケーションの実行環境を用意する際、通常はアプリケーションの動作に必要なスペックを持つハードウェア(物理マシンや仮想マシン)を用意し、OSやサーバー用のソフトウェアの導入、ネットワークの設定など、基盤となる設備や環境(インフラストラクチャ、インフラ)の準備から始まります。アプリケーションを開発して公開したいだけの開発者にとって環境構築は本来やるべき作業ではないため、最適な環境を用意するのが難しいなど障壁となりがちです。
AWS Elastic Beanstalk は、アプリケーションが動作する定番の構成を提供します。アプリケーションの開発者は、Elastic Beanstalkによって用意されている定番構成の中からアプリケーションの実行環境に適したものを選んで数クリックするだけで、環境(インフラ)を作成することができます。
EC2インスタンスは、OSはもちろん、Webサーバーソフトウェアやアプリケーションの実行環境などがインストール・設定された状態で提供されます。単一インスタンス・複数インスタンス(Multi-AZ)の構成を選択でき、関連する各種AWSサービス(ELBやS3、Auto Scalingグループなど)も設定済みのため、開発者はアプリケーションをアップロードするだけでデプロイ(実行環境への展開)を行うことができます。
![【図を表示】](https://ping-t-resouces.com/uploads/question_image/file/22906/k58470.jpg)
Elastic Beanstalkでは、状況に応じたデプロイ方式を選択することができます。例えば、新規の環境やテスト時などにはすべてのインスタンスに一括でデプロイを行えます。一方、稼働中のアプリケーションをバージョンアップするような場合には、一部のインスタンスから段階的にデプロイを行う方式(ローリングデプロイ)や、旧環境は稼働したまま新しい環境にバージョンアップしたアプリケーションをデプロイし、問題ないことが確認できたら旧環境とURLを入れ替える方式などがあります。段階的にデプロイする際に行うELBの切り替えや新規インスタンスの構築などは、Elastic Beanstalkがすべて自動で行います。アプリケーションの開発者にとってはシステムの複雑な設定や切り替え作業を行う必要がなく、開発したアプリケーションを安全に展開できます。
環境が構築された後も、運用管理などはAWSによって行われます。例えば、EC2インスタンスのOSや導入されている各ソフトウェアへのアップデートも自動的に適用されるように設定できます。
また、Elastic Beanstalkで利用するリソースは自動スケーリング(Auto Scaling)に対応しており、利用状況に合わせた柔軟な構成変更を行うことができます。
なお、Elastic Beanstalk自体は無料で利用可能です。Elastic Beanstalkで構築した環境で動作するEC2インスタンスやS3バケットなど、利用したAWSリソースの分の料金がかかります。
以下はElastic Beanstalkの利用を始める際の入力画面です。
![【図を表示2】](https://ping-t-resouces.com/uploads/question_image/file/22908/kk58470.jpg)
ユーザーはアプリケーションの名前と使用するプラットフォーム(実行環境)の情報のみで使い始めることができます。
さらに細かな設定を行いたい場合は「より多くのオプションの設定」から設定可能です。例えば負荷分散を考慮して複数のインスタンスを構築したい場合や、データベースサービスのRDSに関する設定を行うことができます。
Elastic Beanstalkで利用可能なプラットフォームには、Java、.NET、PHP、Ruby、Python、Node.js、Go、Dockerがあります。またWebサーバー用のソフトウェアにApacheやNginx、IISなどがあります。
●Dockerについて
Dockerとはコンテナ型の仮想化ソフトウェアです。コンテナ型の仮想化とは、1つのホストOS上に複数の独立した環境(コンテナ)を作成できる技術のことです。独立した環境ですから、例えばコンテナに障害が発生した場合でもホストOSには何の影響も与えません。
Dockerは、ミドルウェアの設定や各種環境をDockerfileというテキストファイルにコード化して管理できるため、同じ環境を配布したり別の環境に持ち出したりできる、などの特徴があります。
なお、Elastic Beanstalkでは単一(シングル)コンテナ、マルチコンテナの両方に対応しています。シングル・マルチとはEC2インスタンス上で作成できるコンテナの数を意味しており、シングルコンテナの場合は1インスタンスに1つのコンテナを、マルチコンテナの場合は1インスタンスに複数のコンテナを動作させることができます。
【環境構築の自動化サービス】
基盤となる環境(インフラ)を自動的に構築・管理するサービスには、「Elastic Beanstalk」のほかに「AWS CloudFormation」などがあります。
![【図を表示3】](https://ping-t-resouces.com/uploads/question_image/file/22907/kkk58470.jpg)
※詳細は「CloudFormation」の分野を参照してください。
Elastic Beanstalkを利用する大きな目的は「アプリケーションのデプロイを時間をかけずに行う」という点にあります。インフラやサーバーに関する知識がなくても定番の構成を利用するだけでアプリケーションを公開することができます。
CloudFormationではElastic Beanstalkよりも柔軟な構成を組むことができますが、その分インフラやサーバーに関する知識が必要になります。
問題文に違和感
公開日 2024/06/09
「Elastic BeanstalkとDockerの関係について」となっていますが、解答欄の選択肢を見る限り、BeanstalkとDockerの関係を聞いているのではなく、BeanstalkのプラットフォームとしてDockerを選択した場合の正しい内容について問われている気がするので、問題文を修正されたほうが適切な気がしましたがいかがでしょうか?(今の問題文のままでも質問の意図はわかりますし必須の修正ではないと思いますが。)
スタッフからの返信
この投稿に対して返信しませんか?
s staff_satomi
2024/06/10 10:47
yuiyuto123様 ご指摘の点を修正いたしました。 ご報告いただきまして、誠にありがとうございます。