リザーブドインスタンスを購入してサーバーコストを40%削減した話
私が所属しているインフラ/SREグループで設定している目標の一つが「コスト削減を行い、事業を継続できる状態を作る」というものです。
これまでAWS Cloud9の構成変更やCephからFSx for OpenZFSへのストレージ移設など、インフラコストを減らすために様々な取り組みを実施してきました。
今回は、7月に開催したイベントの中でもこれから進める予定だとご紹介して、9月に実際に購入したAWSのリザーブドインスタンスのお話をしたいと思います。
購入した経緯
弊社ライフイズテックでは、中学校・高校の情報の授業で利用していただくライフイズテックレッスンというオンラインの教材をご提供しています。
おかげさまで、全国600自治体、4,000校、中学・高校生120万人にご利用いただいています。
2019年にAWS上でサービスを開始し、現在もお客様の声を反映しながら積極的に開発と改善を進めていますが、基本的なインフラ構成が固まってきたことと、これまでの実績から年間を通じたアクセスや負荷の傾向が把握できるようになってきたことから、今後の見通しを立ててリザーブドインスタンスを購入する土台が整いました。
購入方法と費用
改めてご説明すると、リザーブドインスタンスとは、長期間の利用を予約(リザーブ)することで、大幅な割引を受けられるサービスのことです。Amazon EC2やAmazon RDSなどのサービスが対応しています。
予約する期間は1年か3年を選ぶことができ、3年のほうが割引率が高くなります。購入する方法には、以下の3つがあります。
全部前払い
初月に全額を一括で支払います。割引率は最も高くなります。
一部前払い
初月に一部を支払い、残額を毎月支払います。
前払いなし
割引単価料金を毎月支払います。
今回はRDS(Aurora)のインスタンスを1年契約で購入する目的で、3種類の購入方法それぞれで、毎月の支払額がどう推移するのか、損益分岐点はどこにあるのかを試算してみました。
前払いなし(黄色)だと、オンデマンドよりも少ない金額を毎月支払います。全部前払い(青色)だと、初月に全額支払いますがその後の支払いがないため、1年の真ん中くらいで積算した費用がオンデマンドよりも安くなります。
試算した結果、一部前払いでもオンデマンドと比較した割引率が40.72%となり、全部前払いとほとんど同じくらい削減できることから、今回は一部前払いで購入することに決めました。
注意点
リザーブドインスタンスを購入することで、コストを抑えられるという大きなメリットはありますが、その反面、契約期間中は難しくなることもあります。
インスタンスファミリーの変更
例えば、アクセス数や負荷が想定していた以上に高くなってしまってインスタンスタイプ変更したいとき、t4g.mediumからt4g.largeのように同じファミリーの中でサイズを変えることは(差額を支払うことで)できますが、t4g.mediumからm7g.mediumのようにファミリーを変更することができません。
インスタンスファミリーについてはこれまでの使用状況や用途から、少し先を見越して最適なものを決めておく必要がありそうです。
新しいインスタンスタイプへの更新
上記と重複する部分もありますが、よりコストパフォーマンスが高い新しいインスタンスタイプに更新できないということもあります。
その点では、新しいインスタンスタイプがリリースされるのが1年に1回くらいの頻度なので、現時点で最新のものに更新した後で、1年契約でリザーブドインスタンスを購入することにしました。
アーキテクチャーの変更
現在ライフイズテックレッスンではECS EC2上でコンテナを動かしていますが、ストレージとして利用しているFSx for OpenZFSがFargateに対応したら、そちらに移行したいと思っています。EC2のリザーブドインスタンスを購入するとそのような構成変更もすぐにはできなくなります。
ただ、AWSの新しい機能はいつリリースされるか分からず、ノウハウが共有されるまでの時間も考慮すると、1年くらいは待ってもいい気もします。
インスタンスタイプを変更する可能性がどうしてもぬぐい切れない場合は、スタンダードではなく、柔軟性があるコンバーチブルリザーブドインスタンスを購入する、Savings Planを契約するという方法もあります。
ちなみに、弊社のサービスでもAurora Serverlessのインスタンスの利用が増えてきていますが、現時点でSavings Planがなさそうなので早くリリースされてほしいです。
まとめ
今回、サービスの基本的な構成が固まり、アクセス数や負荷の推移の見通しが立ってきたため、コスト削減策の一環として初めてリザーブドインスタンスを購入しました。一定期間インスタンスタイプが固定されるため、購入する前に最新のインスタンスタイプに更新する作業も行いました。
今後も定期的にインフラアーキテクチャーを見直して改善しながら、リザーブドインスタンスを利用してコストを含めて最適化していきたいと思います。