Q78 — AWS DOP-C02 第1章
第 78/100 問 | ← 第1章
ある企業は、レコード処理を行う同期型アプリケーションを実行しています。各コンポーネントはAuto Scalingグループで実行されるAmazon EC2インスタンス上にあります。各レコードの処理は、そのタイプに応じた複数の手順からなる順次処理です。各手順は常に5分以内に完了します。 現在のシステムの課題は、いずれかの手順が失敗した場合、アプリケーション全体がレコードを最初から再処理することです。同社は、アプリケーションが失敗した手順のみを再処理するようにアーキテクチャを更新したいと考えています。 これらの要件を満たす最も効率的な運用ソリューションはどれでしょうか?
- A. レコードをAmazon S3に書き込むWebアプリケーションを作成します。S3イベント通知を使用してAmazon Simple Notification Service(Amazon SNS)トピックにパブリッシュします。EC2インスタンスがAmazon SNSをポーリングして処理を開始します。中間結果をAmazon S3に保存して次のステップに渡します。
- B. アプリケーション内のロジックで処理手順を実行します。アプリケーションコードをコンテナ内で実行するように変換します。AWS Fargateでコンテナインスタンスを管理します。コンテナを自身を呼び出してステートを次のステップに渡すように構成します。
- C. レコードをAmazon Kinesisデータストリームに送信するWebアプリケーションを作成します。KinesisデータストリームおよびAWS Lambda関数で処理を分離します。
- D. レコードをAWS Step Functionsに渡すWebアプリケーションを作成します。処理をStep FunctionsタスクおよびAWS Lambda関数に分割します。 ✓
正解: D. レコードをAWS Step Functionsに渡すWebアプリケーションを作成します。処理をStep FunctionsタスクおよびAWS Lambda関数に分割します。
解説
正解はDです。AWS Step Functionsは、複雑なビジネスプロセスを一連のステップに分解でき、エラー処理および再試行メカニズムを備えています。あるステップが失敗した場合、失敗したステップのみを再処理すればよく、レコード全体を最初から処理する必要はありません。これは、同社が失敗したステップのみを再処理したいという要件に合致します。さらに、AWS Lambda関数と組み合わせることで、計算集約型処理を効率的に実行できます。選択肢Aでは、S3およびSNSを使用するため、このような多段階順次処理およびエラー処理には不適切です。選択肢Bでは、Fargateでコンテナインスタンスを管理しますが、ステップの柔軟性およびエラー処理の面でStep Functionsほど直接的ではありません。選択肢Cでは、KinesisデータストリームおよびLambda関数を使用しますが、このような特定の順次処理およびエラー処理には、Step Functionsほど直接的かつ効果的ではありません。したがって、選択肢Dが最適解です。