[AWS] EC2でコストを安く抑えるために見るべきポイント [tips]

はじめに

業務でAWS運用し始めて3年以上が経過しました。
その中で、実務を通すことで得られた経験がたくさんあります。

例えば課題のひとつにサーバー費用の見直しがありました。
システムの信頼性を維持しながらサーバー費用を抑えるためにはどうしたら良いか、今まで得られた知見を記事にできればと思います。

世代とアーキテクチャを見直す

AWSの中でも最も基本的な機能であるEC2について触れていきます。
EC2インスタンスには大きく分けて4つの契約形態があります。
 ・オンデマンド
 ・スポット
 ・リザーブド
 ・セービング
それぞれの特徴については既にご存知だと思いますので、特に説明はしません。

今回はその中でもオンデマンドインスタンスの料金特徴に触れていきます。

世代・アーキテクチャによるスペック差
インスタンスタイプ アーキテクチャ vCPU Memory 月額費用
c3.xlarge Intel 4 7.5GB 20,200円
c4.xlarge Intel 4 7.5GB 19,960円
c5.xlarge Intel 4 8GB 16,950円
c5a.xlarge AMD 4 8GB 15,200円
c6g.xlarge ARM 4 8GB 13,560円

この表はコンピューティング最適化インスタンスであるc系を東京リージョンで1ヶ月間稼働させた時の料金比較表です。

同じインスタンスファミリーでも世代(横の数字)が異なると性能がアップし、価格も安くなります。
そのため、古い世代で稼働しているオンデマンドインスタンスがあったら、新世代へ移行すると良いです。


さて、EC2インスタンスにはCPUアーキテクチャが複数用意されています。
基本的なIntelのものよりもAMDの方がコストパフォーマンスが良いです。
また、どちらも実際のCPU処理能力には差異がありません

ならば全部AMDでいいじゃんって思うかもしれませんが、AMDインスタンスは特定のアベイラビリティゾーンではサポートされていなかったり、インスタンスファミリーが揃っていなかったりします。

さらに安いARMがあります。
ARMはシングルスレッド処理に弱く、並列処理に関してはIntelやAMDよりもパフォーマンスが高い特徴があります。

ただしARMは本来はスマートデバイス向けのCPUですので、ソフトウェア側が非対応なケースが多々あります
DockerなどはARMでもサポートされているので、コンテナ技術を活用する場合には性能を発揮しやすいですが、用途によってはソフトウェアが起動しないケースがあるのは覚えておくと良いかもしれません。

スポットインスタンスを活用する

先ほどオンデマンドインスタンスでは新しい世代のものほど価格が安くなると説明したのですが、需要に応じて価格が変動するスポットインスタンスでは逆のことが起こります。

スポットインスタンスのタイプによる価格差(2021年6月現在)
インスタンスタイプ アーキテクチャ 月額費用
c3.xlarge Intel 4,780円
c4.xlarge Intel 5,020円
c5.xlarge Intel 5,260円
c5a.xlarge AMD 5,260円
c6g.xlarge ARM 5,540円

先ほどと同じインスタンスタイプでの料金比較をしてみます。
古いインスタンスの方が価格が安いことがわかります。

オンデマンド価格では非常に安かったARMタイプのインスタンスでしたが、スポットインスタンスでは一番高くなっていますね。


スポットインスタンスで古いインスタンスタイプを使うことで安くインスタンスを利用することができます。

また、古いインスタンスタイプは人気が少ないため、スポットインスタンスがシャットダウンされてしまうリスクが最新のものよりも低くなる特徴があります。

AutoScalingグループで起動するときは、古いインスタンスタイプを含めた複数のインスタンスを指定して、複数アベイラビリティゾーンに展開することでより冗長的に利用できます。

ECSで利用する場合にはスポットインスタンスのドレイニングを有効にしておくことで、サービスコンテナの数を担保できるのでほぼノーリスクで利用することができます。

個人的な検証や捨て環境として立てる時もスポットインスタンスを活用することをおすすめします。

EBSはGP3を使う

EBSの汎用SSDでは未だにデフォルト設定がGP2になっています。
しかし最近登場したGP3はより高パフォーマンスでありながら、2割程度安く利用できる特徴があります。

スペック比較
GP2 GP3
容量 1GB~16TB 1GB~16TB
ストレージ価格 $0.12/month $0.096/month
IOPS 100~16,000
※EBSストレージ1GBにつき3IOPS
3000~16,000
※3,000IOPSまで無料でそれ以上を利用する場合には$0.006
スループット ストレージ容量に応じて変動
※最大で250MB/s
125MB/s~1,000MB/s
※125MB/sを超える場合には1MB/sにつき$0.048

値段とパフォーマンスの比較表がこちらになります。

多くのケースではGP3を利用するのが良さそうですね。

おわりに

本当はスポットインスタンスを活用するための設定やらノウハウなどを深ぼったり、リザーブドインスタンスやセービングプランについても触れていきたかったのですが記事の文字数が多くなりそうなので一旦区切ります。

EC2インスタンスについては適切なインスタンスタイプを選択したり、スポットインスタンスを活用することで大幅にコストを削減することができます。
新しい世代のインスタンスが登場した時には、きちんと検証しつつ乗り換えていくのが良いですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)