今日から始めるAWSのコスト最適化(2-2)

はじめに
こんにちは。技術本部 アーキテクチャ&テクノロジー部の髙橋 洋樹です。AWSのコスト最適化をテーマに、複数回に渡ってご紹介している本ブログシリーズ。前回はコストの「最適化」の6つの対策方法について下記1/2/3についてご紹介しました。まだお読みでない方は是非、こちらからご覧ください。
Ⅱ.最適化:覚えておいてほしい、6つの方法(後編)
今回も盛りだくさんの内容のため、早速残りの3つの方法(下記4/5/6)についてご紹介していきます。なお、本文中の価格情報については、オハイオ(us-east-2)リージョンにおける2024年1月時点の内容であり、今後変更になる可能性もございますのでお含みおきください。
【6つの対策方法】
- 未使用リソースの削除
- スケジュールの調整
- インスタンスの最適化
- ストレージの最適化
- 購入オプションの最適化
- アーキテクチャの最適化
4. ストレージの最適化
AWSのストレージサービスは複数のオプションを備えています。アクセス頻度や耐障害性などの要件に応じて適切なオプションを選択することでコストの最適化が期待できます。
例えばAmazon S3は用途に応じた複数のストレージクラスを備えています。2023年もAmazon S3 Express One Zoneと呼ばれる非常に低いレイテンシーをもつストレージクラスがリリースされました。クラスが多いぶん、適切に選択することが求められるのですが、標準クラスにアーカイブ用のデータを保存し続けるようなケースをたまに見かけます。標準である高頻度アクセス(Standard)クラスとアーカイブ用のクラス(S3 Glacier Deep Archive)とは保存コストが約10倍にもなるのでもったいない使い方になります。
ちなみに、S3にはアクセス頻度に応じて自動的に保存するストレージ階層を変更してくれるS3 Intelligent-Tieringというストレージクラスがあります。これだけ聞くと、全てこのクラスに保存しておけばよいのでは?と思う方が一定数いらっしゃるのですが、実際はそうではない点に注意してください。主な理由としては、128KB以下のオブジェクトは全て高頻度アクセスクラスに保存され、自動で階層を移動してもらえないことや、モニタリングコストが保存コストに追加でかかってしまうことが挙げられます($0.025/1000オブジェクト)。このことからアクセス頻度の読めないオブジェクトのみ、S3 Intelligent-Tieringに保存するのが、コストを最小化する観点では最善手となります。
では既存のバケット内のオブジェクトについて、実際にどれ位の頻度でアクセスがあるのかについては、どのように分析すればよいでしょうか。「S3ストレージクラス分析」という機能を利用することをお勧めします。
引用:How Canva saves over $3 million annually in Amazon S3 costs - AWS Storage Blog
この機能を利用することで、アクセスパターンを図のように分析してくれるため、オブジェクトをどのタイミングで異なるストレージクラスに移行すべきか判断できます。
5. 購入オプションの最適化
AWSは基本的に従量課金制をとっていますが、サービスによっては複数の購入オプションを選択することができます。ワークロードの特性に応じて適切な購入オプションを選択することでコストの削減が期待できます。
横にスクロールできます
購入オプション | 内容 |
---|---|
Reserved Instance | 1年または3年の単位でインスタンスの長期利用をコミットすることで割引を受けられるオプション。オンデマンドインスタンスと比較して最大72%の割引がある。長期間稼働するワークロードに適している。 |
Savings Plans | 1時間ごとの一定の費用を1年または3年の単位でコミットすることで割引を受けられるオプション。リザーブドインスタンスと比較してインスタンスサイズやインスタンスファミリーを期間中柔軟に選択できる。 |
Spot Instances | Amazon EC2の空きキャパシティを活用して割引を受けられるオプション。オンデマンドインスタンスと比較して最大90%の割引がある。空きキャパシティがない場合は起動できず、起動中のインスタンスは中断(デフォルトは終了)される。中断してもよいワークロードに適している。 |
6. アーキテクチャの最適化
他の方法と比較して時間がかかるものとなりますが、アーキテクチャを最適化することでもコストの削減が見込めます。ここではアーキテクチャ改善によるコスト削減についてよくあるケースを紹介したいと思います。皆様は下図を見て、どのようなアーキテクチャ改善を提案されますか。
アーキテクチャ改善前
私はゲートウェイ型のS3エンドポイントの設置を提案します。図中でEC2インスタンスはS3宛に30GB、NATゲートウェイ経由で通信をしています。NATゲートウェイは処理したデータ量に応じて課金が発生してしまいます。
アーキテクチャ改善後(その1)
これをS3のゲートウェイ型のVPCエンドポイントをVPCに設置することで改善すること可能です。ゲートウェイ型のエンドポイントはそれ自体や通過するデータに関しても一切料金がかからないためS3宛の通信コストをまるまる削減することができます。
さらにNATゲートウェイを廃止し、NATインスタンスを設置することも要件によっては提案します。NATゲートウェイは存在するだけで料金がかかり停止することができません。NATインスタンスも存在するだけで料金がかかりますが、要件に応じてNATゲートウェイよりも安価なインスタンスも選択肢にはいり、さらに停止させることが可能です。
アーキテクチャ改善後(その2)
NATゲートウェイとt4g.smallの料金の比較
項目 | 利用料金(USD/時) |
---|---|
NATゲートウェイ | 0.045 |
NATインスタンス(t4g.small) | 0.0168 |
月に1GBしかデータを処理しないのであれば小さいインスタンスサイズでスペックとしては問題無さそうですし、停止しておける時間帯があるのであれば更にコスト削減が見込めます。盲目的にNATゲートウェイを設置しているケースはよく見かけます。その場合は、要件と照らし合わせて本当に必要か見直してみましょう。
おわりに
今回はAWSのコスト最適化のうち、「最適化」の方法について後半3つを紹介しました。何かのご参考になれば幸いです。次回は、最適化の最終ステップとなる「計画・予測」をどのように実行していけばよいのかについてご紹介できればと思います。
コスト最適化の継続的な活動は、知見・経験やSEリソースの観点から、多くの企業で実行できていないと感じています。NSSOLではAWSのコスト可視化・削減サービスや運用サービスを提供しており、お客様のご利用環境やニーズに合わせてコスト最適化をご提案することが可能です。また、コスト以外にもAWSに関する包括的なソリューションを提供しているのでこちらも是非お気軽にご相談ください。ではまた、近いうちにお会いしましょう!
なおNSSOLでは、お客様の更なるAWS利活用をご支援するべく、コスト最適化とIT統制に関するアドバイスをまとめたダウンロード資料を公開中です。ご興味ある方はぜひこちらの「AWSのガバナンス強化と、コスト最適化のポイント」もご確認ください!