type
status
date
slug
summary
tags
category
icon
password
书籍
 

理論

1. イベント駆動型アーキテクチャ

イベント駆動型アーキテクチャでは、システムは「イベント」に反応して動作します。イベントは例えばユーザーのアクションや外部システムからの通知などです。これにより、システムは非同期で動作し、イベントが発生するたびに適切な処理が行われます。
  • SNS (Simple Notification Service) は、イベントを発行するためのメッセージングサービスです。SNS は、複数のサブスクライバー(例えば Lambda 関数)にメッセージを一斉に通知します。
  • Lambda はサーバーレスコンピューティングで、SNS からのイベントを受けて自動的に処理を行います。

2. 自動スケーリング

システムは、受信するリクエストやイベントの量に基づいてリソースを自動的に増減させる能力を持つべきです。これにより、システムは効率的にリソースを使用し、過負荷になることを防ぎます。
  • Lambda は、イベントの量に応じて処理能力を自動的にスケールイン・スケールアウトできます。これにより、大量のイベントが来ても自動で処理能力が増えます。
  • EC2 Auto Scaling は、EC2 インスタンスを動的にスケールするための機能で、リソースの需要に応じてインスタンス数を増減させます。

3. エラーハンドリング

エラーハンドリングは、処理中のイベントが失敗した場合に重要です。失敗したイベントは、後でレビューや再処理できるように、別のキューに移動する必要があります。
  • SQS (Simple Queue Service) は、メッセージを保存し、失敗したメッセージをデッドレターキューに移動させることでエラーハンドリングを行います。

まとめ

この問題は、SNSLambda を使用したイベント駆動型アーキテクチャの設計に関連しており、自動スケーリングエラーハンドリングがどのように実装されるかに焦点を当てています。

実践

一問道場

問題 #179
トピック 1
ソリューションアーキテクトがイベントを処理するソリューションを設計しています。このソリューションは、受信するイベントの数に基づいてスケールインおよびスケールアウトする能力を持つ必要があります。処理エラーが発生した場合、イベントはレビューのために別のキューに移動する必要があります。
どのソリューションがこれらの要件を満たしますか?
A. イベントの詳細を Amazon Simple Notification Service (Amazon SNS) トピックに送信します。AWS Lambda 関数を SNS トピックのサブスクライバーとして設定し、イベントを処理します。関数に失敗時の宛先を追加します。Amazon Simple Queue Service (Amazon SQS) キューをターゲットとして設定します。
B. イベントを Amazon Simple Queue Service (Amazon SQS) キューに公開します。Amazon EC2 Auto Scaling グループを作成します。Auto Scaling グループを設定し、キューの ApproximateAgeOfOldestMessage メトリックに基づいてスケールインおよびスケールアウトを行います。アプリケーションを設定して、失敗したメッセージをデッドレターキューに書き込みます。
C. イベントを Amazon DynamoDB テーブルに書き込みます。テーブルに対して DynamoDB ストリームを設定します。ストリームを設定して AWS Lambda 関数を呼び出し、Lambda 関数でイベントを処理します。
D. イベントを Amazon EventBridge イベントバスに公開します。Amazon EC2 インスタンス上でアプリケーションを作成し、Auto Scaling グループで実行します。アプリケーションロードバランサー (ALB) の背後に配置します。ALB をイベントバスのターゲットとして設定します。イベントバスを設定してイベントをリトライします。アプリケーションがメッセージを処理できない場合、デッドレターキューにメッセージを書き込みます。

解説

この問題は、イベントを処理するための 自動スケーリングエラーハンドリング の要件を満たすソリューションを選択する内容です。解説を以下にまとめます。

問題の要件

  • スケールインおよびスケールアウト: システムは受信するイベント数に基づいて自動的に処理能力を増減させる必要があります。
  • エラーハンドリング: 処理中にエラーが発生した場合、イベントは別のキューに移動してレビューする必要があります。

各選択肢の解説

A. SNS + Lambda + SQS

  • SNS (Simple Notification Service): SNSは、イベントを発行するサービスで、イベントが発生すると、SNSにサブスクライブしている Lambda 関数 に通知されます。
  • Lambda: Lambdaは、SNSから受け取ったイベントを自動的に処理します。Lambdaは並列実行により自動的にスケールし、イベント数の増加に対応できます。例えば、イベント数が増えればLambdaのインスタンス数が増加します。
  • SQS (Simple Queue Service): もしLambdaでイベント処理が失敗した場合、Lambdaは失敗時に指定されたSQSキューにエラーイベントを移動できます。これにより、失敗したイベントは後で確認でき、処理漏れを防げます。
この選択肢は、イベント数のスケーリングに関して非常に効果的で、エラーハンドリングの仕組みも適切です。

