俺のAWS環境は適切なコストになっているのか?

記事タイトルとURLをコピーする

こんにちは、CSM課の城です。

このブログは Japan APN Ambassador Advent Calendar 2020 18日目のエントリです。
他の方の記事も、興味深いものばかりですので、是非読んでみていただけると幸いです。

ちょっとあおり気味のタイトルになっていますのはご容赦ください。
昨今のご時世で情報システムに関するコスト最適化を気にされるお客様が多く、私自身も多く対応してきました。
ただ、コスト最適化といっても単純に削減するのではなく、適切に利用できているかという観点で対応することがビジネスにおいては重要です。
今回はおおまかなコスト最適化の考え方の概要であったり、AWSにはコスト最適化に非常に役に立つサービスも多くありますので、Tipsを添えつつ紹介したりしたいと思います。

1. 概要

大きくは下記の3点となります。

  • 何にコストがかかっているのかを知る
  • 無駄、不要なリソースは削除する
  • 同じ効果をよりコストを少なく実現する

なお、EC2ネタ多めです。
では、さっそく参りましょう。

2. 何にコストがかかっているのかを知る

凄く当たり前のようで、忘れがちなのですが、コストが大きなものほど削減できた時の効果は大きいです。
まずは対象の環境において、何にコストがかかっているのかを確認しましょう。

AWSのサービスにおいては、AWS Billing and Cost Managementがその役割を担っています。
Billing and Cost Managementにはその名のとおり、請求書、明細を表示するだけでなく、コスト分析に有用なAWS Cost Explorerであったり、コスト管理に有用なAWS Budgetsといった機能が用意されています。
コスト最適化の観点において、特にCost Explorerは凄く便利なので、是非使ってみていただきたいです。
どう便利かというと、いつからいつまでの期間で、どのサービス、さらにEC2やRDS等の例でいえば、どのタイプの利用料がどうなっているか、タグ毎の利用料の集計なども対応可能です。
これらの機能を用いて、どのサービスが利用料が多いのか、どのインスタンスタイプの利用料が多いのか、どのタグがついたリソースの利用料が多いのか、ご利用に合わせて分析し、大きくコストがかかっているのはどこなのかを洗い出すことが可能です。

ちなみに番外編ですが、当社では検証環境として各メンバーにアカウントを払い出しているのですが、意図に反して予算オーバーしてしまう事故がたびたび見られます。
AWS Cost Anomaly Detectionで想定外の利用料金の増加を検知したり、AWS BudgetsのBudget Actionなどを使うと良さげだったりします。
Budget Actionについては当社の佐竹が試してみたブログを書いていますので、よろしければご覧ください。

blog.serverworks.co.jp

3. 無駄、不要なリソースは削除する

アカウントを作りたての頃は無駄、不要なリソースというのはあまりないかと思いますが、1年、2年、3年と長く使っていくほどに、無駄、不要なリソースは溜まりがちです。
AWS Trusted AdvisorはAWSのベストプラクティスに沿ったAWS利用に役に立つサービスですが、カテゴリの一つにコストの最適化があります。
本項の目的においては、使用されていないリソースやアイドル状態のリソースを洗い出すのに利用できます。
具体的には下記のような項目があります。

  • 利用頻度の低いAmazon EBSボリューム
  • Amazon RDSアイドル状態のDBインスタンス
  • Amazon Route 53 レイテンシーリソースレコードセット
  • アイドル状態の Load Balancer
  • 使用率の低い Amazon Redshift クラスター
  • 使用率の低いAmazon EC2 Instances
  • 関連付けられていない Elastic IP Address

この場では長くなりすぎるので、詳細については下記ドキュメントをご覧ください。

aws.amazon.com

その他にありがちなものとしては、スナップショットやNATゲートウェイ、VPCエンドポイントなどが削除し忘れて、利用していないのに残っているということがありがちです。
定期的に棚卸するのがよいでしょう。

また、削除とは少し違う観点ではありますが、EC2であれば必要な時間だけ起動させると大分コストが違ってきます。
例えば平日9:00~18:00の営業時間だけ動かしてればよいという要件のEC2が、常時起動していたとすると、結構な無駄になっているはずです。

