Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'my_disable_redirect_canonical' not found or invalid function name in /home/takoyakiasia/sun-asterisk.com/public_html/wasshoi/wp-includes/class-wp-hook.php on line 309
AWSのコスト最適化 <EC2 編>コストパフォーマンスの良いインスタンスを選択してコストを削減する - Sun* / サンアスタリスク

TOPICS

TOP

>

TOPICS

>

AWSのコスト最適化

AWSのコスト最適化 <EC2 編>コストパフォーマンスの良いインスタンスを選択してコストを削減する

投稿日: 2022年8月30日

更新日: 2022年9月8日

Amazon Elastic Compute Cloud (Amazon EC2) は、500 以上ものインスタンスと、最新のプロセッサ、ストレージ、ネットワーク、オペレーティングシステム、購入モデルを選択できるプラットフォームを提供しています。様々な選択肢の中から最適なプランを選択することで、コスト削減が可能です。多数の選択肢があり、どれがコスト削減につながるかわからない、という方のために、削減の方法と期待できる効果についてご紹介します。

移行案件など、必要スペックが想定できているお客様へのコスト削減案

適切なインスタンスファミリーを決定し、コストパフォーマンスの良いインスタンスを選択することでコストを削減する。

本番環境の起動数を制限する

オートスケーリングが設定されないインスタンスに対して、Lambda + EventBridgeで該当の時間に開始、停止させます。

Intel 以外のCPUアーキテクチャへ変更

AWSのEC2インスタンスにはタイプ名の数字(世代)の後に更に a や g が付くものがあります。

a はAMDアーキテクチャ
gはGravitonアーキテクチャ(Amazon独自)

これらは同グレードと遜色ない性能でコストが若干抑えられたタイプとなります。

活用例

m4の代わりにm5インスタンスを使用

(第5世代のインスタンスはlarge以上に限られます)

t2の代わりにt3インスタンスを使用

(medium 以下のインスタンスでは t2,t3 も選択肢に入るが世代的に古い)

  • TシリーズはCPUバーストと呼ばれる負荷が高まった時によりCPUリソースを多く使えるモデル(課金が発生する場合があります)但し平常時はCPUクレジットを貯めておくことで高負荷時にそれを使い対応できるモデル
  • Mシリーズはバランス型と呼ばれ Tシリーズよりコストは上がるもののメモリ、CPU、ネットワークリソース(通信帯域)の最適化が行われているモデル
  • Cシリーズは計算能力に優れたCPUを割り当てているモデルでCPUに負荷がかかる処理に向いているモデル
  • Rシリーズは同タイプに比べてメモリを多く搭載しているモデルでメモリリソースを多く利用するワークロードに向いているモデル
  • webサーバやAPIサーバ用途の場合は、概ね TシリーズかMシリーズで利用する事が多いです

コスト削減の例

前提条件
  • 支払い条件:通常利用(オンデマンドインスタンス)
  • ストレージ:汎用SSD 100GB 120USD/月
  • リージョン:東京
  • インスタンスサイズ: medium
  • 構成:冗長化無し(シングル構成)
  • 稼働時間:7days24h
通常1年利用の t2.midium

単価0.0608USD x 数量1 x 時間740h x12ヶ月=540USD

通常1年利用の t3.midium

単価0.0544USD x 数量1 x 時間740h x12ヶ月=483USD

t2対比 約10%削減

通常1年利用の t3a.medium

単価0.049USD x 数量1 x 時間740h x12ヶ月=435USD

t2対比 約20%削減

通常1年利用の t4g.medium

単価0.0432USD x 数量1 x 時間740h x12ヶ月=384USD

t2対比 約29%削減

 


参考資料

Amazon EC2 オンデマンド料金
Amazon EC2 T3 インスタンス


夜間動作が不要なお客様へのコスト削減案

新規開発時の各環境(特に開発環境・ステージング 環境)では夜間動作している必要が無い場合、 停止させる事でその分のコストカットが可能です。

起動時間を制限する

lambda を用いて自動で平日の夜間帯に継続起動しておく必要が無いインスタンスを停止させ、翌朝に起動させるものです。

開発環境・ステージング環境では、勤務時間中しか動作しなよう設定します。


lambda において以下のように定義して適用する

  • 月曜日から金曜日の6時にインスタンスを起動するようにスケジュールする
  • 曜日から金曜日の19時にインスタンスを停止するようスケジュールする

コスト削減の目安

