QUIZ 15分

Q1. サーバーレスアーキテクチャにおいて、Choreography と Orchestration を比較したとき、Choreography が適しているケースはどれか?

A. 複雑な承認フローの管理 B. 補償トランザクションが必要なSagaパターン C. 疎結合な通知・ログ・分析の並列配信 D. 処理順序の厳密な制御が必要なワークフロー

答えを見る

正解: C

Choreography は各サービスがイベントに反応して自律的に動作するため、通知・ログ・分析のように順序依存がなく疎結合な処理に適しています。複雑なフロー制御や補償トランザクションが必要な場合は、Step Functions 等を使った Orchestration が適切です。


Q2. Lambda のコールドスタートを最も効果的に軽減する方法はどれか?

A. Lambda 関数のメモリを最大に設定する B. Provisioned Concurrency を設定する C. Lambda 関数のタイムアウトを長くする D. VPC を使用しない設定にする

答えを見る

正解: B

Provisioned Concurrency は、指定した数の Lambda インスタンスを事前に初期化して待機させる機能です。これにより、リクエスト到着時にコールドスタートが発生せず、安定した低レイテンシを実現できます。VPC を外す方法もコールドスタート軽減に寄与しますが、ネットワーク設計上の制約を受けます。


Q3. サーバーレスで Fan-out パターンを実装する際、SNS を SQS と組み合わせる(SNS → SQS → Lambda)利点として正しいものはどれか?

A. SNS だけでは Lambda を呼び出せないため B. SQS がバッファとなり、Lambda の同時実行数を制御でき、メッセージの再試行も保証される C. SNS のメッセージサイズ制限を超えるため D. SQS を経由するとコストが下がるため

答えを見る

正解: B

SNS → Lambda の直接呼び出しも可能ですが、SQS を間に挟むことで、Lambda の同時実行数を reservedConcurrentExecutions で制御でき、メッセージの再試行(リトライ)と DLQ によるエラーハンドリングが保証されます。バースト時にLambdaのスロットリングを防ぐバッファとしても機能します。


Q4. AWS Lambda で月間1億リクエスト(平均200ms、256MB)を処理する場合、コスト面で最も適切な判断はどれか?

A. Lambda のまま運用し、Provisioned Concurrency でレイテンシを安定させる B. ECS Fargate に移行し、常時稼働のコンテナで処理する C. EC2 Reserved Instances に移行する D. Lambda@Edge に移行する

答えを見る

正解: B

月間1億リクエストは常時高負荷のワークロードです。Lambda の場合、1億 x 0.2秒 x 0.25GB x $0.0000166667 = 約 $83 + リクエスト課金 $20 = 約 $103/月ですが、これだけの継続的負荷であれば ECS Fargate(または Fargate Spot)の方がコスト効率が良く、コールドスタートもありません。Provisioned Concurrency を使うとさらにコストが増加します。


Q5. Step Functions で Saga パターンの補償トランザクションを実装する際、Catch フィールドの役割として正しいものはどれか?

A. 成功時の次のステップを定義する B. エラー発生時に補償処理を行うステートに遷移させる C. リトライ回数を設定する D. タイムアウト時間を設定する

答えを見る

正解: B

Step Functions の Catch フィールドは、ステートでエラーが発生した際に、指定したエラータイプに応じて別のステートに遷移させる仕組みです。Saga パターンでは、この仕組みを使って補償トランザクション(在庫戻し、返金処理など)を呼び出すステートにフォールバックさせます。リトライには Retry フィールドを使います。


Q6. サーバーレスアプリケーションのテストにおいて、LocalStack を使う最大のメリットはどれか?

A. AWS の本番環境と全く同じ動作が保証される B. AWS アカウントなしでローカル環境で統合テストができる C. Lambda のコールドスタートをシミュレーションできる D. 本番環境のデータを使ったテストができる

答えを見る

正解: B

LocalStack は DynamoDB、SQS、SNS、S3 などの AWS サービスをローカル環境でエミュレートします。AWS アカウントや課金なしで統合テストを実行でき、CI/CD パイプラインにも組み込めます。ただし、本番環境と完全に同じ動作を保証するものではないため、最終的にはステージング環境での検証も必要です。


Q7. API Gateway + Lambda でREST APIを構築する際、ベンダーロックインを軽減するための設計として最も効果的なものはどれか?

A. API Gateway の全機能を積極的に活用する B. ビジネスロジックを Lambda ハンドラーから分離し、ポートパターンで抽象化する C. Lambda レイヤーを使ってコードを共有する D. SAM テンプレートでインフラを管理する

答えを見る

正解: B

ビジネスロジックを Lambda のハンドラー(アダプター層)から分離し、ポートパターン(Hexagonal Architecture)でクラウドサービスへのアクセスを抽象化することで、ビジネスロジック自体はクラウド非依存になります。別のクラウドプロバイダーやコンテナに移行する際は、アダプター層の書き換えのみで対応できます。


Q8. DynamoDB Streams を Lambda のイベントソースとして使用する際の特徴として正しいものはどれか?

A. メッセージの順序保証はなく、At-most-once の配信保証 B. シャードごとに順序保証があり、At-least-once の配信保証 C. グローバルな順序保証があり、Exactly-once の配信保証 D. 順序保証もなく、配信保証もない

答えを見る

正解: B

DynamoDB Streams は各パーティションキー(シャード)内で書き込み順序を保証し、At-least-once の配信保証を提供します。つまり、同じレコードが複数回配信される可能性があるため、Lambda 側で冪等性を確保する必要があります。グローバルな順序保証はパーティション間では提供されません。