SRE部 佐竹です。
今回は コスト削減サービスのお知らせと共に、AWS におけるコスト削減とは何かということについてお話しします。
はじめに
2020年9月4日(金) 以下にご紹介する通りコスト削減をサービスとして公開しました。
コスト削減サービスは AWS 利用料を最適化することで、対象 AWS アカウントのコスト削減を実現するものです。
本サービスは私が「コアアドバイザー」として掲載されております。これは過去すべてのコスト削減案件に私が携わってきたということと、社内の AWS アカウントのコスト最適化を現在も実行し続けているためでして、この知見をもってお客様に価値を提供させて頂きたいと考えております。もしご興味のある方いらっしゃいましたら、是非お問い合わせください!
AWS におけるコスト削減とは?
AWS におけるコスト削減を大別すると、およそ「4つ」の手法に分類できます。以下にそれぞれがどのような手法なのか詳細を記載いたします。
補足しますと、実案件においてはこれら4つの手法の実施前に現状把握のための「分析フェーズ」を設けることになります。
1. 利用していないリソースを洗い出し削除する
1つ目は、「未使用リソース」の発見と削除です。4つのうち一番上にこれが来ているのは、最もコスト削減効果が高いためとなります。
以下が実例となります。なお、実例は「全てではなく一部をご紹介」するものです。この他にもコスト削減の手法は存在します。
- 起動しているが、実際は利用されていない EC2 Instance がある場合それを停止もしくは削除する
- 長期間停止している EC2 Instance を AMI 取得後に削除する
- 一定期間以上経過した過去の Snapshot とそれに紐づく AMI を削除する
- 遊離しており Available 状態となっている EBS Volume を削除する
- 遊離しており、利用されていない Elastic IP を開放する
- EC2 Instance が1台も紐づいていない ELB を削除する
- 検証環境における RDS の Multi-AZ オプションを外してシングル構成とする
- 長期間利用されていない RDS db.instance を Snapshot 作成後に削除する
利用されていないリソースを探し出して削除することによって、無駄なコストを削減できます。特に巨大な Instance Type の EC2 Instance や、巨大な EBS Volume はコスト削減の効果が高いため積極的に検討していきたい対象となります。
2. 利用中のリソースのスペックを見直す
2つ目は、「より適切なスペックや台数への変更(利用中のリソースのスケールダウン、スケールイン)」となります。これも非常に効果が高い手法です。
例えば、m5.8xlarge の EC2 Instance が1台あるとして、これを m5.4xlarge に変更できれば EC2 Instance のランニングコストは半額(50%オフ)になります。もし m5.2xlarge まで下げることができるなら、コストは75%オフです。
以下が実例となります。
- 起動中の EC2 Instance の Instance Type を現在よりも低いものに変更する
- AutoScaling の実行台数を減らす
- EBS Volume の PIOPS(io1/io2) のオプションを利用せず gp2 で稼働する
- EBS Volume の Disk サイズを縮小する(より小さいサイズの Volume にデータをコピーする)
- 環境ごとに CLB を複数台運用するのではなく、ALB を活用してホストベースルーティングによる集約を実施する
- WorkSpace の Bundle Type をより低いものに変更する
- Aurora Cluster の ReadReplica の台数を減らす
- S3 において Glacier へのアーカイブを行うか、Intelligent Tiering を活用する
なお、EC2 Instance のスペックが適正かどうかは AWS Compute Optimizer によって判断が容易に可能となります。よろしければ合わせて以下の記事をご参考ください。
3. 利用中のリソースの稼働時間を見直す
3つ目は主に Cloud Automator の活用による稼働時間の適正化です。
Cloud Automator は有償の SaaS ですが、弊社 pieCe サービスをご契約頂いているお客様では Cloud Automator が無料でご利用頂けます。Cloud Automator は EC2 Instance や RDS db.instance の夜間停止をスケジューリングして実行することが容易に可能です。なお、Cloud Automator は日本の祝日カレンダー機能を持っていますため、祝日に起動ジョブをスキップすることも可能です。
Cloud Automator を積極的に活用することで、検証環境やステージング環境のコスト削減を実現します。夜間&土日祝停止の効果ですが、およそ70%のディスカウント効率があります。実際に計算してみましょう。
22営業日のうち毎日10時間のみ稼働する場合、EC2 Instance の稼働時間は220時間となります。31日まである月と仮定すると、220時間/744時間でコストは29.6%となり、この後に紹介します Savings Plan や Reserved Instance よりもディスカウント効果が高いことがわかります。
以下が実例となります。
- Cloud Automator の機能で EC2 Instance を夜間&土日祝に停止する
- Cloud Automator の機能で RDS db.instance を夜間&土日祝に停止する
- Cloud Automator の機能で EC2 Instance を夜間は低スペックに、日中帯は高スペックに変更する
- Cloud Automator の機能でバックアップ用 AMI の管理世代数を限定する(古いAMIは自動的に削除される)
- Cloud Automator の機能で WorkSpace を月末に削除するスケジュールを予め設定する(消し忘れの防止)
これらは Lambda でも実現可能ですが、Cloud Automator を利用することでより容易に可能で、かつソースコード保守の手間もかかりません。なお、Cloud Automator を使わない稼働時間の見直しとしては、 Spot Instance の活用があげられます。
4. 常時稼働リソースの購入オプションを買う
4つ目の手段は、常時起動を行っているリソースに対してディスカウントのオプションである Savings Plan や Reserved Instance の購入となります。これが最後の選択肢となる理由ですが、コスト削減の効果が他の3つと比較すると高くないことと、一度購入すると1年もしくは3年間の利用を強制されるためです。
しかし、長期間常時稼働のリソースではこれを買わない選択肢はありません。常時稼働のリソースを適切に選定できた後は以下にご紹介するように適切な購入オプションをご利用ください。
以下が実例となります。
- EC2: Savings Plan を購入する(もしくは Reserved Instance を購入する)
- RDS: Reserved db.instance を購入する
- Redshift: Reserved Node を購入する
- DynamoDB: Reserved Capacity を購入する
- ElastiCache: Reserved Node を購入する
- Elasticsearch Service: Reserved Instance を購入する
Savings Plan と Reserved Instance についての違いは以下のまとめておりますので、合わせてご確認ください。
また、「コスト削減サービス」のページでダウンロード可能な「Savings Plan の概要」という資料は Reserved Instance をご利用されているお客様が Savings Plan に切り替えを行うにあたっての判断ポイントをまとめた資料になっておりますので、是非ダウンロードしてご覧ください。もちろん、 Savings Plan を使い始めたいお客様にもご活用頂けます。
まとめ
今回の記事では「コスト削減サービス」のお知らせと共に、AWS におけるコスト削減とは何かということについて記載しました。AWS のコスト削減・コスト最適化に興味のある方は是非一度ご覧頂けると幸いです。
最後に今一度サービスページのご紹介をして終わりにしたいと思います。
2021年6月追記
RDS に関するコスト最適化手法を以下でまとめました。
ではまたお会いしましょう。
佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ
マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023-2024 Japan AWS Top Engineers/2020-2024 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。