Q1 — 単一選択あるJavaアプリケーションを、開発・検証・本番のAmazon EC2へ個別にデプロイしています。
各環境でJREやライブラリのバージョンが異なるため、同じリリースでも環境によって挙動が変わることがあります。
Container化によってこの問題を改善する方法として最も適切なものはどれですか。
A. 各Amazon EC2のAMIを個別に管理し、環境ごとに必要なライブラリを手動で更新する
B. アプリケーション、JRE、必要なライブラリをコンテナイメージへまとめ、各環境でそのイメージを実行する
C. 本番環境だけJREを固定し、開発環境と検証環境では最新バージョンを利用する
D. アプリケーションコードだけをコンテナイメージへ入れ、JREとライブラリは各ホストへ個別に導入する
答えと解説
答え:B
アプリケーションと実行に必要なランタイム、ライブラリをコンテナイメージへまとめることで、各環境へ個別に依存関係を導入する場合よりも実行環境を再現しやすくなります。
Q2 — 単一選択モノリシックなウェブアプリケーションがあり、環境ごとのランタイムとライブラリ差異による障害が発生しています。
現時点では、アプリケーションをマイクロサービスへ分割する明確なビジネス要件はありません。
最も適切なModernization Decisionはどれですか。
A. Container化する場合は必ずアプリケーションを複数のマイクロサービスへ分割する
B. マイクロサービス化するまで現在のVMへのデプロイ方式を維持する
C. モノリシック構成を維持したままContainer化し、依存関係をコンテナイメージへまとめる
D. ランタイム差異をなくすため、すべての処理をAWS Lambdaへ移行する
答えと解説
答え:C
Container化とマイクロサービス化は別の判断です。モノリシックなアプリケーションでもContainer化でき、依存関係の再現性や配置方法を改善できる場合があります。
Q3 — 単一選択Container化済みのアプリケーションを複数のAmazon EC2へ手動で配置しています。
コンテナ停止時の再起動と必要な実行数の維持も独自スクリプトで管理しています。
次に検討する改善として最も適切なものはどれですか。
A. Amazon ECSまたはAmazon EKSへ移行し、コンテナ配置・再起動・必要数の維持をオーケストレーターへ委ねる
B. EC2 Auto Scalingでホスト台数だけを自動調整し、コンテナ配置と再起動は既存スクリプトで継続する
C. AWS Systems Manager State Managerで各EC2のDocker起動状態を定期補正し、配置先の決定はホスト単位で管理する
D. コンテナを含むAMIを作成してEC2 Auto Scalingでインスタンスを交換し、コンテナ単位の配置や再起動は扱わない
答えと解説
答え:A
Container化後も配置、再起動、必要な実行数の維持を手動管理している場合は、Orchestrationを導入する機会があります。ここではAmazon ECSとAmazon EKSのどちらを選ぶかではなく、手動のライフサイクル管理をOrchestrationへ移せることが重要です。
Q4 — 単一選択ステートレスなHTTP APIをContainer化している。ホストOSへの特権アクセス、GPU、特定インスタンスへの依存はなく、負荷は変動する。チームはEC2インスタンスの選定・パッチ適用・クラスタ容量管理をできるだけ行いたくない。実行基盤として最も適切な候補はどれか。
A. AWS Fargateを利用し、Containerの実行に必要なCPU・メモリ等をタスク側で指定して基盤サーバー管理を減らす
B. Containerを廃止し、各EC2へアプリケーション依存関係を手動インストールする
C. ホスト管理を減らす要件でも、必ずEC2インスタンスを固定台数で自前管理する
D. AWS FargateはContainerを実行できないため、Amazon ECSやAmazon EKSを利用する場合も必ずEC2だけを使う
答えと解説
答え:A
ホスト固有要件がなく、Container実行基盤のサーバー管理を減らしたい場合はAWS Fargateが有力候補です。Container化の価値と、Fargateでサポートされる実行要件を分けて評価します。
Q5 — 複数選択:2つ選択ある企業が、既存システムの構成要素ごとにContainer化の機会を評価しています。
Container化の候補として適切なものを2つ選択してください。
A. 開発環境と本番環境でランタイムやライブラリ差異が発生しているJava API。データは外部データベースにあり、ホスト固有機能への依存はない
B. ベンダーサポート条件として専用VMが必要で、カーネルモジュールと物理デバイスを使用するアプリケーション
C. 複数サーバーへ手動導入している独立したバッチ処理。必要なランタイムとライブラリを固定でき、結果は外部ストレージへ保存する
D. MACアドレスに固定されたライセンスを使用し、業務上必要な状態をホストのローカルディスクだけに保存しているアプリケーション
答えと解説
答え:A / C
AとCはホスト固有の依存関係が比較的少なく、依存関係や配置方法をContainerとしてまとめる効果を得やすい構成です。BとDはホストやVM固有の要件が強く、Container化には追加の変更や制約への対応が必要です。
Q6 — 単一選択あるバッチ処理はすでにContainer化されています。
しかし起動時に、特定のAmazon EC2だけに存在する固定パスの設定ファイルとローカルデーモンを暗黙に利用しています。そのため、同じコンテナイメージを別のホストへ配置しても、そのホスト側へ同じ構成を手作業で再現しなければ起動できません。
このContainerのPortabilityを高めるための対応として最も適切なものはどれですか。
A. 現在正常に動作しているAmazon EC2のAMIを固定し、そのホストだけでContainerを実行し続ける
B. 設定や外部接続先を明示的に与え、特定のホストパスやローカルデーモンを暗黙に前提とする構成を減らす
C. 配置先ホストごとに異なるコンテナイメージを作成し、それぞれのホスト固有設定をイメージへ埋め込む
D. ホスト依存の内容を変更せずAWS Fargateへ移行し、実行基盤の変更だけで依存関係を解消する
答えと解説
答え:B
コンテナイメージを作成していても、特定ホストにだけ存在するファイルやローカルデーモンを暗黙に前提としていれば、配置先を変更しにくいままです。設定や外部要件を明示し、特定ホストへの結合を減らすことで、互換性のある実行環境へ配置しやすくなります。
Q7 — 単一選択1台のAmazon EC2上で、ウェブアプリケーションとバッチ処理を同時に実行しています。
ウェブアプリケーションだけを更新する場合でもサーバー全体への影響確認が必要で、ウェブとバッチのバージョン、配置、実行数を個別に管理しにくい状態です。
Container化による改善として最も適切なものはどれですか。
A. ウェブとバッチを同じ1つのContainerへまとめ、Amazon EC2と同じ配置単位を維持する
B. Amazon EC2のインスタンスタイプを大きくし、ウェブとバッチを引き続きサーバー単位で管理する
C. ウェブとバッチを別々のContainerとして扱い、バージョン、配置、実行数を構成要素ごとに管理する
D. ウェブだけをContainer化し、Container化すればウェブとバッチが自動的に疎結合になると判断する
答えと解説
答え:C
ウェブとバッチを別々のContainerとして扱うことで、サーバー全体ではなく構成要素ごとにバージョン、配置、実行数を管理しやすくなります。ただし、Containerを分割しただけでアプリケーション同士が自動的に疎結合になるわけではありません。