上記の例で全インスタンスを夜間停止した場合、1日11時間停止させるので約50%のコスト削減が可能

 


参考資料

Application Auto Scaling のスケジュールされたスケーリング


必要な時間に必要な分のインスタンスを起動させ無駄を省く

本番環境で起動数を制限する

オートスケーリングが設定されないインスタンスに対して、Lambda + EventBridgeで該当の時間に開始、停止させます。

開発環境・ステージング環境の場合、本番相当試験をしないのであれば冗長化構成にせずシングル(1台)構成でコスト削減を行います。運用中の本番環境の場合、ピークタイムが判明している場合はその時だけ複数のインスタンスを同時に動かす設定を行いコスト削減を行います。

例: 6時に最小インスタンス数を2にして19時に最小インスタンス数を1に減らす。

コスト削減の目安

25%程コストカットできます。

 


参考資料

Lambda を使用して、Amazon EC2 インスタンスを一定の間隔で停止および起動するにはどうすればよいですか?


スポットインスタンスを利用しコストカットを行う

急に停止されても問題ない環境や処理は、AWSの余剰リソースであるスポットインスタンスを利用する ことでコスト削減できます。

スポットインスタンスとは

AWS内の使用されていない EC2インスタンスのリソースを用いる事でオンデマンド料金に比べ最大 90% の割引料金で利用できる一時的利用インスタンスです。しかし以下のような制限があります。

  • スポットインスタンスの料金(スポット料金)は長期の需給傾向に基づいてAWS側でリージョンごとに調整される。
  • Amazon EC2 では容量の不足、もしくはスポット料金が設定された上限価格を超えた時スポットインスタンスが終了される。
    例: 上限価格を0.5 USD/時間を指定した場合、スポット料金が0.5 USD/時間以内の際に限り、スポットインスタンスをそのまま動かすことが可能。
  • スポットインスタンスが終了された場合、AWSにより終了されるかユーザーにより終了されるかによって料金が異なる。

※いずれにせよ少額なので、スポットインスタンス利用が決まりきっている場合以外は、この機能の利用を検討する時間的リソースの方が勿体無い場合が多いです。

利用例

以下の利用例のように高速で一度限りのタスクを実施する場合か、インスタンスが停止されてもシステム全体に影響を及ばない場合はスポットインスタンスをするのが非常にコスト的に有利です。

  • CI/CD
  • 非本番ワークロード
  • フォールトトレラントのワークロード

コスト削減の目安

通常利用(オンデマンド)の t2.midium

時間単価0.0608USD

スポット利用の t2.midium

時間単価0.0182USD
約70%の削減

 


参考資料

NEW – Using Amazon ECS Exec to access your containers on AWS Fargate and Amazon EC2


長期利用が確定している場合は、リザーブインスタンス契約する

あるインスランスタイプを長期間継続利用することを前提に大幅な割引(最大70%)を受けることができます。

リザーブドインスタンス(RI)と Savings Plans (SP)は、どちらもインスタンスを1年若しくは3年で予約契約するものです。そして、その利用費用をRDSと同じく「前払い無し」「一部前払い」「全額前払い」とする事で通常の利用料金より有利な価格で利用できるサービスです。

SP の場合は条件に合致するインスタンスに相当する金額をお客様自身で計算し、その額をAWS側にコミットします。タイプにより違いはありますが、条件の指定が緩く、幅広いインスタンスに対して最も割引効率が高くなるように自動で適用されます。

※RIは更にリージョナルRI、ゾーンRIに分かれスタンダートとコンバーティブルがあるがAZ指定が不要なリージョナルRIスタンダードをよく用います。

リージョナルRIのスタンダードRIが良い理由

RI(リザーブドインスタンス)とSP(Savings Plans )を比べると、先ずインスタンスファミリーの柔軟さ(購入後も変更可能)でSPが良さそうに見えます。しかし、プロジェクトの構成次第にはなってしまいますが、SPの場合は購入金額をお客様自身で算出する必要があり、規模が大きくなればなるほどこの事務作業負担が大きくなります。

リージョナルRIのスタンダードRIの場合、この事務作業が不要となります。インスタンスファミリーを決める必要がありますが、SPと同様にAZ指定が不要なので Multi-AZ による冗長化構成での構築が可能です。また、マーケットプレイスでのAMIの購入が行え Redhat社がカスタマイズしたAMIなども利用でき、商用OSで構築しなければならないセキュリティに特化したプロジェクトにも対応が可能です。以上の事から費用対効果、サービスの可用性、運用の簡素化を考慮すると、リージョナルRIのスタンダードRIが様々なプロジェクトにマッチするのではないかと考えております。

