type
status
date
slug
summary
tags
category
icon
password
理論
1. Amazon Aurora PostgreSQL
- Auroraは、Amazonが提供するフルマネージド型のリレーショナルデータベースサービスで、PostgreSQL互換のデータベースエンジンも提供しています。
- Aurora Auto Scalingは、リードレプリカの数を自動的に調整する機能です。これにより、アプリケーションの読み取りトラフィックに合わせてリソースをスケーリングできます。
2. EC2 Auto Scaling
- EC2 Auto Scalingは、アプリケーションの需要に応じてEC2インスタンスの数を自動的に調整する機能です。これにより、トラフィックが増加した際にインスタンスを追加し、トラフィックが減少した際にインスタンスを削除できます。
3. Elastic Load Balancing (ELB)
- Elastic Load Balancingは、AWSの負荷分散サービスで、アプリケーションのトラフィックを複数のバックエンドインスタンスに分散させ、可用性とスケーラビリティを向上させます。
- Application Load Balancer (ALB)は、HTTP/HTTPSトラフィックに最適化された負荷分散機能で、アプリケーション層(第7層)でのルーティングを行います。ルーティングのアルゴリズムとしては、ラウンドロビンがよく使われます。
ラウンドロビンとは
- Network Load Balancer (NLB)は、TCP/UDPトラフィックに最適化された負荷分散機能で、第4層(トランスポート層)で動作します。最小待機リクエストなどのルーティングアルゴリズムを使用することができます。
最小待機リクエストとは
最小待機リクエスト(Least Outstanding Requests)は、負荷分散アルゴリズムの一種で、リクエストを処理中の待機中のリクエスト数が最も少ないサーバーに振り分ける方式です。このアルゴリズムは、サーバーの負荷を動的に判断し、最も空いているサーバーにリクエストを割り当てるため、効率的にリソースを使用することができます。
4. Sticky Sessions(セッション維持)
- Sticky Sessions(またはセッションアフィニティ)は、同じクライアントからのリクエストを常に同じEC2インスタンスにルーティングする機能です。これにより、セッション情報が保存されている特定のインスタンスと継続的にやりとりすることができます。
5. スケーラビリティと一貫性の確保
- アプリケーションやデータベースがスケールする場合、ユーザーに一貫した体験を提供するために、セッション管理(Sticky Sessions)や適切な負荷分散の設定が重要です。
- Auroraのリードレプリカを使用して、読み取り専用のトラフィックを分散させることで、書き込みトラフィックが集中してもパフォーマンスを保つことができます。
6. オートスケーリングの対象
- Aurora Auto Scalingは、Auroraレプリカのスケーリングに関係し、Aurora書き込みインスタンスに対するスケーリングではない点に注意が必要です。書き込みインスタンス(Writer)は通常、1つのインスタンスに固定されていますが、読み取りトラフィックの増加に応じてレプリカを増やすことができます。
7. 2層のWebベース
通常、Webアプリケーションが2層(レイヤー)で構成されていることを指します。一般的に、この場合、2つの主な層は以下の通りです。
- プレゼンテーション層(クライアント層): ユーザーがインタラクトする部分です。通常、ブラウザやモバイルアプリがこの層に該当します。この層は、ユーザーインターフェース(UI)を提供し、ユーザーからの入力を受け取り、それをサーバーに送信します。
- データ層(バックエンド層): アプリケーションのビジネスロジックやデータの管理が行われる部分です。この層は、通常、サーバー上で動作しており、データベースとの通信や処理を行います。Webアプリケーションの場合、データベース(例: PostgreSQLやMySQL)とサーバーサイドのロジック(例: アプリケーションサーバー)で構成されます。
この「2層アーキテクチャ」のメリットは、プレゼンテーション層とデータ層が分離されているため、開発や管理が容易であることです。例えば、UIの変更がバックエンドに影響を与えないなど、システムの保守性が高まります。
重要な要点
- Aurora Auto Scalingを使用してAuroraレプリカをスケーリングし、読み取りトラフィックを分散させる。
- Application Load Balancer (ALB) を使用し、ラウンドロビンでトラフィックを均等に分配。
- Sticky Sessionsを使用して、一貫したユーザー体験を提供。
実践
今後作成する予定
一門道場
シナリオ:
企業が、2層のWebベースのアプリケーションとデータベースをAWSに移行しています。現在のセットアップでは、状態を保持するアプリケーションが1台のサーバーで実行され、そのアプリケーションは別のサーバーで稼働しているPostgreSQLデータベースに接続しています。ユーザー数が大幅に増加することが予想されており、企業はAmazon Aurora PostgreSQL、Amazon EC2 Auto Scaling、およびElastic Load Balancingを利用してアプリケーションとデータベースをAWSに移行する計画です。
目標:
アプリケーションとデータベースの両方の層がスケールする中で、一貫したユーザー体験を提供するソリューションを選択すること。
選択肢:
A.
- AuroraのAuto Scaling(Auroraレプリカ用)を有効化
- Network Load Balancer (NLB) を使用し、最小待機リクエストのルーティングアルゴリズムとステッキーセッションを有効化
B.
- AuroraのAuto Scaling(Aurora書き込み用)を有効化
- Application Load Balancer (ALB) を使用し、ラウンドロビンルーティングアルゴリズムとステッキーセッションを有効化
C.
- AuroraのAuto Scaling(Auroraレプリカ用)を有効化
- Application Load Balancer (ALB) を使用し、ラウンドロビンルーティングアルゴリズムとステッキーセッションを有効化
D.
- AuroraのAuto Scaling(Aurora書き込み用)を有効化
- Network Load Balancer (NLB) を使用し、最小待機リクエストのルーティングアルゴリズムとステッキーセッションを有効化
解説
1. アーキテクチャの構成
このアプリケーションは、オンプレミスからAWSに移行される2層のWebベースのアーキテクチャです。具体的には、以下の構成が予定されています:
- アプリケーション層:状態を保持するアプリケーションが1台のEC2インスタンスで動作しています。
- データベース層:PostgreSQLデータベースが別のサーバーで稼働していますが、AWSのAurora PostgreSQLに移行されます。
2. アプリケーションのスケーリング
アプリケーション層は、ユーザー数が増加するにつれてスケールアウト(水平スケーリング)する必要があります。これを実現するために、EC2 Auto Scalingを使用します。また、負荷分散のためには**Elastic Load Balancing (ELB)**を使用し、アプリケーションのトラフィックを複数のインスタンスに分散します。
3. データベースのスケーリング
データベース層では、Amazon Aurora PostgreSQLを使用します。Auroraはリードレプリカを使用して読み取り処理を分散し、Aurora Auto Scalingを有効にすることで、レプリカ数を自動で調整できます。
A. AuroraリプリカのAuto Scalingを有効にする、Network Load Balancerを使用
- Network Load Balancer (NLB) は高いトラフィックを処理するために設計されていますが、リクエストの最小待機時間(least outstanding requests)でトラフィックを分散します。NLBは通常、TCP/UDPトラフィックに最適ですが、状態保持型のWebアプリケーションで「Sticky Sessions」を使用する場合、Application Load Balancer (ALB) がより適しています。
- この選択肢は、状態保持型のアプリケーションとトラフィック管理には不適切です。
B. AuroraライターのAuto Scalingを有効にする、Application Load Balancerを使用
- AuroraのライターインスタンスにAuto Scalingを有効にすると、書き込み操作の負荷を分散できますが、ライターのスケーリングは通常、特定の書き込み操作を分散するために使用されます。このシナリオでは、読み取り専用の操作が主であり、リーダーのスケーリングが必要です。
- ALBはWebアプリケーションのロードバランシングに適しており、状態保持(Sticky Sessions)を活用する場合にも最適です。
C. AuroraリプリカのAuto Scalingを有効にする、Application Load Balancerを使用
- Auroraリプリカを使用することで、読み取り専用のリクエストを複数のインスタンスに分散できます。また、ALBはHTTP/HTTPSトラフィックの処理に優れており、状態保持型のセッション管理(Sticky Sessions)もサポートしています。この選択肢は、Webアプリケーションのスケーラビリティと一貫したユーザー体験を提供するために最適です。
D. AuroraライターのAuto Scalingを有効にする、Network Load Balancerを使用
- AuroraライターのAuto Scalingを使用する場面では、書き込み操作にフォーカスする必要があり、このシナリオではリードレプリカのスケーリングが重要です。さらに、NLBは状態保持型アプリケーションには適していません。
5. 最適解
最も適した選択肢はCです。Auroraリプリカを使用し、ALBでトラフィックを管理することが、アプリケーション層とデータベース層をスケーラブルに保ち、ユーザー体験の一貫性を確保します。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/153d7ae8-88e2-8014-a43c-f54357d7cff8
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章