SAP-C02-084 · 理解確認
Elastic Compute Architecture
7問 · 1問ずつ確認
新規に構築する業務サービスは、OSレベルのエージェントとカーネル設定を必要とする長時間稼働プロセスである。アプリケーション自体はステートレスで、HTTPトラフィックの増減に応じて複数ノードへ水平スケーリングしたい。
最初に評価するコンピューティング構成として最も適切なものはどれか。
B. AWS Lambdaを使用し、OS設定や常駐プロセスを関数の実行環境へ移す
C. AWS App Runnerを使用し、OSレベルのエージェントとカーネル設定をサービスへ委任する
D. AWS Batchを使用し、常時稼働するHTTPサービスをジョブキューとして処理する
答えと解説
答え:A
このワークロードでは、OSレベルの制御、常駐プロセス、水平スケーリングが必要です。そのため、EC2インスタンスを実行単位として増減できるAmazon EC2 Auto Scalingを最初に評価します。
Amazon S3への画像アップロードを契機にサムネイルを生成する。1回の処理は短く、イベント数は通常ほぼゼロだが、キャンペーン時には短時間で急増する。
サーバーやコンテナホストを常時維持せず、イベント量に応じて処理キャパシティを増減させたい。
最も適切なコンピューティングサービスはどれか。
B. AWS Lambdaでイベントに応じて関数を実行し、需要に応じた同時実行のスケーリングを利用する
C. AWS Batchで各画像アップロードを長時間バッチジョブとしてキューへ蓄積する
D. Amazon EKSで画像1件ごとに新しいKubernetesクラスターを作成する
答えと解説
答え:B
決定条件は、イベント駆動、短い処理、需要変動が大きいこと、常時ホストが不要なことです。AWS Lambdaでは、イベント量に応じて必要な実行環境をスケールできます。
コンテナ化されたステートレスなHTTP APIを新規構築する。チームはKubernetes APIを必要としておらず、Amazon EC2のノード群をプロビジョニング、パッチ適用、スケーリングしたくない。
一方、コンテナイメージとタスク定義は制御し、需要に応じて実行タスク数を増減させたい。
最も適切な構成はどれか。
B. Amazon EKSをセルフマネージドノードで実行し、Kubernetes運用を必須要件として追加する
C. Amazon ECSサービスをAWS Fargateで実行し、Amazon ECS サービスの自動スケーリングで必要タスク数を増減する
D. AWS LambdaへコンテナAPIを移し、コンテナオーケストレーション要件を新たに追加する
答えと解説
答え:C
要件は、コンテナ、Kubernetes不要、EC2ノード管理不要、タスク数を需要へ追従させることです。Amazon ECSがコンテナをオーケストレーションし、AWS Fargateがタスク用コンピューティングを提供します。
新規のマイクロサービス基盤では、組織標準としてKubernetes APIを使用し、既存のHelmチャートやカスタムリソース定義(CRD)も利用する必要がある。
一方、チームはKubernetesを維持しながら、EC2ノードのプロビジョニングやノードキャパシティのスケーリングなど、基盤管理の負荷をできるだけ減らしたい。
最も適切な構成はどれか。
B. Amazon EKS Auto Modeを使用し、Kubernetes APIを維持しながらノードの準備とスケーリングの管理負荷を減らす
C. Amazon EKSのEC2ノード数を固定し、負荷が増えた場合はPodのレプリカ数だけを手動で増やす
D. AWS App Runnerへ変更し、Kubernetes APIやCRDと同等の機能をApp Runner側で再現する
答えと解説
答え:B
Kubernetes APIが必須で既存Kubernetes資産を利用しつつ、ノード管理負荷を減らしたいことが決定条件です。EKS Auto ModeではKubernetesを維持しながら、ノードの準備や需要に応じたスケーリングなど、基盤管理の多くをAWSへ委任できます。
既存のAWSアカウントでは、すでにAWS App Runnerを利用してステートレスなHTTPウェブサービスを運用している。コンテナイメージからデプロイし、HTTPS、負荷分散、需要に応じた自動スケーリングを利用しており、チームはKubernetesクラスターやEC2フリートを管理していない。
この既存サービスの要件が変わっていない場合、最も適切な判断はどれか。
B. Kubernetes APIが不要でもAmazon EKSへ必ず移行し、クラスター運用を追加する
C. EC2インスタンス1台へ固定し、トラフィック増加時もコンピューティングキャパシティを変更しない
D. AWS Batchへ移行し、利用者からのHTTPリクエストをバッチジョブとしてキュー処理する
答えと解説
答え:A
この問題は、すでにAWS App Runnerを利用している既存環境を前提としています。App Runnerはウェブサービスのデプロイ、負荷分散、需要に応じたスケーリングなどをマネージドに提供するため、要件が変わっていなければ継続利用が適切です。
毎晩、数万件の独立したコンテナ処理を実行する。利用者からの対話型リクエストではなく、ジョブはキューに投入して利用可能なコンピューティングキャパシティへ順次割り当てたい。
ジョブ量に応じたキャパシティ調整とスケジューリングをマネージドサービスへ委任したい。
最も適切なサービスはどれか。
B. AWS App RunnerでジョブごとにHTTPエンドポイントを作成し、完了まで同期接続を維持する
C. AWS Batchへジョブを送信し、ジョブキューとコンピューティング環境を使って利用可能なキャパシティへスケジュールする
D. Amazon EC2を1台固定で起動し、すべてのジョブを到着順に手動実行する
答えと解説
答え:C
大量の独立ジョブ、キューへ投入可能、対話型応答ではないこと、実行キャパシティを需要へ追従させたいことが決定条件です。AWS Batchはジョブキューとコンピューティング環境を使用して、この処理モデルを実現します。
Amazon ECSサービスをEC2キャパシティ上で実行している。
Amazon ECS サービスの自動スケーリングにより必要タスク数が10から40へ増えたが、EC2クラスター側の空きCPUとメモリが不足し、30タスクがPENDINGのままである。
この状況について適切な判断を2つ選択してください。
B. タスク数のスケーリングと、そのタスクを配置するEC2キャパシティのスケーリングは別の制御として考える必要がある
C. PENDINGタスクはEC2の空きキャパシティに関係なく最終的に同じインスタンスへ配置されるため追加対応は不要である
D. 必要タスク数を40に設定した時点で、EC2クラスターのCPUとメモリ制約はスケジューリング時に無視される
E. EC2キャパシティプロバイダーのマネージドスケーリングなどを使い、タスク需要に応じて基盤キャパシティも追従させる
F. タスクがPENDINGならサービスの自動スケーリングを無効化し、水平スケーリング自体を使用しない
答えと解説
答え:B / E
Amazon ECSサービスの必要タスク数と、そのタスクを配置するEC2キャパシティは別のレイヤーです。必要タスク数を増やしただけでは、配置可能なCPU・メモリが不足している場合にすべてのタスクを実行できません。EC2キャパシティを利用するなら、タスク需要と基盤キャパシティの両方を追従させる必要があります。