🐁

RDSのリザーブドインスタンスに気をつけよう

2021/06/26に公開

背景

会社で動かしているAWSインスタンスのRIが6/25に期限が切れるとお知らせがありましたので、5月ごろからEC2インスタンスやRDSの棚卸し作業を行なっていました。

その時にRDSのリザーブドインスタンス(RI)に関する注意点、もとい私がやらかした失敗談です。
EC2のRIとは微妙に仕様が異なっていて罠にハマりましたので戒めの意味を込めてここに記します。

EC2リザーブドインスタンスとSavings Plansについて

表題から主旨が外れますが、せっかくなのでEC2インスタンスのコスト削減について説明します。

昨年会社ではEC2インスタンスはすべてRIを使って年間のランニングコスト削減に努めていました。
ところが弊社では、EC2インスタンスタイプを頻繁に変えて、作っては壊してを繰り返しておりインスタンスタイプが固定されるリザーブドインスタンスではあまりコスト削減効果が見込めませんでした。
https://aws.amazon.com/jp/ec2/pricing/reserved-instances/
そこで今年からより柔軟に対象インスタンスを変えられるSavings Plans(SP)に変更することに決めました。
https://aws.amazon.com/jp/savingsplans/
RIは指定されたリージョンとインスタンスタイプにしか割引が適用されませんが、SPは時間あたりの使用量に応じて事前に先払いする仕組みとなっています。
例えば一時間あたり$0.0199を1年間分全額先払い(≒$175.2)すれば、オンデマンドですと$0.0272かかる東京リージョンのt3.smallインスタンス1台を1年間利用できるという計算です。[^1]

インスタンス名 Savings Plans の料金 オンデマンドと比較した費用節減 オンデマンド料金 リージョン OS
t3.small 0.0199 USD 27% 0.0272 USD Asia Pacific (Tokyo) Linux
[^1]: https://aws.amazon.com/jp/savingsplans/compute-pricing/

ここでRIと違う点はコンピューティングリソースに対して事前に先払いするという点です。
RIでは東京リージョンのt3.smallインスタンス1台と指定するとその割引が東京リージョンのt3.smallインスタンス1台にしか有効となりません。
SPではt3.smallの半分のコストであるt3.micro2台分に対しても割引を利かせることも可能となります。

AWSに$0.0199申請した場合の割引適用インスタンス台数と期間[^2]

t3.micro t3.small t3.medium
2台*1年 1台*1年 1台*半年
[^2]: 東京リージョンの場合

4月ごろから会社で動かしているWebサーバーのインスタンスタイプをt3.mediumからt3.smallに移行している段階でしたので、インスタンスタイプが変更されても割引が効くSPの方が弊社にちょうどよかったことになります。

また弊社は7月から期初となりますので、新年度の予算にAWSのコストを計上したいというマネージャーの要望のもと適用日を6/26からではなく7/1に変更しました。
EC2インスタンスのRIとSPは購入日に即日反映させる以外にも、購入日を予約して先の日付を指定して請求とプラン開始日を変更できます。

大分話が脱線しましたが、EC2インスタンスのコスト最適化はこれで問題なく完了しましたので次はRDSのRIも同じように7/1適用で申請しようとしました。

RDSのRIについて

RDSもEC2インスタンスと同じように6/25で期限が切れますが、7/1に適用させるために適用日付を変更して申請しようとしました。
ところが、RDSのRIには日付の選択オプションがなくて、私は次の画面で選択できるのかなと思い、このまま送信ボタンを押してしまいました。

すると購入完了の画面とコンソール画面にはリザーブドインスタンスの一覧に新しくインスタンスが表示されてしまいました。

AWS公式のドキュメントを探してもわからなかったのですが、サーバーワークスさんのテックブログに以下の内容が記載されていました。[1]

質問1. RDS の RI の購入予約は可能ですか?
回答. できません。そのため、更新作業は都度期限が切れたタイミングで行なう必要があります。

サービス 更新予約 その他
EC2 Reserved Instance 可能 未来日付指定での購入が可能
RDS Reserved DB Instance 不可能 2021年4月現在提供されていません
Savings Plan 可能 未来日付指定での購入が可能
CloudFront Security Savings Bundle 可能 自動更新機能有り。未来日付での購入は不可

私はこの仕様に気が付かず、SPと同じように7/1申請できると思い、6/15にRDSのRIを購入してしまうというやらかしをしてしまいました😢

6月に購入してしまったので期末の予算購入になりましたが、会社に事情を話して大きな影響がないことが幸いでした。

原因

実は昨年RIを申請したのは退職した前任のエンジニアで私は引き継ぎ、前任者からはEC2のSPについての説明はありましたが、RDSのRIについての説明がなく社内にもドキュメントがないことがわかりました。
SPやEC2のRIは購入予約できたのだからRDSのRIも予約できると思い込み、確認しなかったミスと重なりて理想的なコスト最適化に及ばない結果となりました。

対策として、RDSのRIの申請方法について社内でドキュメントをまとめて来年以降他の人が同じミスを起こさないように注意書きを含めた手順書を作成して気をつける予定です。

所感

RDSのRIについてやらかしてしまったことを記録しました。
RDSのRIの公式ドキュメントは意外にも日本語化されておらず、この仕様の違いについて述べている媒体も少なかったので、皆さんもRDSのRIを購入するときは同じ轍を踏まないように気をつけてください。

LT資料

LTのスライド資料です。

参考文献

https://docs.amazonaws.cn/en_us/AmazonRDS/latest/UserGuide/USER_WorkingWithReservedDBInstances.html

脚注
  1. https://blog.serverworks.co.jp/rds-ri-faq ↩︎

GitHubで編集を提案

Discussion