こんにちは。クライアントビジネス推進部の金子です。
この記事は「NEXTSCAPE Advent Calendar 2022」の6日目です。
昨日の記事はリモートワーク用アイテムについてでした。
私は特にアイテムにこだわりはありませんでしたが、最近普通のマウスからそこそこ値の張るトラックボールマウスに変えたところ、普通のマウスに戻れない身体になりました。仕事用アイテムへの投資って大事ですね。
今回はAzureについての記事です。
日々の業務の中でAzureに触る機会が多くなり、最初は何が何だかわからなかったAzureの概要や機能を、少しずつですが把握できるようになってきました。
そんな中、自分が携わっている案件の中で、「稼働させている仮想マシンの費用をもう少し安く抑える方法はないか」という話が上がりました。その際、コスト管理に関しての調査タスクを進める中で「Azure Reserved VM Instance」について調べる機会があったので、備忘録も兼ねて、調べてわかったことをなんとなくこちらに書き留めておこうと思います。
はじめに
Azureに限った話ではありませんが、仮想マシン(VM)は、稼働させ続けていると利用料金が発生します。
その際、仮想マシンにかかる費用は従量課金方式(使った分だけ課金される方式)で計算され、請求される形になっています。
この従量課金方式ですが、使用する側にとってはわかりやすい請求方式ではあるものの、「何にいくらお金がかかっているか」をしっかり把握する、いわゆるコスト管理をしっかり行わないと、実は無駄な費用を払っていた…というケースが発生する場合があります。
例を挙げるとすれば、「案件の中でもう使わなくなった仮想マシンなどを停止・削除し忘れて、余計な費用が発生した」というケースなどです。
利用料金も決して安くないため、できれば仮想マシンの稼働に無駄な費用をかけるのは避けたいと考えているかと思います。
そこで今回は、仮想マシンに対するコスト管理の一環として、Azure Reserved VM Instanceについてご紹介したいと思います。
Azure Reserved VM Instanceとは?
Azure Reserved VM Instance(以下:Azure RI)とは、「あらかじめ一定の金額を払うことで、割引価格で仮想マシンを稼働されられる」サービスのことです。
概要
仮想マシンを稼働させる際、あらかじめ「このサブスクリプション内で、これくらいの期間で、このリージョンでこのサイズで動かす」と決め、あらかじめ稼働料金を先払いできるサービスです。
Azure RIを利用する際のメリットとして、同じ期間、従量課金で動かしたときに発生する金額よりも安く仮想マシンを利用できるという点があります。実際どれくらい安くなるのかは条件や環境によって変わりますが、Microsoftが公式に出している情報では、仮想マシンの利用料金を最大72%削減できるそうです。ありがたいですね。
そのため、例えば24時間365日動かしておくような仮想マシンがあった場合は、あらかじめAzure RIを利用して先払いした方が、費用を安く抑えられるということになります。
反面、特定の時間だけ動かす仮想マシン(月~金は動かすけど土日は停止するとか)の場合は、Azure RIを利用するより従量課金の方が安くなる場合があります。
利用イメージ
あくまでイメージなので正確な数値ではありません。ご了承ください。
例えば、以下のようなスペックの稼働マシンがあったとします。
月額が、従量課金方式で20000円の仮想マシンです。
この仮想マシンを、約半年稼働させ続け、適切なスペックで稼働させられるようになったとします。
その後、同じ条件でプラス1年間稼働させようとなったとき、コストを安く抑えるためにこの仮想マシンにAzure RIを適用することを想定し、見積もりを出してみます。
(繰り返しになりますが、数値は正確な値ではなくイメージです)
約25%安くなることがわかりました。
希望のRIが決まったら、RIの予約購入をし、1年分の利用料金を先払いして仮想マシンに適用させましょう。
ここで注意、例として挙げた仮想マシンのインスタンスの種類はDv3シリーズです。なので、もしRIを適用させるのであれば、Dv3シリーズ専用のRIなど、仮想マシンのインスタンスと一致するRIを予約購入してください。でないと割引されないのでめちゃくちゃ損します。
インスタンスサイズの柔軟性
ここまで書いた通り、仮想マシンの料金は条件に一致したRIを適用させることで従量課金よりも安く抑えられます。
ここで、実際の案件を想定してみます。
案件の規模や開発しているサービスの大きさにもよりますが、仮想マシンを1つではなく、複数稼働させているケースが多いと思います。そのため、実際にRIを適用させるのであれば、仮想マシン一つずつに個別にRIを適用させるのではなく、まとめて適用させた方が、いろいろな面で手間が省けて楽になることでしょう。
以下の条件であれば、複数の仮想マシンに同じRIを適用させることが可能です。
- 同じインスタンスグループに所属している
- 仮想マシンのコア数の合計 ≦ RIの指定コア数
そのため、適用イメージは以下になります。
(画像はイメージです。おそらく現実ではこんな適用のさせ方はしないかもしれません)
インスタンスの種類が一致しており、なおかつRIの指定コア数に仮想マシンの合計コア数が収まっていれば、まとめて適用させることが可能です。上記の場合であれば、総コア数を満たすDv3対象のRIを予約購入することで、仮想マシンにまとめて適用できます。
インスタンスの種類が不一致もしくは、コア数が超過している場合は購入しても適用させられないのでご注意ください。
仮想マシンにRIを適用する
設定手順
ここからはAzure RIの設定方法について書きます。
①Azure Portalにログインします。
②Azure Portal 画面左上のハンバーガーメニューから、「すべてのサービス」を選択します。
③画面左上の検索欄に"予約"と入力すると、時計マークの「予約」というサービスが表示されるので、選択します。
④「追加」を選択します。
⑤購入予約画面より「仮想マシン」を選択します。
画面右側・購入する製品の選択から、希望の「スコープ」を選択し、RIを適用させたい仮想マシンのインスタンスに一致するものを選び、「カートに追加」を選択します。
(スコープについては後ほど説明します)
⑥追加したRIの請求頻度を「前払い」に設定し、「レビューと購入」を選択します。
数量に関しては、推奨数量が表示されるのでよほどのことがなければ設定はそのままにします。
追加で購入したいRIがある場合は、「その他の製品を追加する」からもう一度「仮想マシン」を選択します。
⑦内容に間違いがなければ、「今すぐ購入」を選択します。
選択後、購入したRIが仮想マシンに適用されます。
RIの適用範囲
ここまで書いた通り、RIは指定のインスタンスと合致する仮想マシンに対して適用されます。
設定方法自体はこれで問題ないのですが、このままではサブスクリプション内のすべてのDv2シリーズの仮想マシンに対してRIが適用されてしまいます。先述の通り、同じインスタンスグループでも、常に動かしっぱなしの仮想マシンと、特定のタイミングだけ動かす仮想マシンに分かれているケース等もあるので、サブスクリプション内のすべてに同じ条件でRIを適用させてしまうとかえって無駄なコストが発生する原因になりかねません。
そこで、設定途中で出てきた「スコープ」の設定をすることで、RIを適用させる仮想マシンを絞ることができます。といっても、どの仮想マシンに適用する…と指定するのではなく、適用したい仮想マシンのみを集めたサブスクリプションもしくはリソースグループなどを指定し、適用対象を決める必要があります。
スコープの範囲は以下の通りです。
- 共有
- ユーザーが課金対象にしているサブスクリプション内の仮想マシンすべてに適用される
- 単一のサブスクリプション
- 指定したサブスクリプション内の仮想マシンすべてに適用される
- 1つのリソースグループ
- 指定したリソースグループ内の仮想マシンすべてに適用される
- 管理グループ
- 複数のサブスクリプションの中から、指定のリソース(今回の場合は仮想マシン)をまとめたグループ内の仮想マシンすべてに適用される
この4つの中から選び、うまいこと適用させたい仮想マシンにRIを適用させてください。
いろいろ注意事項
他にも書けることはいっぱいあるのですが、全部書いていると私の学生時代の卒論くらい膨大な量になりそうなのでこの辺で押さえておきます。たぶんAzure RIの概要くらいは伝わってると思いますので(申し訳程度のタイトル回収)。
あとはこの辺気を付けてねーっていう注意事項だけ簡単に書いて終わります。
- 適用させたいサブスクリプション、仮想マシンがない状態で購入しない
=>いわずもがな
- 適用したい仮想マシンのリージョン、インスタンスを間違えない
=>これもいわずもがな
- 以下のインスタンスには適用できない
=>A、Av2、Gシリーズ
- 以下のサブスクリプションじゃないと適用できない
=>従量課金、EA、CSP
以上、Azure Reserved VM Instanceの概要についてでした。
Azureって本当にいろいろなことができるので、こういう媒体だと最新の機能とか○○使ってみた、みたいな技術要素が強い記事が多いイメージですが、コスト管理という側面で書かれた記事はあんまり見たことがなかったので、今回書いてみた次第になります。
この記事が、誰かにとって無駄の削減に繋がったり、さらなるクラウドサービスの活用に繋がれば幸いです。
株式会社ネクストスケープでは、開発エンジニア(Web,スマートフォンアプリ,xRなど)やプロジェクトマネージャーを募集しております。
ご興味がありましたら、採用ページのエントリーフォームよりご応募いただけますと幸いです。