EC2 (RIの種類)

利用例

1~3年間継続利用することを契約する必要があります。支払い方法によってコストカットの割合が異なります。

全額前払い: リザーブドインスタンスの期間の料金全額を一括で前払う
一部前払い: 少額を前払い、リザーブドインスタンス期間が終了するまでの間、割引時間単価で計算したインスタンス料金を支払う
前払いなし: 期間が終了するまでの間、時間単価が割引となる。

RIの場合の注文
  • 東京リージョン
  • t4g.medium
  • 1台分
  • 1年全額前払い

上記を選択することで、
オンデマンド時間単価0.0432USD、年間384USDが222USD で利用でき、
約40%削減できます。

コスト削減の目安

最大72%程コストカットできます。

 


参考資料

Amazon EC2 リザーブドインスタンス


踏み台サーバを AWS System Manager に置き換える

セキュリティのため、プライベートネットワークにあるEC2インスタンスにアクセスする場合にはbastionインスタンスが必要です。しかしEC2インスタンスへのアクセス頻度が低い場合、bastionインスタンスを維持することは不要なコストとなり、最適ではありません。

通常、踏み台サーバ(bastion)を経由してアプリケーションサーバへログインします。この踏み台サーバは恒久的に起動しているインスタンスを用いる事が多いですが、System Manager を利用する事でAWSコンソールから各アプリケーションサーバへログインする事が可能となり踏み台サーバの費用を削減できます。
※但し、AWSコンソールへのアクセスにおいて2要素認証を用いて強固に運用する必要があります。

利用例

セキュリティのため、EC2インスタンスへ直接ssh接続することを許可しない場合はAWSコンソールへIAMアカウント等でログインします。その後、ターゲットとなるEC2インスタンにアクションの項目で System Manager による接続を使用します。この運用の場合、踏み台サーバを恒久的に維持する必要がなくなります。

コスト削減の目安

踏み台サーバ(bastion)用のインスタンス料金が不要となります。

 


参考資料

EC2 インスタンスでコマンドをリモートで実行する


gp2 タイプのEBS から gp3 に切り替える

gp3 はボリュームサイズに関係なく、 3,000 IOPS のベースラインパフォーマンスを提供します。ボリュームあたり最大16000IOPSを提供します。

EC2インスタンスにストレージが必要な場合 EBS を用いる事が殆どですが、世代の新しいgp3 を用いることによりパフォーマンス向上とコストカットの両面が行えます。

コスト削減の目安

高いIOPSが必要なボリュームに対してgp3を使用することでコスト削減が可能となります。gp2からgp3に更新することで20%ほどのコストカットが可能です。

 


参考資料

Migrate your Amazon EBS volumes from gp2 to gp3 and save up to 20% on costs


インスタンス終了時に EBS も削除する

インスタンスを終了する時EBSも削除します。

EC2インスタンスにストレージが必要な場合 EBS を用いる事が殆どですが、世代の新しいgp3 を用いることによりパフォーマンス向上とコストカットの両面が行えます。
EC2インスタンスに用いたストレージはデフォルトで削除されません。従って、明示的に付属させたEBS ボリュームも削除する運用フローにしておく事が望ましいです。
※利用していないEBSに対しても若干とはいえコストがかかります。(gp3タイプの利用 で1GBあたり 約0.10 USD/月)

利用例

使用されないEBSボリュームを削除することでストレージコストを減らせすことができます。

 


参考資料

Amazon EC2 インスタンスを終了するときに Amazon EBS ボリュームが削除されないようにするにはどうすればよいですか?


使用していない AMI (Amazon Machine Image) を削除する

使用されないAMIを削除 することでコスト削減ができます。

※利用していないAMIに対しても若干とはいえ保管量のコストがかかります。
(1GB あたり約0.05/月)

利用例

使用されないEBSボリュームを削除することでストレージコストを減らせすことができます。また、使用されない古いAMIバージョンを削除することでコストを減らすことができます。

 


参考資料

AMI の登録の解除


関連記事

Sun*をパートナーとしてご検討される方へ、サービスや実績、Sun*の強みやこだわりなどをまとめた資料です。

資料ダウンロード
カテゴリー
  • AWSのコスト最適化
  • DX
  • UI/UX
  • スタートアップ

  • アプリ開発 見積り

    依頼時に決めておきたいアプリ要件とは?