Q34 — AWS SAA-C03 第8章

第 34/65 問 | ← 第8章

Q529. ある企業がアプリケーションをAmazon EC2 Linuxインスタンスに移行しました。そのうち1台のEC2インスタンスでは、1時間ごとに実行される複数のタスクがスケジュール通りに動作しています。これらのタスクは異なるチームによって作成されており、共通のプログラミング言語はありません。企業は、これらのタスクが単一のインスタンス上で実行される際のパフォーマンスとスケーラビリティを懸念しています。ソリューションアーキテクトは、こうした懸念を解消するソリューションを実装する必要があります。 この要件を満たすソリューションのうち、運用オーバーヘッドが最も少ないものはどれですか?

正解: A. AWS Batch を使用してタスクをジョブとして実行します。ジョブのスケジューリングには Amazon EventBridge(Amazon CloudWatch Events)を使用します。

解説

各選択肢を検討します。 ・選択肢A(AWS Batch):AWS Batchは、バッチ処理向けに最適化されたマネージドサービスであり、異なる言語で記述されたタスク(コンテナ化されたアプリケーション)を柔軟に実行できます。スケジューリングにはEventBridgeが利用可能で、スケールアウト/スケールインも自動的に行われ、運用オーバーヘッドが極めて小さいです。また、1時間程度の長時間実行タスクにも対応可能です(FargateまたはEC2-backed Compute Environmentで実行可能)。 ・選択肢B(AWS App Runner):App RunnerはWebアプリケーション向けに設計されており、HTTPトラフィックを前提とした常駐型サービスです。1時間のバッチタスクのような非同期・一過性のワークロードには不向きで、スケジューリングやライフサイクル管理のサポートも限定的です。運用オーバーヘッドがむしろ増加します。 ・選択肢C(Lambda):Lambdaは最大15分の実行時間制限があるため、1時間かかるタスクは実行できません(タイムアウト)。したがって、要件を満たしません。 ・選択肢D(Auto Scaling + AMI):単一インスタンスのパフォーマンス・スケーラビリティ問題を解決するには、タスクの並列実行が必要ですが、この構成では「同じタスクを複数コピーして同時に実行」するのではなく、単にインスタンスを複製するだけです。また、スケジューリングやタスクの個別管理、リソース効率(例:1時間タスクが終わるまでインスタンスを起動し続ける)など、運用負荷が高くなります。 以上より、AWS Batch(選択肢A)が、異なる言語のタスクを扱え、長時間実行に対応し、スケジューリングとスケーリングを自動化でき、かつ運用オーバーヘッドが最小となる最適な選択肢です。