無限ノック › DVA 練習問題一覧 › 問題
DVAデプロイ

ある企業がElastic Beanstalkで受注管理Webアプリケーションを運用しています。注文を受け付けると、PDF領収書の生成(処理時間:約30秒)と外部決済APIへの通知という2つのバックグラウンド処理が必要です。現在はHTTPリクエスト内で同期的に処理しているため、エンドユーザーへのレスポンスが大幅に遅延しています。Elastic Beanstalkのエコシステムを最大限に活用し、最小限のアーキテクチャ変更でこの問題を解決する最善の方法はどれですか?

A
Webサーバーのインスタンスタイプを上位のものにスケールアップし、処理スループットを向上させる
Webサーバーのインスタンスタイプを上位のものにスケールアップは、コスト増加を招くうえ、30秒の同期処理という根本問題は解決しません。非同期アーキテクチャへの移行が必要です。
B
Elastic Beanstalk Workerティア環境を別途作成し、WebアプリケーションからAmazon SQSキューにメッセージを送信し、WorkerティアでSQSのメッセージを受信してバックグラウンド処理を実行する
✓ 正解
Elastic Beanstalk Workerティアはバックグラウンドの長時間処理を非同期実行するために設計された専用機能です。Workerティア環境では sqsd(SQS デーモン)が自動的にSQSキューからメッセージを取得し、アプリケーションの指定エンドポイントにHTTP POSTでルーティングします。Webティアは即座にレスポンスを返せるようになり、スケーリングもBeanstalkが管理します。
C
AWS Lambda関数を2つ作成し、WebサーバーからInvocationType=Eventで非同期直接呼び出しを行う
AWS Lambda関数を2つ作成は、LambdaのInvocationType=Eventによる非同期呼び出しも技術的には有効ですが、Elastic Beanstalkを使用しているコンテキストでWorkerティアを活用する方がAWSの推奨パターンであり、インフラ管理の複雑さも最小限です。また Lambdaには15分の実行時間制限があります。
D
WebアプリケーションコードにPythonスレッド(または言語ネイティブの非同期処理)を追加し、Webプロセス内でバックグラウンド処理を並列実行する
WebアプリケーションコードにPythonスレッドを追加は、Webサーバープロセス内でスレッドを使う方法はWebサーバーのメモリとCPUを消費し、スケールアウト時に各インスタンスが独立してキューを持たないため処理の重複や欠落が起きやすく、耐障害性が低下します。

解説

Elastic Beanstalk Workerティアはバックグラウンドの長時間処理を非同期実行するために設計された専用機能です。Workerティア環境では sqsd(SQS デーモン)が自動的にSQSキューからメッセージを取得し、アプリケーションの指定エンドポイントにHTTP POSTでルーティングします。Webティアは即座にレスポンスを返せるようになり、スケーリングもBeanstalkが管理します。 選択肢AのWebサーバーのインスタンスタイプを上位のものにスケールアップは、コスト増加を招くうえ、30秒の同期処理という根本問題は解決しません。非同期アーキテクチャへの移行が必要です。 選択肢CのAWS Lambda関数を2つ作成は、LambdaのInvocationType=Eventによる非同期呼び出しも技術的には有効ですが、Elastic Beanstalkを使用しているコンテキストでWorkerティアを活用する方がAWSの推奨パターンであり、インフラ管理の複雑さも最小限です。また Lambdaには15分の実行時間制限があります。 選択肢DのWebアプリケーションコードにPythonスレッドを追加は、Webサーバープロセス内でスレッドを使う方法はWebサーバーのメモリとCPUを消費し、スケールアウト時に各インスタンスが独立してキューを持たないため処理の重複や欠落が起きやすく、耐障害性が低下します。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る