Amazon Web Services ブログ
AWSのコストを削減する9の方法
みなさん、こんにちは。アマゾン ウェブ サービス ジャパン
シニアエバンジェリストの亀田です。
昨今、世の中の状況の変化に伴い、ITリソース使用量の増減の振れ幅が大きく、また予測が難しい、通常とは異なるビジネスの状況に多くのお客様が直面しています。また、その状況に対応するためリソースの流動性を確保するためにシステムをクラウドへ移行するケースが増えています。既存システムのクラウド移行にはいくつかのアプローチがありますが、稼働中のシステムを移行させる場合、移行作業の影響を最小限にするため、Lift & Shiftという手法がとられます。システムアーキテクチャやアプリケーションへの変更を極小化したなるべく同じ状態でクラウドへシステムを移行し、稼働後必要に応じて適宜アーキテクチャ、アプリケーションなどを最適化していく方法です。一度クラウド化されたシステムはそのコピーを容易に作成させることができるため、リソースが有限であるオンプレミス上でシステム変更を行うよりは効率の良い移行方法といえます。
この際、アーキテクチャやアプリケーションへの修正影響範囲を極小化したまま、AWSのコストを最適化させる方法もいくつか存在しています。これは移行にかかわらずAWSを利用している全てのお客様が検討すべきであり、かつ迅速に効果が見込められる9つのコスト最適化のためのツールとアプローチをこのブログにて3回連載で取り上げます。
- #1 未使用状態のAmazon EC2やAmazon RDS インスタンスへの支払いを止める
- #2 未使用状態の Amazon Redshift クラスターへの支払いを止める
- #3 Amazon S3 Intelligent-Tieringを有効にする
- #4 Amazon DynamoDB にはオンデマンドのキャパシティーモードを利用する
- #5 十分に活用されていないEC2 インスタンスへの支払いを止める
- #6 十分に活用されていないネットワークリソースを削除する
- #7 EC2 スポットインスタンス を利用する
- #8 Compute Savings Plans を利用する
- #9 リザーブドインスタンスを利用する
いずれも迅速なコスト最適化が実現できる方法です。いくつかはAWSリソースの設定並びに管理方法の変更を必要としますが、特に8、9は購入オプションの変更により即時コストを削減可能となります。この第一回目の記事では、#1から#3を取り上げます。
#1 未使用状態のEC2やRDS インスタンスへの支払いを止める
開発環境、テスト環境などの本番環境以外で実行されているワークロードや、ミッションクリティカルでないワークロードなどにおいて、夜間、週末および祝日で、利用していない時間帯のEC2やRDSの費用を支払っている可能性があります。AWS では、AWS CloudFormationで事前に構築された以下の図において、AWS Instance Schedulerと呼ばれるソリューションを用いることで、インスタンスのスケジューリングを容易に実行することができます。AWS Instance Schedulerは、EC2 および RDS インスタンスの開始と停止のスケジュールを簡単に設定できるシンプルなソリューションです。 このソリューションは導入が容易で、AWS利用コストだけではなく運用コストの削減にも有効です。
インスタンスのスケジューリングにより、クラウドの伸縮自在な性質を活用し、必要な分だけ料金を支払うことができます。例えば、以下のグラフでは、EC2 インスタンスのコストを削減するために週末の稼働時間を削減していることを確認できます。
環境のサイズや複雑さに応じて、実装に数分から数時間かかります。このソリューションを使用して、金曜日の午後 6 時から月曜日の午前 6 時までインスタンスをシャットダウンする場合、週末のインスタンスを実行する場合と比べて最大 35% の節約が可能です。
開始方法は次のとおりです。まず、AWS Instance Schedulerのページからクラウドフォーメーションテンプレートをダウンロードするか、AWS コンソールからAWS Instance Schedulerをインストールします。次に、ビジネス要件に基づいてスケジュールを作成し、スケジュールする対象のEC2 および RDS インスタンスにカスタムタグを適用することで導入することができます。
#2 未使用状態のAmazon Redshift クラスターへの支払いを止める
Amazon Redshift クラスターを構築している場合において、本番環境でこれらのクラスターのサイズを変更したり、本番環境以外において、夜間、週末、祝日にこれらのクラスターのシャットダウンを行わないことにより、過剰のプロビジョニングまたは未使用状態の Redshift クラスターに対して料金を支払っている可能性があります。AWS は、Redshift クラスターのサイズ変更、一時停止、再開を簡単に実施することができます。サイズ変更の機能を利用することで、マルチノードクラスターのノードを追加または削除ができます。特定の時刻にのみ使用可能にする必要があるクラスターがある場合は、そのクラスターを一時停止した後で再開することができます。クラスターが一時停止している間、オンデマンド課金は中断され、クラスターのストレージのみが課金されます。
環境のサイズや複雑さに応じて、実装に数分から数時間かかります。金曜日の午後 6 時から月曜日の午前 6 時までクラスターを一時停止しているお客様は、週末のクラスターを実行する場合と比較して、最大 35% の節約が可能です。
開始するには、AWS コンソールを使用して、Redshift クラスターごとに伸縮自在なサイズ変更や一時停止と再開のスケジュールを作成できます。
#3 S3Intelligent-Tieringを有効にする
Amazon S3 標準ストレージクラスを使用している場合、定期的に一定期間アクセスされていないオブジェクトを自動で低コストのクラスに移行させるライフサイクルポリシを設定することでコストを削減することは可能です。一方で、ライフサイクルポリシを設定するためのS3 の使用状況を分析する時間がなく、設定をしていない場合、 使用していない S3 ストレージのデータ容量に対して不必要に支払いが発生している可能性があります。S3 Intelligent-Tieringは、2 つのアクセス階層間でデータを移動することによって、ストレージコストを自動的に最適化するストレージクラスです。オブジェクトごとの監視および自動化料金が少額の場合、S3 Intelligent-Tiering はアクセスパターンを監視し、30 日間連続してアクセスされていないオブジェクトを低頻度のアクセス層に移動します。S3 Intelligent-Tieringは、アクセスパターンが変化するデータやアクセスパターンが未知のデータを格納するのに最適です。
S3標準ストレージクラスの使用量が増加しているのであれば、S3Intelligent-Tireingを有効にすることをお勧めします。この設定には数分かかります。S3 標準ストレージクラスを使いライフサイクルポリシを設定する代わりに、S3Intelligent-Tireingを有効にすることで効率よくコストを削減できます。S3Intelligent-Tieringを利用した多くのお客様が 20 ~ 30%のコストを削減することができており、理論的には最大 40% 節約できます。平均のデータ使用量が大きいほど、節約できます。
開始するには複数の方法がありますが、ここではそれを行う方法の例をいくつか示します。 アクセスパターンが不明な新しいオブジェクトについては、それらを S3 Intelligent Tieringに直接ロードし、AWS で S3 コストを自動的に最適化することができます。 また、既存のオブジェクトについては、S3 Intelligent Tieringを使用できるようにオブジェクトを移行するライフサイクルルールを作成します。
いかがでしたでしょうか。次回は#4から#6をお届けします。
また、こちらでオンデマンドウェビナーもお届けしていますので、合わせてご確認ください。
https://pages.awscloud.com/costdown-tips_2020_LandingPage_reg-event_CP.html
5月12日には、システムのクラウド移行及びAWSでのコスト最適化を主題としたオンラインライブセミナーも予定しています。合わせてご参加ください。
https://aws-seminar.smktg.jp/public/seminar/view/2113
– シニアエバンジェリスト 亀田