こんにちは。フロムスクラッチのインフラチームに所属している山崎です。
今回は「大規模SaaS運用におけるAWSコスト削減」について投稿させて頂きます。
AWSのコスト管理に悩んでいる方は多いんじゃないかと思います。時間あたり費用は微々たるものですが、積もり積もると「え、こんなに使ったっけ?」ってなりますよね。
以下、私が実施してきたコスト削減の方法を大まかに挙げていきます。
(1)不要なサービスを停止・削除する。
簡単にAWS費用を分けると下記のようになります。
1.サービス利用料
2.サポート費用
3.税金
3項目とも使用時間が長いほど請求されるので、身も蓋もない言い方をすれば、いかに使わないかがコスト削減の鍵になります。影響確認を実施して必要な手順を踏んだ後、ガンガンと停止・削除を進めていきましょう!(じゃないと、コストは下がりません)
◆AWSサポートプラン
(2)本番環境と開発環境でサポートのプランを分ける(アカウントを分ける)
(1)で示したサポート費用はプランが4つに別れ、それぞれでサービス・費用が異なります。環境に合わせた適切なプランを選択しましょう。
https://aws.amazon.com/jp/premiumsupport/signup/
例えば、本番環境は「ビジネス」か「エンタープライズ」プランのアカウント、開発環境は「開発者」プランのアカウントに分けるだけでコストを削減できます。
◆アカウント作成
(3)RIを利用する。
RI(reserved instance)を利用することで、通常のオンデマンド費用を割引額で利用することができます。RIは、EC2,RDS,Redshift,DynamoDB,Elasticacheの各種サービスで適用することが可能です。割引額は、EC2でだいたい20%~50%です。ただし、1年または3年の長期契約となるので、サービスや財務の見通しを考えて購入しましょう。AWSは変化が早く年単位で新世代のインスタンスがリリースされることがあるので、期間1年のRIを支払い方法「一部前払い」で購入することをオススメします。「一部前払い」も「全前払い」もあまり割引率が変わりませんので、キャッシュアウトが少なくてすむ「一部前払い」のほうが良いでしょう。
購入後のRI数の確認についてですが、RIとオンデマンドインスタンス数がリアルタイムで分かるように監視ツールを整えれば、現状確認をスムーズに行うことができます。
最後になりますが、EC2のRIは「統合」「分割」ができます。例えば、同時購入した「m4.xlarge」が2つあれば、「m4.2xlarge」に「統合」でき、その逆に「m4.2xlarge」を2つの「m4.xlarge」に分割できます。この機能を利用できる機会ができたら、コスト削減に利用しましょう。
◆EC2 リザーブドインスタンス
(4)夜間・休日はサーバを止める。
主に開発環境の話になりますが、使わない時間帯のサーバを自動で止め、コストを削減しましょう。
(5)過剰な冗長設定を外す。
RDSの「マルチAZ」が本当に必要か、リードレプリカの数やELBに繋がったEC2の数は妥当か検討しましょう。「マルチAZ」だと「シングルAZ」の2倍の費用を払う必要があります。サービスローンチ当初はインシデントを防ぐため「マルチAZ」を選びがちですが、必要ないと判断できたら「シングルAZ」にしましょう。
(6)定期的に性能を見直す。
リソース状態を見て、サーバの性能が過剰になっていないか検討しましょう。(インシデントを防ぐため、その逆も実施しましょう)EC2の性能は高すぎないか、数を集約できないか、Redshiftのノード数は適切か、などです。ただし、性能を落とすことはサービス影響のリスクがあるので慎重に実施しましょう。
(7)不要なAMIやスナップショットは定期的に削除する。
地味ですが、不要なバックアップ類は管理されないと増え続けます。1ヶ月に1回など定期的な削除機会を作り、定期削除を実施しましょう。
以上、AWSインフラのコスト削減方法について記載しました。ご覧頂きありがとうございました。