B. SQS + EC2 Auto Scaling

  • SQS: イベントが SQS キュー に送られ、キューにメッセージが蓄積されます。処理能力が不足している場合は EC2 Auto Scaling を使ってEC2インスタンスを増加させます。
  • EC2 Auto Scaling: メッセージ数に基づき、EC2インスタンスの数が増減します。負荷が高ければインスタンス数を増やし、低ければ減らします。
  • デッドレターキュー: 処理に失敗したメッセージは、SQSのデッドレターキュー(DLQ)に送られ、後で確認できるようになります。
この選択肢は、イベント処理のスケーリングにおいて EC2 Auto Scaling を使用しており、柔軟ですが、EC2インスタンスの管理 が必要で、他の選択肢よりも運用がやや複雑になります。

C. DynamoDB + Lambda

  • DynamoDB: イベントをDynamoDBに書き込むと、DynamoDB Streamsを使って変更をトリガーできます。
  • Lambda: DynamoDB StreamsからLambda関数がトリガーされ、Lambdaがイベントを処理します。
このアーキテクチャでは、自動スケーリングに関しては Lambda による処理のスケーリングはありますが、DynamoDB自体にはイベント数に基づくスケーリングの仕組みがないため、スケールイン・スケールアウトが必ずしも最適に行われるわけではありません。また、エラーハンドリングの詳細が不足しており、失敗したメッセージの処理が不明確です。

D. EventBridge + EC2 Auto Scaling

  • EventBridge: イベントを EventBridge イベントバスに公開します。EventBridgeはイベントを集約し、適切なターゲット(例えばEC2)に転送します。
  • EC2 Auto Scaling: EC2インスタンスは Auto Scaling を使って増減します。
  • エラーハンドリング: イベントの処理に失敗した場合は、デッドレターキューに移動します。
EventBridgeとEC2 Auto Scalingはスケーリング能力を提供しますが、EC2インスタンスの管理が必要となるため、手間がかかります。また、EventBridgeのイベント処理やEC2上でのアプリケーションの動作を正しく設定する必要があり、少し複雑です。

最適な選択肢

最も適切な選択肢は A です。
  • SNS + Lambda は、イベントが到着したときに自動でスケーリングし、Lambdaでの処理に失敗した場合は SQS を使ってエラーメッセージを移動できます。
  • さらに、AWSの サーバーレス アーキテクチャに基づくため、管理が簡単で、コスト効率も良いです。
B も良い選択肢ですが、EC2 の管理が必要となり、運用の複雑さが増すため、手軽さと効率を重視するなら A の方が優れています。
相关文章
クラウド技術の共有 | AWS Site-to-Site
Lazy loaded image
EKSでのWordPressデプロイ:KCNA-JP試験対策 (Kubernetes実践編)
Lazy loaded image
初心者向け!コンテナ化WordPressサイト構築ガイド(超詳細版)
Lazy loaded image
EFSを活用!AWS EC2でDockerを使ったWordPressサイト構築
Lazy loaded image
529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
Lazy loaded image
528-AWS SAP AWS 「理論・実践・一問道場」Migration Evaluator
Lazy loaded image
180-AWS SAP AWS 「理論・実践・一問道場」データ損失は不許容API構成178-AWS SAP AWS 「理論・実践・一問道場」AWS Data Exchange のデータシェア
Loading...
みなみ
みなみ
一个普通的干饭人🍚
最新发布
第1回:イントロダクション
2025-4-21
TOKYO自習島
2025-4-21
第1回:イントロダクション
2025-4-18
第1回:オリエンテーション/意思決定と会計情報
2025-4-18
建物業法の基本と免許-59問
2025-4-10
宅建士过去问速刷:小南小白陪你拿证-001
2025-4-7
公告

🎉 欢迎访问我的博客 🎉

🙏 感谢您的支持 🙏

📅 本站自 2024年9月1日 建立,致力于分享我在 IT・MBA・不动产中介 等领域的学习与实践经验,并推动 线上线下学习会 的自主开展。

📚 主要内容

💻 IT・系统与开发

  • 系统管理:Red Hat 等
  • 容器与编排:Kubernetes、OpenShift
  • 云计算:AWS、IBM Cloud
  • AI 入门:人工智能基础与实践
  • 技术笔记与考证经验

🏠 不动产 × 宅建士

  • 宅建士考试笔记

🎓 MBA 学习笔记

  • 管理学、经济学、财务分析等

🔍 快速查找内容(标签分类)

由于网站目前没有专门的设计,可能会导致查找信息不便。为了更快找到你感兴趣的内容,推荐使用以下标签功能 进行搜索!
📌 定期更新,欢迎常来看看!
📬 有任何建议或想法,也欢迎留言交流!