スポンサーリンク

【図解】AWSでのスケーリングを徹底解説【Auto Scaling】

★悩み★
・AWSでのスケールアウトってどう実現するのだろうか。
・Amazon RDSでスケールアウトってできるのだろうか。
・Amazon DynamoDBでスケースアウトってできるのだろうか。

こういった「悩み」に答えます。

★本記事の内容★
(1) スケーリングとは何か?を解説
(1) AWSでのスケーリング方法をご紹介
(2) Amazon RDSでのスケーリング方法をご紹介
(3) Amazon DynamoDBでのスケーリング方法をご紹介

これからご紹介する「AWSでのスケーリング」を理解しておくことで、「AWS 認定 ソリューションアーキテクト アソシエイト」の資格に合格しやすくなります。

本記事の前半では「スケーリングとは何か」を具体的に解説し、本記事の後半では「各AWSサービスでのスケーリングを実現する方法」をご紹介します。

この記事を読み終えることで、「AWSでのスケーリングをどのようにして実現するのか」を理解した状態になります。

「AWSとは何か?」や「AWSの基礎的なサービスは何か?」を知りたい方は、以下の記事をご覧ください。

スケーリングとは何か?

スケーリングとはどのような定義なのかを説明します。

★スケーリングとは★
ソフトウェアやアプリケーションなどの性能や処理能力を増減させることをスケーリングと言います。

スケーリングを利用することで以下のようなことができます。

★スケーリングでできること★
・ネットショップのセール時にアクセスが急増した場合、ウェブサーバー数を増やすことができる。その結果、アクセスができない状態を防ぐことができる。

・ネットショップのセール終了時にアクセスが減少した場合、ウェブサーバ数を減らすことができる。その結果、無駄な費用を削減できる。

AWSのスケーリングでは、以下の2つのタイプがあります。
・時間指定:休日の12時から15時といった時間指定でスケーリング
・量指定:あるサーバーのCPU使用率100%状態が10分続いたらスケーリング

以上が、「スケーリングとは何か?」となります。

AWSでのスケーリング方法

AWSでのスケーリング方法に関して説明します。

AWSでスケーリングを行うためには2つのサービスが必要です。

★AWSでのスケーリングに必要なサービス★
・Amazon CloudWatch【モニタリングの実施】
・Amazon Auto Scaling【インスタンスの増減】

以降で、上記2つのサービスに関して説明します。

Amazon CloudWatchによるモニタリング

AWSに配備したインスタンスの稼働率などをAmazon CloudWatchで監視できます。

★Amazon CloudWatchの機能★
・メトリクスのモニタリング
・ログのモニタリング
・アラーム
・イベント

Amazon CloudWatchが有する主な機能である上記4機能に関して説明します。

メトリクスのモニタリング

Amazon CloudWatchを使うことで、「システムのパフォーマンスに関するデータ(CPUやIOなどの平均使用率)」を収集することができます。

ただし、EC2内で動作しているプロセスの死活監視はできません。

ログのモニタリング

Amazon CloudWatchは、AWSサービスのログを収集し、指定した場所(S3など)に保存する機能を有しています。

アラーム

指定した期間(例えば14時から15時)にあるメトリクス(例えばCPU平均使用率)が、一定期間(例えば10分間)設定した閾値(平均使用率が90%)を超えたら、メールで通知などができます。

イベント

AWSサービスのログ(例えばLambdaの実行ログ)から、特定の単語を検出した場合(例えばerror)に、あるAWSサービスを実行することができる機能です。

以上のように、Amazon CloudWatchを利用することでAWSで構築したシステムの負荷を監視できます。

また、モニタリングの結果に応じて、他サービスに処理を依頼することができます。

Amazon Auto Scalingによるインスタンスの増減

Amazon Auto Scalingを使うことでインスタンスを増減することができます。

★Amazon Auto Scalingとは★
Auto Scalingは、指定された条件に基づきインスタンスを増減することができます。

Amazon Auto Scalingによるスケーリングの方法は3つです。
・時間指定:深夜はEC2のインスタンスを減少させる。
・動的:Amazon CloudWatchと連携しEC2のCPU使用率に基づきスケーリングさせる。
・予想的:機械学習に基づきスケーリングさせる。

Amazon Auto Scalingを利用する際は、以下を注意しましょう。

★Auto Scalingを利用する際の注意点★
・スケールアウトは迅速に行うこと。(システムダウンを回避するため)
・スケールインはゆっくり行うこと。(急な性能劣化は利用者に影響あり)
・ライフライクルフックを使用することで、削除対象となるインスタンスを一定時間残した後に削除できる。
 → 動的追加したマシンのログを収集したい場合に利用しましょう。

Auto Scaling/CloudWatch/Elastic Load Balancingを組み合わせることで、以下のようにAWSでの動的スケーリングができます。


「Elastic Load Balancingとは何か?」を知りたい方は、以下の記事をご覧ください。

以上が、「Amazon Auto Scalingによるインスタンスの増減」となります。

Amazon RDSでのスケーリング方法

Amazon RDSでのスケーリング方法に関して説明します。

Amazon RDSでは、スケールアップとスケールダウンができます。

microタイプからxlargeタイプまでの全タイプを選び、スケールアップができます。


リードレプリカを使うことで、データベースの読み込みに対してはスケールアウトができます。

上図のようにデータベースへの書き込みに対しては、スケールアウトできません。

以上が、「Amazon RDSでのスケーリング方法」となります。

Amazon DynamoDBでのスケーリング方法

Amazon DynamoDBでのスケーリング方法に関して説明します。

DynamoDBでは、CloudWatchとAuto Scalingを利用することでスケーリングができます。

DynamoDBのスループットをCloudWatchで監視し、ユーザーが設定した閾値を超えた場合、Auto ScalingによりDynamoDBのスケーリングを実現します。


以下の点を注意することで、DynamoDBではより効果的なスケーリングができます。

★ポイント★
パーティションキーにするべきもの
→ ユーザーIDやデバイスID(一意性があるもの)

パーティションキーに不適切なもの
→ ステータスコードや項目の作成日付(一意性がないもの)

以上が、「Amazon DynamoDBでのスケーリング方法」となります。

【まとめ】AWSでのスケーリングを徹底解説【Auto Scaling】

今回の記事を通して、「AWSでのスケーリング」をご紹介することで、以下の悩みを解消しました。

★悩み★
・AWSでのスケールアウトってどう実現するのだろうか。
・Amazon RDSでスケールアウトってできるのだろうか。
・Amazon DynamoDBでスケースアウトってできるのだろうか。

AWSでのスケーリングとは?」と悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。

コメント

タイトルとURLをコピーしました