見出し画像

S3 Glacierにデータ移行したら大きな教訓を得た話

はじめに

こんにちは、なっくです。
ナビタイムジャパンでインフラを担当しています。

今回はコスト削減のためにS3 Glacierにデータ移行したら大きな教訓を得た話について、していきたいと思います。

S3 Glacierに移行したのに安くならない

まずはこちらの画像をご覧ください。

S3コストのグラフ

横軸が月、縦軸が金額で当社の管理している、とある環境のS3コストのグラフになりますが、ひと月だけ急激にコストが増えてる月があります。
具体的な金額は控えますが、実に100万円以上の上り幅となっています。

そして翌月以降も特に金額に変化がありません。
S3 Glacierに移行したら安くなるはずなのに、全く変化がないどころ若干高くなってるようにすら見えます。
これでは何のためにコストを掛けて移行したのか、無意味どころかマイナスです。

なぜこんなことになってしまったのでしょうか?

S3ストレージのおさらい

さて、本題に入る前にS3のおさらいをしていきたいと思います。

S3とは高耐久で無制限にファイルを保存できるクラウドサービスです。
そしてS3には種類があり、それぞれ仕様や料金計算の仕方が異なります。
詳細はこちらの本家のサイトで詳しく見ていただくとして

今回は簡単に以下の2種類について触れて行きます

  • S3 Standard

  • S3 Glacier Deep Archive

S3は大きく分けてS3S3 Glacier 2種類に別けられ
ざっくり説明すると、そのまま使えるストレージ(S3)と使うためにひと手間かかるが保存費用が安いストレージ(S3 Glacier)の2種類になります。
そしてひと手間かかるのに何故S3 Glacierに移行したいかというと、ひと手間掛けても良いぐらい安くなるからです。
実際にサイズに掛かる費用は、アジアパシフィック(東京)リージョン価格で(※2023年3月6日現在)

  • S3 Standard :0.0230.025USD/GB(サイズ依存)

  • S3 Glacier Deep Archive :0.002USD/GB

約10倍の差があります。
ただし、S3の料金はファイルサイズのみではなく、保存(PUT)と呼出(GET)にも費用が掛かり、それぞれ

  • S3 Standard

    • PUT:0.0047USD/1,000リクエスト

    • GET:0.00037USD/1,000リクエスト

  • S3 Glacier Deep Archive

    • PUT:0.065USD/1,000リクエスト

    • GET:0.00037USD/1,000リクエスト

と保存(PUT)の料金が約13倍の差があります。
S3 Glacier Deep Archiveはそのままでは使えないといった問題もありますが
これらの料金差から一般的にS3 Standardで通常利用し、長期保存する必要のあるファイルのアクセス頻度が下がってきたらS3 Glacier Deep Archiveに移行するといった運用をしてる方が殆どではないかと思います。

なぜS3 Glacierに移行したのに安くならないのか

と此処までは既知の知識として、当然今回のコスト削減施策もこれらを踏まえた上で立てておりました。
S3 StandardからS3 Glacier Deep Archiveへの移行にも料金がかかりますが、サイズに掛かる費用は1/10になりますので1年程でペイできてそれ以降はコスト削減になる予定でした。
以下のグラフのように・・・

S3 コストグラフ(理想)
S3 コストグラフ(現実)

ではなぜ予定外にコストが下がらなかったのかと言いますと

S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive に保存されている各オブジェクトの場合、Amazon S3 はメタデータに対する課金可能な 40 KB のオーバーヘッドを追加し、それは、S3 標準レートで請求される 8 KB と S3 Glacier Flexible Retrieval または S3 Deep Archive レートで請求される 32 KB から構成されます。

https://aws.amazon.com/jp/s3/pricing/

簡単にまとめると、1ファイルにつき40KB分加算されますと言うことになります。
極端な話0KBのファイルをS3 Glacier Deep Archiveに移行すると40KBのファイルとして課金されます。
普通であれば誤差レベルにしかならない仕様です。
実際当社ではS3に保存してるファイルは100MBから10GBのファイルが多数を占めており他の環境で実施しても問題ありませんでした。
ところが今回の環境では数KBのファイルが殆どの為、移行コストが掛った上にランニングコストも安くならず、100万円以上の移行コスト分のだけ無駄に消費した結果となってしまいました。

S3 Glacier移行で損しない為に

今後の教訓といたしまして

S3 Glacier移行する際にはバケットのサイズだけではなく、ファイルサイズやファイル数もしっかり確認する

今回の例ですと、ファイル数が少なければ仮にランニングコストが安くならなかったとしても、移行コストは低く抑えられましたのでそれほど被害は出ませんでした。
また、S3 Glacierの最低ファイルサイズを理解した上で事前に確認していれば、移行してもコストが下がらないという事もありませんでした。

そもそも、S3 Glacierに移行を検討するのはバケットサイズが大きくなってきてからです。
数GBのバケットをS3 Glacierに移行してもさほどコスト削減は見込めませんので、おのずと対象は数TBのバケットが対象になります。
日常的に数TBのファイルを使ってる環境というのは限られてくると思いますので、S3 Glacierへの移行を検討を始めると思います。
そして数TBのバケットと言うことはファイル数もそれに見合った数になるということ、つまり失敗したときの規模もそれ相応になります。

それらを踏まえまして、このよう失敗をしないよう皆さんは細心の注意を払って作業してください。

最後までお付き合いいただき本当にありがとうございました。