インフラ構成を見直した結果、運用コストが99％削減できた話

※ 本稿は、VR法人HIKKYのorganization下のQiita/著者のZenn両方に投稿しております。技術サイドでの詳しい話はZennに乗せておりますので、興味ある方はそちらもご確認ください。

https://zenn.dev/kazu0617/articles/699ca7d354c4c0

# はじめに

自分はHIKKYインフラチームに所属しているkazuと申します。以前にこのような記事を投稿させていただきました。

https://magazine.vket.com/n/n1f4447704b0e

インフラチームでは、インフラ運用コストの削減のため、日夜様々な施策を実施しております。
先月では「インフラコスト確認大会」を実施し、HIKKYのインフラのコストを全体的に確認する会を実施いたしました。
今回、インフラの運用コストを見直す一つのきっかけとなった（個人の感想です）、あるコスト削減の施策をご紹介いたします。

## 動画配信環境について

当社では、VirtualMarket等のイベントにて、動画のブース内に埋め込むことをしばしば行っております。

https://www.youtube.com/live/CNDfgT6MeC4?t=6521

こういった、いわゆる静的ファイルを配信する環境について、一般的には Amazon の提供する AWS (Amazon Web Services) を活用しております。

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

弊社の場合でもこれは大きく変わらず、主にAWS内の二つのサービスを組み合わせて提供しておりました。

- 「CloudFront」と呼ばれるコンテンツ配信サービス
- 「S3」と呼ばれるコンテンツ保管サービス

この二つのサービスを入れ子構造にして提供しておりました。

![説明用論理構成図](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147334/dfd72b51-f06c-54f2-e7ca-54bacef16023.png)

今回は「インフラの運用コスト」という観点から話を進めます。

この構成の場合、主に下に上げる三点が主な課金ポイントとなります。

- CloudFrontのアクセス数に対する課金: そこそこ(多量ではない)
- S3の保管に対する課金: 200GB程度
- CloudFrontの転送量(Egress)に対しての課金: 数TB

動画の数もアクセス数もそれなりにありますが、主に転送するデータが「動画」のため、転送量が非常に多くイベントごとに莫大なコストがかかっていた状態でした。（社内システムでイベントが開催されるたびパトランプが点灯している状態でした）

![2023年7月だけ異常に高い図](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147334/e29f4215-0fe4-d3b6-e227-a407a60c5c0a.png)

# 構成変更前夜

この時はちょうど入社して半年ぐらいで、そこそこ業務の内容が入ってきたタイミングでこのアラート・構成を知った感じです。

自分としてはこの構成を確認したときに、「趣味でよく使っているあのサービスを組み合わせれば解決するのでは…？」となりました。

以前アドベントカレンダーに書かせていただいた、「Cloudflare R2」を活用した構成です。

https://zenn.dev/kazu0617/articles/4a890a4a21f867

自分は以前からCloudflareのサービスを趣味レベルで活用させていただいておりました。

https://twitter.com/Gameofthebest/status/1138246225012989952

なので、R2の存在も前々から知っており、見て即「R2に移植したい」とぼやいたところ、「検討の価値あるよ」とのこと。

![提案していた時のDiscord](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147334/8325ab14-11ea-5058-82f5-c1ecafb06c95.png)

そこからもう30分ほどで構成・それに係るランニングコストを見積もったところ、ほぼほぼ全てのランニングコストが無料枠に収まり、90％以上のコスト削減ができることが判明しました。

![計算しながらアドレナリンが出っ放しでした](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147334/9cdb6a58-d5f3-a8a4-80b1-8117c8e4896d.png)

そのため、この構成を検討後、すぐにこちらの構成に変更するべく奔走を開始しました。

# やったこと

## 動画データの転送

ドメイン自体はCloudflareを使用していたので、そちらのアカウントにR2の設定を追加しました。データの転送については以下の二点からCloudflareのサービスに一任しました。技術面が強くなるため具体的な注意点はZennで解説しております。

- 動画データの追加は頻繁ではない
  基本的にイベント単位で追加していました。
- 動画データ自体、そこまで多量ではない
    今まで格納した動画の容量を確認しましたが、全体量について移行するにはそこまで時間のかかる量ではありませんでした。

https://blog.cloudflare.com/ja-jp/cloudflare-r2-super-slurper-ja-jp/

# 利用ユーザへの周知

元々の構成で上げていた社内ユーザに対し手順を用意しました。

「旧CDNはこれ以降使えなくなるよ、新CDNに移行してね」と連絡し、各自アクセスキー、特権ユーザにはCloudflareのアカウントを発行しました。

## アップロード方法について

以前のこの記事を読んでいただければと思います。この時は非エンジニア向けの文章で整備し周知しました。

https://zenn.dev/kazu0617/articles/4a890a4a21f867#%E9%9D%9E%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%90%91%E3%81%91

# そして迎えた冬

当社のイベントは夏の冬の二回あります。
夏はえらい額かかっていました。

今回も同等のアクセスが来ると考えられCloudflareを確認した結果…Cloudflareの費用は試算の通りでした。

例えるなら「ない袖は振れない」人でも「まあこれぐらいなら」というレベルです。

なお、アクセス数取得の関係でAWSからCloudFlareにトラフィックをリダイレクトしている関係上、CloudFrontにも若干は乗りました。ただ、諸々の費用を夏と冬で比較した結果…

![2023/07と2023/12を比較したときに微風になっている状態](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147334/aafd8f83-d336-847e-915e-ad251ddae98c.png)


グラフで確認してこれぐらいの効果がありました。
2023/07のAWSの費用と、2023/12のCloudflare + AWSの費用を数値計算したところ、**🎉「99パーセント減を達成しました」🎉**

なんてこったい。

# まとめ
- Cloudflare R2の配送コストは安い
- Cloudflare R2の外部配信に係る転送費用0は効果絶大
- 通信量が大きいデータだと効果が高い

# おまけ

社内で上司が報告しました。

![社内で報告しているDiscord](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147334/474502e9-899a-ae9e-e891-b99198c0b32f.png)

そうしたら社長から直々に褒められました。

![おにくたべたい](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147334/b16d5d32-826f-bdfb-bb27-230ed85454dd.png)

なにとは言いませんが私は焼き肉が好きです。期待しています。