Amazon WorkSpaces のコスト最適化を実際に行って得た運用 Tips

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

カスタマーサクセス部 佐竹です。
本日は、Amazon WorkSpaces の運用、その中でも「コスト最適化」に特化した運用知見について記載します。

なお、本知見を活用して実際に削減された AWS の利用料は、年間1,000万円以上になります。Amazon WorkSpaces のコストを下げたい、と考えているお客様に参考となれば幸いです。

目次

はじめに

Amazon WorkSpaces のコスト最適化と言えば、以前ブログでもご紹介しております、Amazon WorkSpaces Cost Optimizer が実用的です。

blog.serverworks.co.jp

現在も最新バージョンは v2.4.1 が最新です。

本ブログは、この Amazon WorkSpaces Cost Optimizer を中心に据えたコスト削減手法の運用 Tips となります。

Amazon WorkSpaces の利用料について

Amazon WorkSpaces Cost Optimizer の機能について説明したいところですが、まずは Amazon WorkSpaces の料金体系について学ぶ必要がありますので、先にそれをざっくりと説明します。

以下が単純化した Amazon WorkSpaces の利用料です。

実行モード コメント コスト
AlwaysOn 月額料金 月額料金のみを支払う
AutoStop 時間料金 低額の月額料金と利用した分の時間料金を支払う

月額料金は WorkSpace を作成した初月のみ日割りで計算されます。なお、日割りですが実際は「その月の残時間数分が請求される」ことになるため、31日の23:00に作成しても1時間分が初月に請求されます。

そして翌月から月額料金は全額発生します。つまり、月初の 0:00 UTC(日本時間では 9:00 AM JST)に構築済の WorkSpace は月額利用料が全額請求されます

AutoStop で利用する場合は、低額の月額固定費は存在するものの、コンピューティングリソースには EC2 インスタンスのように使った利用時間に応じて費用が請求されます。ただし、目安として 80 時間程度利用すると「AlwaysOn」と同額になります。よって、毎月 80 時間以上 WorkSpace を利用する場合には WorkSpace の実行モードを「AutoStop」から「AlwaysOn」に変更することで費用対効果を改善可能です。

反対に、毎月 80 時間未満の利用時間である場合は「AlwaysOn」から「AutoStop」に切り替えを行うことでコストを低減できます。

Amazon WorkSpaces Cost Optimizer の機能説明

実行モードを、各 WorkSpace の月別利用時間に合わせて切り替えを行うのは、手動ではあまりにも運用が辛いことは想像の通りです。

そこで、実行モードの切り替えを自動化するために Amazon WorkSpaces Cost Optimizer が開発されたという背景があります。そのため、この「実行モードの自動的な切り替え」が本ソリューションのメイン機能となります。

また、最新バージョンでは「不要な WorkSpace の自動削除」機能まで実装されています。不要(Unused)な WorkSpace の削除対象は、「月初に存在している」且つ「その月の利用時間が 0 時間」です。そのため、その月の途中に構築された WorkSpace は、利用時間が 0 時間でも削除の対象から除外される点に注意してください。

簡単にまとめると以下が Amazon WorkSpaces Cost Optimizer の機能です。

  1. 実行モード( AlwaysOn ⇔ AutoStop )の自動調整
  2. 利用されていない WorkSpace の削除
  3. タグ付与による特定 WorkSpace の Cost Optimizer からの対象除外

公式の料金ページ

AWS 公式の Amazon WorkSpaces 利用料金案内ページは以下の通りです。詳細については以下をご確認ください。

aws.amazon.com

Cost Optimizer for WorkSpaces on AWS

AWS ドキュメントでは少々名称が異なりますが「Cost Optimizer for WorkSpaces on AWS solution」として以下のドキュメントがありますので、機能詳細につきましては以下をご確認ください。

docs.aws.amazon.com

運用 Tips

では、Amazon WorkSpaces Cost Optimizer を利用した、Amazon WorkSpaces のコスト最適化の Tips を紹介していきます。

運用 Tips 1:閾値をカスタマイズする

blog.serverworks.co.jp

とにもかくも最初にやるべきは、Amazon WorkSpaces Cost Optimizer の構築となりますが、その時に CoudFormation を実行する必要があり、閾値をカスタマイズする必要があります。

