[クラウド活用パターン辞典〜Amazon Web Servicesを使い倒す!〜]
AWSにおけるWebシステムの負荷対策【第2回】
2017年3月27日(月)清野 剛史(クラスメソッドAWS事業部ソリューションアーキテクト)
前回はWebシステムを安全に運用するために必要な「可用性」の確保について考えた。今回は可用性と共にWebシステムでは重要なポイントである「負荷対策」について考えたい。
スパイク対応はある程度予測可能、事前に対策を
AutoScalingを使用する上で注意する点がある。「急激にアクセスが集中する“スパイク”への完璧な対応は難しい」ということだ。ニュースサイトへの記事の掲載や、TVのCM、LINEへの情報配信、SNSへの拡散などで起こるスパイクでは、数十秒から数分でトラフィックが数倍、数十倍に膨れ上がる。これに対し、EC2が立ち上げるまでには、汎用的な「m3」系で3〜5分、バースト対応した「t2」系でも2〜3分はかかる。最初のスパイクに間に合わないことが充分に考えられる。
ただ、スパイクの発生は事前に予測できる場合が多い。TVのCMや番組での紹介は放送時間が決まっているし、LINEやニュースサイトへの配信であれば、リリースやアップデートなどの公式発表直後から数時間の間である場合がほとんどだ。安全を期し、そうした時間帯に合わせてEC2の台数を事前に増やすよう、プロビジョニングサービスの「CloudFormation」で「ScheduledAction」を設定したり、イベントドリブンなアプリケーションの開発・実行環境である「Lambda」をスケジュールで走らせたりしておけば、スパイクに対応できる。
筆者の経験からは、予測するアクセス数の5倍程度のリクエストに耐えられるように台数を増やしておけば、まず問題は起こらない。さらにスパイクの場合、およそ5〜24時間くらいの猶予を持って縮退に入るように設定しておくと良いだろう。
ロードバランサーは暖機運転の必要性を見極める
AutoScalingのように複数の可変サーバーをバックグラウンドに持つシステムの場合、アーキテクチャーとしては、クライアントがアクセスするフロント部にはロードバランサーを配置し、リクエストが適切に分散されるよう設計する。AWSでは、「ELB(Classic Load Balancer)」もしくは「ALB(Application Load Balancer)」が、その役割を果たす。オンプレミスのロードバランサーと異なり、ロードバランサー自身が負荷によってスケールするのが特徴だ。つまり、AutoScaling同様、一般的な負荷増大に対しては運用側で何か対策を施す必要はない。
会員登録(無料)が必要です
- > 前へ
- 1
- 2
- 3
- 4
- 次へ >
- AWSのAIサービスを使って自動化を進める【最終回】(2017/08/07)
- AWSにおけるシステム障害通知を自動化する【第10回】(2017/07/24)
- 「AWS IoT」でソリューションを実現する:第9回(2017/07/03)
- AWSでの環境構築の自動化と開発環境の管理【第8回】(2017/06/19)
- AWSにおける認証の仕組みを活用する【第7回】(2017/06/05)