【本来必要な時間】
 9時間 × 5日(1週間の営業日数) × (30日 / 7日)週 ≒ 193時間

【今まで稼働していた時間】
24時間 × 30日 = 720時間

【削減率】
(720時間 - 193時間) / 720時間 ≒ 73.2%

上記のように後述するSaving Plansやリザーブドインスタンスの割引率を上回る削減をすることが出来ます。
まずは無駄を削減することを先に考えていきましょう。

またまたEC2の話ですが、スペックが高すぎて無駄というところもありえます。
この課題にはAWS Compute Optimizerが有効です。
Compute Optimizerは機械学習技術を使用してアカウントのリソース消費の履歴を分析し、リソースの使用状況に合わせて明確で実用的な推奨事項を作成してくれます。
この推奨事項に合わせてインスタンスタイプを変更するとコスト最適に近づけるかと思います。

詳細については、こちらも佐竹の記事ですが、以下のブログをご覧ください。

blog.serverworks.co.jp

blog.serverworks.co.jp

注意事項としてはインスタンスタイプを変更する際に必要なドライバの違いで起動できないなどの事象が発生する可能性があります。
特にNitro Hypervisor導入前のインスタンスタイプから新しい世代のインスタンスタイプに変更する際は注意が必要です。
下記のドキュメントはWindowsに関するドキュメントですが、ご参考ください。

最新世代のインスタンスタイプへの移行 - Amazon Elastic Compute Cloud

4. 同じ効果をよりコストを少なく実現する

これはちょっとざっくり書きすぎな気がせんでもないですが、同じ効果をより安く実現しよう!というわけです。

大きなところで言うと、よりコストの安いアーキテクチャを変更する、というものがあります。
例えば、EC2で動かしていたバッチサーバーをStep Function + Lambdaへ移行して、より従量課金にするとかですね。
システムをサーバーレス化するにはもちろん初期コストがかかるのですが、運用コストとしては一般的に下がりやすいので、トータルのランニングコストも考えつつ検討すると良いでしょう。
Japan APN Ambassador Advent Calendar 2020の中でも関連するエントリーがありましたので、是非、ご覧いただければと思います。

cloud-aws-gcp.hateblo.jp

また、前項にてちょっと話がでてきましたが、Savings Plansやリザーブドインスタンスを購入するというのも一つの手です。
将来の利用を約束する代わりに、その分の利用料を割引で使うことができるというサービスと考えてよいでしょう。
詳細については次のブログをご参考にしていただければと思います。(例にもれず、佐竹の記事です。)

blog.serverworks.co.jp

blog.serverworks.co.jp

Savings Plansやリザーブドインスタンスを購入する際は、1年または3年分の利用料をコミットし、購入した月の請求で全額支払うのか、もしくは、一部/全部を分割で支払っていくのかといったオプションを選択します。
それぞれで割引率なども違うのですが、今後の計画や予算といった要件にあったものを選ぶ必要があります。
どのくらい購入するかについては、利用についてのオフピーク分析をする必要があります。 多くのリソースが動いている環境だとこれも一苦労なのですが、こちらにも前述のCost Explorerを利用することができますので、ブログを投下しておきます。

blog.serverworks.co.jp

さいごに

駆け足とはなりましたが、参考になりましたでしょうか。
実際のところ、コスト最適化できる箇所というのはお客様による部分が大きく、一概には言えないところもあるのですが、これまでに遭遇したよくあるケースを書いてみました。
既存のコストは最適に保ちつつ、ビジネスにおいて価値のあるものに投資をしていきたいですね。
なお、ダイレクトにマーケティングをやっちゃいますが、サーバーワークスでは「とは言え、自分でやるとよく分からんのですよー」とか、「もっとビジネスに価値を付加する仕事に自社人員を投入したいんだ!」といったご希望に合わせ、AWSコスト削減コンサルティングサービスを提供していますので、気になる方はお問い合わせください。

blog.serverworks.co.jp


どなたかの助けになれば幸いです。

城 航太 (記事一覧)

サイトリライアビリティエンジニアリング部・CSM課・課長

AWSへの移行、AWSアカウントセキュリティ、ネットワーク広く浅くといった感じです。最近はAmazon WorkSpacesやAmazon AppStream2.0が好きです。APN Ambassador 2019,2020