というのも、デフォルトの CoudFormation のテンプレートは東京リージョンにアジャストされていません。Amazon WorkSpaces の利用料はリージョンによって異なるため、これにより実行モード( AlwaysOn ⇔ AutoStop )の切り替え判断に利用する閾値も数時間異なってきます。

上記ブログに細かく計算した結果を記載しておりますので、閾値をアジャストされたい方は上記ブログをご参考ください。

運用 Tips 2:「Dry Run」モードを有効にする

Amazon WorkSpaces Cost Optimizer の構築時に「Dry Run」モードで構築が可能です。

このオプションを有効化すると、S3 バケットに分析結果は出力されますが、実行モードの自動調整や削除は実行されません。何故こうする必要があるかと言いますと、最初は影響範囲がわからないからです。

いきなり「Dry Run」モードではない状況でデプロイしてしまうと、月末に意図しない動きをして現場を混乱させてしまう可能性があります。そのため、初回の CloudFormation のデプロイは「Dry Run」モードで構築されることを推奨します。

運用 Tips 3:1つの AWS アカウントに複数の WorkSpaces Directory がある場合は「Dry Run」モードのままにしておく

Amazon WorkSpaces Cost Optimizer のターゲットは最小で「指定したリージョン」までです。よって、AWS アカウントの中に、複数の WorkSpaces Directory がある場合、それらに所属するその全ての WorkSpace が Amazon WorkSpaces Cost Optimizer のターゲットとされてしまいます。

つまり、Directory 単位での Opt-in や Opt-Out はできません。これはつまり、Amazon WorkSpaces Cost Optimizer のターゲット外としたい Directory が1つでもあれば、「Dry Run」モードで運用するしかないということになります。

先にご紹介しました「タグ付与 (key: Skip_Convert) による特定 WorkSpace の Optimizer からの対象除外」という機能はありますが、対象外にしたい全ての WorkSpace に、それぞれ漏れなくタグ付与が必要です。そのため、新規に構築される WorkSpace に漏れなく適用する必要があり、そのオペレーションは正直なところ少々シビアです。

エンタープライズ企業様では、意図しない動作を回避される傾向が強いという印象がありますが、この傾向から Amazon WorkSpaces Cost Optimizer は「Dry Run」モードのままで維持し、WorkSpace の各種変更作業は全て手動で(CLI等を利用して)行う、という運用になります。

正直なところ手間はかかりますが、確実に行うという点ではこのほうが安全です。CLI の実行には、S3 バケットに出力された月末時点(もしくは月末付近) の CSV を分析して、対象を決定します。

補足ですが、Directory 単位での Opt-in や Opt-Out はできません ので、これを同リージョンで回避したい場合は現状、Amazon WorkSpaces の Directory 単位で AWS アカウントを分離いただくしかありません。

運用 Tips 4:削除の前に、まずは AutoStop に切り替えて様子を見る

利用しなくなったかどうかわからないものの、AlwaysOn の実行モードの WorkSpace で、その月の利用時間が 0 であった場合には「すぐに削除したい」ということになります。

ですが、「やはり使い続けたい」と利用者から言われるリスクがあります。一度削除した WorkSpace のデータドライブ(D ドライブ)は復元ができません。このような場合に備えて、削除までには段階を経ます。

つまり第1段階は「AlwaysOn の WorkSpace は、まずは AutoStop へと移行する」ということです。そして第2段階として「AutoStop の状態で 1-2 ヶ月程度利用時間が 0 であれば通告した後に削除」とします。

さらに、念には念を入れて、過去3か月分の Amazon WorkSpaces Cost Optimizer が出力した CSV を分析し、3か月連続で全ての月の利用時間が 0 時間であることを確認します。これは Amazon WorkSpaces Cost Optimizer の機能ではできないため、CSV をダウンロードして Excel で集計しました。SQL が得意であれば Athena でも可能でしょう。

運用 Tips 5:各対応ごとの適切な実行タイミングを知っておく

手動で WorkSpace の変更対応を行う場合、変更タイミングを理解しておく必要があります。

AlwaysOn → AutoStop への変更

多くのお客様で、最も多い変更作業がこの変更になります。

この作業は、月内であればいつでも実施いただいて問題がありません。理由としては以下の FAQ の通りであり、AutoStop に切り替えてもその月の費用は請求が発生しないためです。

