type
status
date
slug
summary
tags
category
icon
password
理論
1. 高可用性とスケーラビリティの重要性
- 高可用性: アプリケーションが稼働し続けるためには、障害が発生してもダウンタイムを最小限に抑える必要があります。これを実現するためには、冗長性のあるアーキテクチャや、障害発生時に自動で回復する仕組みを取り入れることが求められます。
- スケーラビリティ: 特にeコマースなど、トラフィックの増減が予測できないシステムでは、アプリケーションが柔軟にスケールできることが重要です。必要に応じてコンピューティングリソースを動的に増減させることができるアーキテクチャが求められます。
2. 疎結合なアーキテクチャ
- 疎結合: コンポーネント間の依存性を最小限にし、障害が発生しても他の部分に影響を与えないようにする設計が重要です。AWSでは、Amazon SQS や AWS Lambda などのサーバーレスサービスを使用することで、疎結合の設計が簡単に実現できます。
3. AWSサービスの利用
- Amazon SQS (Simple Queue Service): スケーラブルで高可用なメッセージキューサービス。メッセージをキューに格納し、後続の処理で取り出して処理するため、システム全体の疎結合性を高め、耐障害性を確保できます。
- AWS Lambda: サーバーレスコンピューティングサービスで、リクエストに基づいて自動的にスケールします。メッセージがSQSに到着すると自動的にLambda関数が起動し、必要な処理を行います。Lambdaは使用した分だけ料金が発生するため、トラフィックの変動にも柔軟に対応でき、コスト効率が高いです。
4. シンプルなシステム設計
- システム設計をシンプルに保つことは、運用負荷を軽減し、問題が発生した際に迅速に対応できることを意味します。AWS LambdaとSQSを使用することで、サーバーレスでシンプルかつスケーラブルなシステムを構築できます。
結論
- eコマースなど、トラフィックに変動があるシステムにおいては、Amazon SQS と AWS Lambda の組み合わせが、高可用性、スケーラビリティ、疎結合 を実現する最適なアーキテクチャとなります。このアーキテクチャは、障害に強く、トラフィックの増減に柔軟に対応できます。
実践
略
一問道場
問題 #408
あるeコマース会社がITインフラを刷新し、AWSサービスを使用することを計画しています。同社のCIOは、ソリューションアーキテクトに、シンプルで高可用性かつ疎結合の注文処理アプリケーションの設計を依頼しました。このアプリケーションは、注文を受け取り処理した後、Amazon DynamoDBテーブルに格納する役割を担います。アプリケーションはまばらなトラフィックパターンを持ち、マーケティングキャンペーン中に注文を処理する際に遅延を最小限に抑えてスケールできる必要があります。
次のうち、要件を満たす最も信頼性の高いアプローチはどれですか?
A. Amazon EC2でホストされたデータベースに注文を受け取り、EC2インスタンスで処理する。
B. Amazon SQSキューで注文を受け取り、AWS Lambda関数を呼び出して処理する。
C. AWS Step Functionsプログラムを使用して注文を受け取り、Amazon ECSコンテナを起動して処理する。
D. Amazon Kinesis Data Streamsで注文を受け取り、Amazon EC2インスタンスで処理する。
解説
この問題では、シンプルで高可用性かつ疎結合な注文処理アプリケーションを設計するための最適なアプローチを選択する必要があります。重要な要素としては、以下の点が挙げられます:
- 高可用性: システムがダウンしないように、スケーラブルで耐障害性のあるアーキテクチャが求められます。
- 疎結合: コンポーネント間の依存関係が最小化されており、スケールしやすく、障害発生時にも影響を最小限に抑えられること。
- スケーラビリティ: マーケティングキャンペーンなどの高トラフィックに対応できるように、トラフィック量に応じてスケールアップまたはスケールダウンできること。
これらの要素を考慮した上で、各選択肢を解説します。
選択肢の評価
A. Amazon EC2でホストされたデータベースに注文を受け取り、EC2インスタンスで処理する。
- 問題点: EC2インスタンスを使用する方法は、スケーラビリティに制限があり、アプリケーションが急激にスケールする場合や障害が発生した場合に柔軟性が欠けます。高可用性や疎結合の要件に最適ではありません。
B. Amazon SQSキューで注文を受け取り、AWS Lambda関数を呼び出して処理する。
- 最適な選択肢:
- 高可用性: Amazon SQSは分散型で、耐障害性が高く、メッセージが失われることはありません。
- 疎結合: SQSとLambdaを使用することで、注文受け取りと処理の間に明確な分離ができ、異常が発生しても他の部分への影響を最小限に抑えられます。
- スケーラビリティ: Lambdaは自動的にスケールし、負荷が増えても適切に対応できます。
- コスト効率: Lambdaはリクエスト数に応じて課金され、トラフィックが少ない時はコストを抑えられます。
C. AWS Step Functionsプログラムを使用して注文を受け取り、Amazon ECSコンテナを起動して処理する。
- 問題点: Step FunctionsとECSコンテナの組み合わせはスケーラブルで強力ですが、セットアップが複雑であり、またLambdaに比べて管理が必要となります。シンプルなアーキテクチャを求めている場合、オーバーヘッドが増える可能性があります。
D. Amazon Kinesis Data Streamsで注文を受け取り、Amazon EC2インスタンスで処理する。
- 問題点: Kinesisはリアルタイムデータストリーミングに強力ですが、EC2インスタンスを使用することで、スケーリングの柔軟性がやや欠け、管理の手間が増えます。また、注文処理のシンプルさを求めている場合には過剰なソリューションとなります。
結論
Bは最も信頼性が高く、シンプルでスケーラブルな解決策です。Amazon SQSとAWS Lambdaを使用することで、注文の受け取りと処理を効率的に分離し、高可用性と疎結合を実現できます。また、Lambdaは自動的にスケールし、負荷の増加に対応できるため、マーケティングキャンペーンなどのピークトラフィックにも適切に対応できます。
したがって、Bが最適な選択肢です。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/17ad7ae8-88e2-80da-863a-fecc4767bbe2
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章