type
status
date
slug
summary
tags
category
icon
password
理論
1. 3層アーキテクチャ
- フロントエンド:ユーザーインターフェース(UI)や静的コンテンツ(HTML, CSS, JS)を提供。
- ミドルティア:ビジネスロジックやAPI、アプリケーションサーバーなど。
- ストレージ層:データベース、ファイルストレージ、キャッシュシステム。
2. AWSでのスケーラビリティの向上方法
- Amazon EC2のAuto Scaling:トラフィックに応じて自動的にインスタンス数を増減。アプリケーションの負荷に合わせてスケールする。
- Amazon Elastic Load Balancer (ELB):複数のインスタンスにトラフィックを分散し、高可用性を提供。
- Amazon CloudFront:CDN(コンテンツ配信ネットワーク)を利用して静的コンテンツをキャッシュし、ユーザーに迅速に配信。
3. コンテナとサーバーレス
- AWS Fargate:サーバーレスでコンテナを管理でき、インフラの管理から解放される。スケーラブルで高可用性を提供。
- Elastic Beanstalk:アプリケーションのデプロイや管理を簡素化するマネージドサービス。オートスケーリング機能を内蔵。
4. データベースのスケーラビリティ
- Amazon Aurora:高性能なリレーショナルデータベース。Auto Scaling機能を使って、読み取りリクエストに応じてリードレプリカを自動でスケール。
- AWS Database Migration Service (DMS):データベースの移行や再プラットフォームに使用。オンプレミスからAWSへのデータ移行をサポート。
5. 運用負荷の軽減
- マネージドサービスの活用:Amazon AuroraやElastic Beanstalkなど、インフラ管理の負担を軽減するマネージドサービスを活用する。
- オートスケーリング:アプリケーションやデータベースの負荷に合わせて自動的にリソースを調整する機能。
6. データベースのパフォーマンス向上
- リードレプリカ:読み取り負荷を分散させ、パフォーマンスを向上させる。
- キャッシュの活用:頻繁にアクセスされるデータをキャッシュすることで、データベースへの負荷を軽減。
これらの知識を組み合わせることで、アプリケーションのスケーラビリティとパフォーマンスを最適化できます。
実践
略
一問道場
質問 #477
ある企業は、オンプレミスのデータセンターで3層ウェブアプリケーションを運用しています。フロントエンドはApacheウェブサーバーで提供され、ミドルティアはモノリシックなJavaアプリケーション、ストレージ層はPostgreSQLデータベースです。
最近のマーケティングプロモーション中に、顧客はアプリケーションを通じて注文を行うことができませんでした。原因の分析の結果、すべての層が過負荷となり、アプリケーションが応答しなくなり、データベースは読み取り操作のために容量制限に達していたことが分かりました。この企業には、今後も似たようなプロモーションが予定されています。
ソリューションアーキテクトは、AWSへの移行計画を立て、この問題を解決する必要があります。このソリューションは、スケーラビリティを最大化し、運用負荷を最小化する必要があります。
どの組み合わせのステップがこの要件を満たしますか?(3つ選択してください。)
A. フロントエンドをリファクタリングして、静的アセットをAmazon S3にホストします。Amazon CloudFrontを使用して、フロントエンドを顧客に提供します。フロントエンドをJavaアプリケーションに接続します。
B. フロントエンドのApacheウェブサーバーをAmazon EC2インスタンスにリホストし、Auto Scalingグループに配置します。Auto Scalingグループの前にロードバランサーを使用します。Amazon Elastic File System(Amazon EFS)を使用して、Apacheウェブサーバーが必要とする静的アセットをホストします。
C. JavaアプリケーションをAWS Elastic Beanstalk環境にリホストし、オートスケーリングを含めます。
D. Javaアプリケーションをリファクタリングし、Dockerコンテナを開発してJavaアプリケーションを実行します。AWS Fargateを使用してコンテナをホストします。
E. AWS Database Migration Service(AWS DMS)を使用して、PostgreSQLデータベースをAmazon Aurora PostgreSQLデータベースに再プラットフォームし、Aurora Auto Scalingを使用してリードレプリカを作成します。
F. PostgreSQLデータベースをAmazon EC2インスタンスにリホストし、オンプレミスのサーバーの2倍のメモリを搭載します。
解説
この問題では、企業のウェブアプリケーションのパフォーマンスの問題を解決するために、AWS への移行を計画する方法を選択することが求められています。アプリケーションが過負荷によりクラッシュし、データベースの読み取り操作が容量制限に達していることがわかっており、これらの問題を解決するためにスケーラビリティを最大化し、運用負荷を最小化する必要があります。
解決策のステップごとに解説します:
A. フロントエンドをリファクタリングして、静的アセットをAmazon S3にホストします。Amazon CloudFrontを使用して、フロントエンドを顧客に提供します。フロントエンドをJavaアプリケーションに接続します。
- 解説:
- スケーラビリティの向上:静的コンテンツ(画像、CSS、JavaScriptなど)を Amazon S3 にホストし、Amazon CloudFront を使用してコンテンツをキャッシュすることで、アプリケーションの負荷を軽減できます。
- 運用負荷の最小化:S3 と CloudFront はフルマネージドサービスであり、これによりインフラストラクチャの管理負担が減少します。
B. フロントエンドのApacheウェブサーバーをAmazon EC2インスタンスにリホストし、Auto Scalingグループに配置します。Auto Scalingグループの前にロードバランサーを使用します。Amazon Elastic File System(Amazon EFS)を使用して、Apacheウェブサーバーが必要とする静的アセットをホストします。
- 解説:
- EC2によるリホスティング:既存のApacheウェブサーバーを Amazon EC2 上にリホストし、Auto Scaling を使用してトラフィックに応じて自動でインスタンス数をスケーリングします。
- Elastic File System (EFS):静的アセットを EFS にホストすることで、複数の EC2 インスタンスから共有可能にし、可用性とパフォーマンスを向上させます。
- 負荷分散:Elastic Load Balancer (ELB) を使うことで、トラフィックの分散と高可用性を実現できます。
C. JavaアプリケーションをAWS Elastic Beanstalk環境にリホストし、オートスケーリングを含めます。
- 解説:
- Elastic Beanstalk は、Javaアプリケーションを簡単にデプロイし、スケーリング、監視、管理を自動化するフルマネージドサービスです。
- オートスケーリング:トラフィックの増加に応じて、自動でアプリケーションインスタンスをスケーリングします。
- 運用負荷の最小化:Elastic Beanstalk ではアプリケーションのデプロイと管理が簡素化され、インフラストラクチャの管理が不要になります。
D. Javaアプリケーションをリファクタリングし、Dockerコンテナを開発してJavaアプリケーションを実行します。AWS Fargateを使用してコンテナをホストします。
- 解説:
- コンテナ化:アプリケーションを Docker コンテナとしてデプロイすることで、移植性が向上し、さまざまな環境で簡単に実行できます。
- AWS Fargate:Fargate は、サーバーレスコンテナサービスで、インフラ管理なしでコンテナを実行できます。これにより、スケーラビリティと運用負荷が大幅に軽減されます。
- リファクタリングの必要性:Java アプリケーションをコンテナ化するためには、アプリケーションのコードや構成を変更する必要があるため、この選択肢はやや高コストな場合があります。
E. AWS Database Migration Service(AWS DMS)を使用して、PostgreSQLデータベースをAmazon Aurora PostgreSQLデータベースに再プラットフォームし、Aurora Auto Scalingを使用してリードレプリカを作成します。
- 解説:
- Aurora PostgreSQL は高可用性と高スケーラビリティを提供するデータベースサービスです。これを使うことで、データベースのパフォーマンスを向上させ、スケーラビリティを確保できます。
- Aurora Auto Scaling:読み取りリクエストの増加に応じて、自動でリードレプリカをスケーリングすることができ、データベースのパフォーマンスを最適化できます。
- AWS DMS を使用して、オンプレミスの PostgreSQL データベースを Aurora に移行することが可能です。
F. PostgreSQLデータベースをAmazon EC2インスタンスにリホストし、オンプレミスのサーバーの2倍のメモリを搭載します。
- 解説:
- EC2によるリホスティング:データベースを EC2 インスタンスにリホストして、メモリを増やすことでパフォーマンスを向上させる方法です。しかし、この方法ではスケーラビリティが限られており、長期的な解決策としては不十分です。
- 運用負荷の増加:EC2 インスタンス上でのデータベース管理が必要であり、スケーリングの柔軟性が低く、運用負荷が高くなります。
最適な選択肢
- A, C, E が最も適切な解決策です。
- A と C はフロントエンドとアプリケーション層のスケーリングに対応し、負荷分散とオートスケーリングを提供します。
- E はデータベースのスケーリングとパフォーマンス向上に貢献し、Aurora と Auto Scaling を使用して読み取りのスケーラビリティを確保します。
まとめ
- A: 静的アセットのホスティングとCDNの利用
- C: アプリケーションのリホスティングとオートスケーリング
- E: 高性能なデータベースに移行し、スケーラビリティを確保
これにより、スケーラビリティが向上し、運用負荷が最小化され、プロモーション中のパフォーマンス問題を解決できます。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/17cd7ae8-88e2-80ea-85a0-c74dfb00d19d
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章