AWS マネジメントコンソールまたは Amazon WorkSpaces API を使用して実行モードを AutoStop に設定することで、いつでも月単位の課金から時間単位の課金に切り替えられます。その月の Amazon WorkSpaces 料金のお支払いは済んでいるため、月単位の課金から時間単位の課金への切り替えは翌月に有効になります。

https://aws.amazon.com/jp/workspaces/faqs/

反対に、月末にまとめて実行しても問題がありませんので、弊社ではこれを月末に一度まとめて実施しています。

AutoStop → AlwaysOnへの変更

先の例と反対となる実行モードの変更です。これは「もともとそれほど利用しないと思っていたが、業務の都合で想定より利用時間が伸びた」場合等に発生します。

私の実体験ベースではありますが、1つの AWS アカウントで 1,000 台~2,000 台程度の WorkSpace を運用している状態で、毎月数台から多くても20台程度しか発生していなかったため、発生頻度としては数%程度でした。

このような場合の変更は「閾値を超えたらすぐに実行モードを変更してしまう」ほうが費用が安くなる場合があります。AlwaysOn へ切り替えると、月末までの残時間に応じて按分された月額費用がまとめて請求され、それ以上に請求されることはありません。

仮に利用時間が毎日ある程度均等で、かつ月の利用時間が合計で 200 時間に到達する場合、80 時間の利用時点で AlwaysOn へと切り替えを行うと、AutoStop よりも月額費用が安くなります。

弊社では月の半ばと月末にそれぞれ確認を行い、必要があれば相談の上変更作業を実施しています。

本音を言えば、この機能だけは Amazon WorkSpaces Cost Optimizer のオプションで自動化したいところです。ですが、この機能だけを有効化することが CloudFormation のパラメータでは実現できないため、定期的な確認で対応しています。発生数がそれほど多くないという背景もあります。

WorkSpace の削除

費用対効果を最大にしたい場合、WorkSpace の削除は月末に近いほど良いとなります。

先に記載した通り、各 WorkSpace の月額料金は月初 0:00 UTC に全て請求されるため、前月末の 23:59 UTC 頃には削除を実行したい状況です。1秒でも 0:00 UTC を過ぎると課金されてしまうためです。

ただし、先に記載した通り削除は「段階を経て」行います。削除対象は既に1-2ヶ月間 0 時間の利用となっていますため「今から対象の WorkSpace が利用される可能性は限りなく低い」となります。

このため、弊社では少し余裕をもってその月の最終営業日に「 AlwaysOn → AutoStop への変更」と同時に削除作業を行っています。

実際にどの程度コストが削減できたか

Amazon WorkSpaces のコスト削減効果

上図は、Cost Explorer から取得した Amazon WorkSpaces の月額費用です。

「①」は「AlwaysOn の WorkSpace を AutoStop へと移行」したことによるコスト削減です。この変更作業により、Amazon WorkSpaces の月額は 前月と比較して 12.0% のコスト削減に成功しています。

※補足:実際に「①」の作業を実行したのは4月末

そして「②」は、「AutoStop の WorkSpace のうち、3か月間利用時間が 0 時間であった WorkSpace を削除」したことによるコスト削減です。この削除により、Amazon WorkSpaces の月額は 前月と比較して 17.8% のコスト削減に成功しています。

※補足:実際に「②」の作業を実行したのは6月末

これらを合わせて、Amazon WorkSpaces の月額は 27.0% のコスト削減に成功しました。

またこれらの対応作業によるトラブルは「ゼロ」であったことも合わせて記載いたします。これは念入りに長い時間をかけて調整を行ったことによるものとなります。

まとめ

今回は、Amazon WorkSpaces Cost Optimizer を利用してコスト最適化を行った運用 Tips をご紹介しました。

単純に Amazon WorkSpaces Cost Optimizer を有効化して待つわけではなく、エンタープライズ企業の社風に合わせ、その情報を持って対応してきた運用実績を記載しました。これらを地道に行うことで、WorkSpaces の利用料最適化を実現してきました。

本ブログの Tips が皆様の Amazon WorkSpaces のコスト削減に少しでも役に立てば幸いです。

ではまたお会いしましょう。

佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ

マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023 Japan AWS Top Engineers/2020-2023 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。