type
status
date
slug
summary
tags
category
icon
password
理論
1. トラフィックの急増に対する「弾力性」
トラフィックの急増を処理するためには、「弾力性(Elasticity)」が欠かせません。弾力性とは、システムが需要に応じてリソースを自動的に増減させる能力です。急激にトラフィックが増加したとき、リソースが不足してしまうとデータ損失が発生したり、サービスが停止したりするリスクがあります。AWSは、Auto Scalingやサーバーレスなど、システムが動的にスケールする仕組みを提供しています。この弾力性が、急増するトラフィックに対する最も重要な対応策です。
- *サーバーレス(Lambda)**は、リソースを事前に決めることなく、リクエストに応じてリソースを自動的にスケールさせることができるため、弾力性が非常に高いです。
- *コンテナ化(ECS/Fargate)**では、コンテナの数やリソースを事前に設定しておき、トラフィック増加に応じて新たなコンテナを自動的に立ち上げることができます。
2. 非同期処理とバッファリング
デバイスが一度に送信するデータの量が予測不可能な場合、すべてのリクエストを瞬時に処理するのは不可能です。この問題を解決するために、非同期処理を採用します。非同期処理の基本的な考え方は、リクエストをその場で即時処理するのではなく、一時的にバッファしておき、処理可能なタイミングで順次処理するというものです。これにより、リクエストの急増時にもデータを失うことなく、順次処理を行うことができます。
- SQSは、リクエストを一時的に保存する「キュー」として機能し、処理能力に応じてデータを順次取り出して処理します。これにより、大量のリクエストを適切に管理することができます。
- LambdaやFargateがこれを処理する役割を果たし、非同期でスケールしながら処理を実行します。
3. データ損失の防止(Durability)
データ損失の防止は、システム設計において最も根本的で重要な要素です。データ損失を許容しない場合、システムの可用性や信頼性が保証されません。メッセージングシステム(例:SQS)は、メッセージの耐久性(Durability)を保つために、冗長性を確保した設計が必要です。SQSではメッセージが一時的に保存され、バックエンドで処理されるまで失われることがありません。
- SQSは、分散システムにおいて、メッセージが消失するリスクを最小化するため、メッセージの重複を避け、確実に処理されることを保証します。
4. シンプルさと管理の効率性
システム全体を管理する負荷が高いと、問題発生時の対応が遅れる可能性があります。システムをできるだけシンプルに設計し、管理の効率性を保つことが重要です。サーバーレスアーキテクチャや完全に管理されたサービスを利用することで、インフラの管理負担を減らし、運用の効率を高めることができます。
- Lambdaのようなサーバーレス技術では、インフラの管理を完全にAWSに任せることができ、システム運営に必要なリソースのみを意識すれば良いため、システム設計がシンプルになります。
5. 適切なツールとサービスの選定
最後に、システムに適したツールやサービスを選定することが本質的です。例えば、デバイスからのデータ送信において、高いリクエスト数やスケーラビリティの要件がある場合、API Gatewayが非常に適しています。もしリクエストを非同期で効率的に処理する必要があれば、SQS + Lambdaの組み合わせが理想的です。大量のデータをリアルタイムでストリーミングする場合には、Kinesisなどを選択することが最適です。
結論
本質的には、システムの設計は以下の要素に基づいています:
- 弾力性:リソースを自動的にスケールし、急激なトラフィック増加にも耐える能力。
- 非同期処理:リクエストを瞬時に処理せず、バッファリングして順次処理。
- データ損失防止:冗長性を確保し、データの耐久性を保つ。
- シンプルさと管理効率:システムの管理負担を最小化し、運用の効率を高める。
これらの原則に基づいて、**選択肢B(API Gateway + SQS + Lambda)**が最も適した解決策であるといえます。このアーキテクチャは、スケーラビリティ、非同期処理、データ損失防止を十分に実現し、運用管理を簡素化できます。
実践
略
一問道場
問題 #180
トピック 1
ある会社がAWSクラウドで処理エンジンを運用しています。このエンジンは、物流センターからの環境データを処理して、持続可能性指数を計算します。会社は、ヨーロッパ全体に分散した数百万のデバイスを物流センターで運用しており、これらのデバイスはRESTful APIを通じて情報を処理エンジンに送信します。
このAPIは予測不可能なトラフィックの急増が発生します。会社は、デバイスが処理エンジンに送信するすべてのデータを処理するソリューションを実装する必要があります。データ損失は許容できません。
どのソリューションがこれらの要件を満たしますか?
A. RESTful API用にアプリケーションロードバランサー(ALB)を作成します。Amazon Simple Queue Service (Amazon SQS)キューを作成します。ALBにリスナーとターゲットグループを作成し、ターゲットとしてSQSキューを追加します。Amazon Elastic Container Service (Amazon ECS)でFargate起動タイプを使用して、キュー内のメッセージを処理するコンテナを実行します。
B. RESTful APIを実装するAmazon API Gateway HTTP APIを作成します。Amazon Simple Queue Service (Amazon SQS)キューを作成します。API Gatewayサービス統合でSQSキューを設定します。AWS Lambda関数を作成して、SQSキュー内のメッセージを処理します。
C. RESTful APIを実装するAmazon API Gateway REST APIを作成します。Auto Scalingグループ内にAmazon EC2インスタンスのフリートを作成します。API GatewayのAuto Scalingグループプロキシ統合を設定します。EC2インスタンスで受信データを処理します。
D. RESTful API用にAmazon CloudFrontディストリビューションを作成します。Amazon Kinesis Data Streamsでデータストリームを作成します。データストリームをディストリビューションのオリジンとして設定します。AWS Lambda関数を作成して、データストリーム内のデータを消費して処理します。
解説
この問題の解説は以下の通りです:
要件:
- トラフィックの急増に対応する必要がある。
- データ損失を許容しない。
- すべてのデータを確実に処理する必要がある。
選択肢Bが最適な理由:
- API GatewayとSQSを使い、非同期処理を行い、トラフィック増加に対応。
- Lambdaを使用して、SQSのメッセージを処理し、スケーラブルで管理が簡単。
- SQSはデータの耐久性(データ損失なし)を保証。
他の選択肢(A, C, D)は複雑で、非同期処理やスケーラビリティ、データ損失防止の観点で効果的ではありません。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/170d7ae8-88e2-80c9-b875-ef2ac5940b9c
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章