type
status
date
slug
summary
tags
category
icon
password
理論
1. Auto Scaling
Auto Scalingは、アプリケーションやサービスが需要の増減に応じて自動的にインスタンスを追加または削除できるAWSの機能です。これにより、ピーク時のリソース不足を防ぎ、非ピーク時のコストを削減できます。特に、EC2インスタンスや他のサービス(例:Amazon ECS)でスケーラビリティを確保するために使用されます。
- オートスケーリングの設定: スケーリングポリシーやターゲットのCPU使用率、メモリ使用率などのメトリクスを基にインスタンスの数を自動調整します。
- 負荷に応じたインスタンス管理: トラフィックの増加に対応するために、インスタンス数を増やし、トラフィックが落ち着いたらインスタンス数を減らすことができます。
2. Amazon DynamoDBのオートスケーリング
DynamoDBは、AWSが提供するフルマネージド型のNoSQLデータベースです。DynamoDBのオートスケーリングは、リクエストの負荷に応じて読み取りおよび書き込みキャパシティを自動的に調整する機能です。
- キャパシティモード: DynamoDBには「プロビジョニング」および「オンデマンド」の2つのキャパシティモードがあります。オートスケーリングはプロビジョニングモードで使用されます。
- オートスケーリングの利点: トラフィックの急増時に自動的にキャパシティを増加させ、過剰なリソース使用を防ぎます。これにより、過負荷による遅延やスロットリングを回避できます。
3. Amazon SQS (Simple Queue Service) とAWS Lambda
Amazon SQSは、メッセージキューサービスで、分散システムやマイクロサービス間のメッセージングをサポートします。負荷が高いときに一時的にメッセージをキューに保持し、システムが処理できる速度で順次処理することができます。
- キューによる負荷分散: SQSを使うことで、システムがピーク時でも安定してメッセージを処理できるようになります。高負荷時にメッセージを一時的に保持し、処理できるタイミングでLambda関数などで処理を行います。
- 非同期処理: Lambda関数は非同期でメッセージを処理できるため、同期的な負荷の高い処理を遅延させて、システム全体の負荷を軽減します。
4. システムアーキテクチャのスケーラビリティとコスト管理
- スケーラビリティ: 負荷に応じて自動的にリソースを増減させることで、システムが高負荷に耐え、トラフィックの急増に対応できます。
- コスト効率: オートスケーリングやオンデマンドのリソース利用は、ピーク時にのみリソースを増加させ、非ピーク時には削減するため、リソースの無駄を省きます。
結論
- Auto Scaling と DynamoDBのオートスケーリング の組み合わせは、スケーラブルでコスト効率の良いアーキテクチャを提供します。
- SQSとLambda の使用により、ピーク時におけるリソース負荷を分散し、システム全体の可用性とパフォーマンスを向上させます。
これらの技術を適切に利用することで、高負荷時でもシステムの安定性を保ちながら、コスト効率よく運用することができます。
実践
略
一問道場
問題 #382
季節労働者向けの求人ボードを提供する企業が、トラフィックと使用量の増加を見ています。バックエンドサービスは、Amazon EC2インスタンス2台をApplication Load Balancerの背後で実行し、データストアとしてAmazon DynamoDBを使用しています。ピークシーズン中、読み取りおよび書き込みのトラフィックが遅くなっています。
ピークシーズンを処理するためのスケーラブルなアプリケーションアーキテクチャを、最小の開発労力で提供するオプションはどれですか?
A. バックエンドサービスをAWS Lambdaに移行し、DynamoDBの読み取りおよび書き込みキャパシティを増加させる。
B. バックエンドサービスをAWS Lambdaに移行し、DynamoDBをグローバルテーブルを使用するように設定する。
C. バックエンドサービスにAuto Scalingグループを使用し、DynamoDBにオートスケーリングを設定する。
D. バックエンドサービスにAuto Scalingグループを使用し、Amazon Simple Queue Service (Amazon SQS) と AWS Lambda関数を使用してDynamoDBに書き込む。
解説
この問題に関連する解説は、アーキテクチャのスケーラビリティとパフォーマンス向上に関連しています。特に、ピークシーズン中の負荷に対応するための方法を考えることが求められます。以下に各選択肢を説明します。
A. バックエンドサービスをAWS Lambdaに移行し、DynamoDBの読み取りおよび書き込みキャパシティを増加させる
- AWS Lambdaへの移行: AWS Lambdaはサーバーレスコンピューティングサービスで、リソースの自動スケーリングが可能ですが、バックエンドサービスがどれほど複雑かによっては、Lambdaへの移行には多くの開発が必要になる場合があります。特に、ステートレスでないアプリケーションをLambdaに移行するには、再設計が必要です。
- DynamoDBのキャパシティ増加: DynamoDBは、リード/ライトキャパシティのスケールを手動で増加させることができますが、これを過剰に行うとコストがかかりますし、DynamoDBのオートスケーリング機能を活用しない場合、リソースの過不足が発生するリスクもあります。
このオプションは、開発に手間がかかり、特にDynamoDBのキャパシティを手動で増加させることは最適ではありません。
B. バックエンドサービスをAWS Lambdaに移行し、DynamoDBをグローバルテーブルを使用するように設定する
- グローバルテーブルの使用: DynamoDBのグローバルテーブルは、複数リージョンにまたがるアプリケーションのデータの複製を自動的に管理し、グローバルにスケーラブルなデータアクセスを提供します。ただし、この方法は、マルチリージョンに分散されたデータの読み書きが必要な場合に最適ですが、単一リージョン内でのパフォーマンス改善には必ずしも効果的ではありません。
- Lambdaへの移行: 再度、バックエンドサービスがLambdaに適しているかの評価が必要で、サービスの設計によっては、再開発が大規模に必要になるかもしれません。
このオプションは、特にグローバルテーブルが必須でない場合にはオーバーエンジニアリングとなり、開発の負担が大きいです。
C. バックエンドサービスにAuto Scalingグループを使用し、DynamoDBにオートスケーリングを設定する
- Auto Scalingグループの使用: Auto Scalingは、EC2インスタンスの数をトラフィックに応じて自動的に調整する機能です。これにより、ピーク時のリソースを動的に増減させることができ、安定したパフォーマンスを維持できます。
- DynamoDBのオートスケーリング: DynamoDBにはオートスケーリング機能があり、トラフィックに応じて読み書きキャパシティが自動的に調整されます。これにより、負荷の変動に対応でき、コストを抑えつつスケーラビリティが向上します。
このオプションは、最小の開発努力でシステムのスケーラビリティを向上させる方法であり、特にシンプルで効率的です。
D. バックエンドサービスにAuto Scalingグループを使用し、Amazon Simple Queue Service (Amazon SQS) と AWS Lambda関数を使用してDynamoDBに書き込む
- SQSとLambdaの使用: SQSはメッセージキューサービスで、トラフィックのピーク時にメッセージをキューに積み、Lambda関数を使って処理することができます。この方法は、ピーク時の一時的なトラフィックを緩和し、処理を非同期で行うことができます。ただし、これは追加のレイテンシーを導入する可能性があり、Lambda関数の実行時間が長い場合、コストが増加することがあります。
このオプションは、スケーラブルで効果的な方法ですが、最小の開発努力で達成できるものではありません。
結論
Cのオプションが最も適しています。理由は、Auto Scaling と DynamoDBオートスケーリング を活用することで、最小限の開発努力でシステムのスケーラビリティを大幅に向上させることができるからです。この方法は、リソースの効率的なスケーリングを実現し、ピークシーズンに対応するのに最も簡単で効果的な方法です。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/178d7ae8-88e2-80d8-8a9e-e8b4587f8cb6
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章