0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

月6,000万円の動画インフラ、構成を見直したら「最大80%削減」できる計算になった話

0
Last updated at Posted at 2026-09-16

技術系メディア「石ころのニュースレター」に掲載された動画共有アプリ「setlog」の創業者インタビューを読んでいて、そのインフラ費用に目を疑いました。

毎月のインフラ費用が、およそ40万ドル($400k)。
比較のため 1ドル=150円に固定 して換算すると、月額約6,000万円です。
毎日5,500万本もの動画がやり取りされているとはいえ、扱っているのはYouTubeのような長編動画ではなく、友達同士で送り合う「たった2秒」の日常動画です。

setlogの公式プライバシーポリシー を確認すると、写真や動画はAWSのソウルリージョンに保存され、CloudFront経由で配信されているとのことでした(※アカウント情報等のテキストデータは米国保存と記載)。

これを見たとき、ひとつの疑問が湧いてきました。

「これ、構成を見直したら本当はいくらまで削れるんだろう?」

もちろん実際の請求内訳は非公開ですし、大口契約割引もあるはずです。
それでも、各社の最新公開料金をもとに前提条件を揃えて電卓を叩いてみたところ、アーキテクチャの急所を突くことで 最大約80%削減(月1,100万円台) まで圧縮できる試算結果が出ました。

同時に、 「動画を1本ずつアーカイブすると移行リクエスト代だけで月1,500万円溶ける罠」「動画を消すと請求額が増える落とし穴」 など、クラウド特有のリアルな仕様も見えてきました。

思考プロセスと計算内訳をすべて公開します。


1. 月6,000万の内訳:通信費と「移行リクエスト代」の壁

まずは、現状のAWS構成で「なぜ月6,000万円規模になるのか?」を計算してみます。

前提条件の統一(全構成共通)

  • 料金参照日: 各社最新の公開改定料金(B2改定後の1TBあたり$6.95等を含む)
  • 為替レート: 1ドル=150円で固定
  • 動画1本: 約0.6MB(2秒の軽量動画)
  • 月間投稿数: 1日5,500万本 × 30日 = 月間16.5億本(月間データ純増:約990TB ≒ 約1PB)
  • 月間配信量: 約4PB(4,000TB)(1本につき閲覧4回を想定)
  • 蓄積保存容量: 累計24PB(サービス開始から約2年分が蓄積されている状態と仮定)
    • 直近のアクティブ動画:2PB
    • 過去のアーカイブ動画:22PB(十進22,000TB = 約20,008.88 TiB = 20,489,096.64 課金GiB)

AWS構成の計算内訳

CloudFront(配信):約4,441万円($296,073)

  • 地域別配分(仮定):
    • 韓国+その他アジア:90% = 3,600TB(3,600,000GB)
    • 北米・欧州:10% = 400TB(400,000GB)
  • データ転送料金(段階単価適用):約$288,285
    • 各地域の公開段階料金(10TB超、40TB超、100TB超、500TB超のディスカウント単価)を区分ごとにそれぞれ適用。
  • HTTPSリクエスト料金(月66億回):約$7,788
    • アジア(59.4億回 × $0.012/1万回 = $7,128)+ 北米・欧州(6.6億回 × $0.010/1万回 = $660)。
  • 小計: $296,073 = 約4,441万円

Amazon S3(保存・操作)

  • S3 Standard(直近2PB):約698万円($46,550)
    • 最初の50TB × $0.025 = $1,250
    • 次の450TB × $0.024 = $10,800
    • 残り1,500TB × $0.023 = $34,500
    • 合計 $46,550 = 約698.25万円
  • S3 Glacier Deep Archive(過去22PB):約615万円($40,978.19)
    • ソウル単価 $0.002 / GiB-月。20,489,096.64 課金GiB × $0.002 = 約$40,978(約614.67万円)。
  • 新規アップロードPUTリクエスト代:約124万円($8,250)
    • 16.5億回 ÷ 1,000 × $0.005 = $8,250。
  • アーカイブ移行リクエスト代の分岐:
    • 【1本ずつ個別移行した場合】:約1,485万円($99,000)
      • ソウルのDeep Archive移行手数料は1,000リクエストあたり$0.06。
      • 16.5億回 ÷ 1,000 × $0.06 = $99,000(約1,485万円)。小さいファイルを個別に移すと毎月この手数料が吹っ飛びます。
    • 【バッチ移行した場合】:約30万円($2,000)
      • 100本を約60MBのアーカイブ(tar等)へまとめることで移行手数料を約15万円に圧縮。これに15万円の試算上の予備費(バッチ処理基盤・展開用インデックス等)を合算し約30万円と置きます。
      • ※ただし100本をアーカイブへまとめるため、1本の復元でもアーカイブ全体の復元・展開と動画位置を管理する索引が必要になる制約が伴います。

image.png

③ API / DB / 運用基盤:約379万円($25,274)

  • API Gateway(HTTP API):約138万円($9,193.5)
    • より安価なHTTP APIを使用する前提。月82.5億回の受付。
    • 最初の3億回 × $1.23/100万回 = $369
    • 残り79.5億回 × $1.11/100万回 = $8,824.5
    • 合計:$9,193.5 = 約137.9万円
  • AWS Lambda:約45万円($3,011)
    • 月99億回実行(メモリ128MB、平均実行時間50ms、x86アーキテクチャ)。
    • リクエスト料金(99億回 × $0.20/100万回 = $1,980)+ 実行時間料金(61,875,000 GB-秒 × $0.0000166667 ≒ $1,031)= $3,011(約45.2万円)
  • Amazon DynamoDB:約61万円($4,073)
    • 現行のソウルリージョン単価を適用。
    • ストレージ容量2TB(無料枠25GB超の1,975GB × $0.27075 ≒ $535)
    • オンデマンド書き込み16.5億回($0.68/100万WRU = $1,122)
    • オンデマンド読み取り66億回($0.1355/100万RRU = $894.3)
    • GSI 1本(書き込み同等:$1,122)+ PITRバックアップ($400)
    • 合計:約$4,073 = 約61.1万円
  • WAF・監視・ログ(共通運用基盤):約135万円($9,000)
    • WAFルールおよびリクエスト評価(約$4,000)+ CloudWatch Logs/メトリクス(約$5,000)= $9,000。

AWSの月額合計比較

  • 個別移行の場合:約7,742万円
    • 4,441万 + 698万 + 615万 + 124万 + 1,485万 + 379万 = 約7,742万円
  • バッチ移行(現場の最適化想定):約6,287万円
    • 4,441万 + 698万 + 615万 + 124万 + 30万 + 379万 = 約6,287万円

現場ですでにバッチ移行を行っていると仮定すると、報道の「月40万ドル(約6,000万円)」と非常に近い数字になります。
公平な比較を行うため、以降の試算ではこの 「AWS最適化基準:約6,287万円」 をベースに比較します。

いずれにせよ、全体の約70%をCloudFrontの転送料が占めている構図は変わりません。

image.png


2. 実験①:直近動画をR2へ(過去ログはAWSでバッチ移行)

通信費を削るため、Cloudflare R2 を導入します。
ただし、24PB全量をR2に置くと保管料だけで月約5,400万円(24,000,000GB × $0.015 × 150円)に達するため、アーカイブ層とのハイブリッド構成にします。

  • R2コスト(直近2PB+リクエスト):約597万円($39,801)
    • 2PB保管料:約450万円(2,000,000GB × $0.015 = $30,000)
    • Class A書き込み(16.5億回):約111.4万円(16.5億 ÷ 100万 × $4.50 = $7,425)
    • Class B読み取り(66億回):約35.6万円(66億 ÷ 100万 × $0.36 = $2,376)
    • 下り転送料金:0円
  • AWS Glacier Deep Archive(過去22PB保管):約615万円
  • Glacierバッチ移行・予備費:約30万円
  • AWS側のAPI / DB / 運用基盤:約379万円
  • 合計:約1,621万円 / 月

基準の約6,287万円から、約1,621万円まで下がりました(約74.2%削減)。

動画の画質を落とさず、24PBの過去データも保持したままです。
「配信は転送料無料のR2、コールドデータはGlacier(バッチ移行)」という組み合わせだけで、毎月約4,660万円のコストが浮く計算になります。

image.png


3. 実験②:「全部Cloudflare」にしてみる

動画配信で大幅に下がったので、アプリのバックエンドもCloudflare(Workers + D1 + Queues)にフル移植したらどうなるか試算してみました。

Workers(API実行):大幅に下がる

  • AWS(API Gateway + Lambda): 月約183万円(138万+45万)
  • Cloudflare Workers:約134万円(約$8,911)
    • 公式料金(100万リクエストあたり$0.30、100万CPUミリ秒あたり$0.02、月99億回・平均30ms実行):
      • リクエスト料金:約$2,967
      • CPU時間料金:約$5,939(99億回 × 30ms = 2,970億ms ÷ 100万 × $0.02)
      • 基本料金等:約$5
      • 合計:約$8,911(約133.7万円)

D1(データベース):AWS(DynamoDB)のほうが約3倍安い

しかし、データベースだけは計算が逆になりました。Cloudflareに寄せたほうが安くなると思いきや、AWSのDynamoDBのほうが約110万円も安かったのです。

  • AWS(DynamoDB):約61万円
  • Cloudflare D1:約172万円($11,446.25)
    • なぜD1のほうが高くなるのか?(Paidプランの無料枠を適用して計算):
      • 動画メタデータ書き込み:月16.5億回 × インデックス含む4行 = 66億行。
      • いいね・コメント等の更新:月34億行。
      • 行書き込み合計:月100億行。無料枠5,000万行を引いた課金対象(99.5億行 × $1.00/100万行)で $9,950(約149.3万円)
      • ストレージ課金:無料枠5GBを引いた1,995GB × $0.75 = $1,496.25(約22.4万円)
      • 読み取り課金:月66億行はPaidプランに含まれる月250億行の無料枠内に収まるため $0
      • 合計:$11,446.25 = 約171.7万円(約172万円)
    • 容量制限の壁:
      • さらに D1のプラットフォーム制限 では、1DBあたり10GB、1アカウント全体でも1TBが上限(有料プラン含む)となっています。
      • そのため、2TBのデータをそのまま収容することはできず、データ保持範囲の縮小や複数アカウントへ分割管理する設計変更が必要になります。

image.png

  • Cloudflare側の監視・WAF等:約50万円
  • Cloudflare集約構成の合計:約1,597万円 / 月(約74.6%削減)
    • 内訳:R2(597万)+ Glacier保管・移行(645万)+ Workers(134万)+ D1(172万)+ 運用(50万)

トータルで見れば月1,600万円弱まで下がってはいますが、「APIはWorkersにする価値があるが、データベースはDynamoDBのまま残したほうが安く、容量制限のトラブルも避けられる」 ということが分かります。


4. 実験③:B2から直接配信させた場合(最大約81.2%削減へ)

さらにストレージ単価を下げるため、Backblaze B2 からの直接配信」 を検証します。
(※Cloudflare連携による配信ではなく、B2からユーザーへ直接配信する構成で試算します)

B2の最新公式単価は $6.95 / TB / 月 です。

  • 直近2PBのB2保管料: 約208.5万円(2,000TB × $6.95 × 150円)
  • B2からの下り転送料(4PB): 0円
    • B2には 「月間平均保存容量の3倍まで下り転送が無料」 というルールがあります。
    • 2PB保管している場合、月間6PBまで転送無料のため、4PBの配信転送料はゼロになります。
  • 過去ログ22PB(Glacier Deep Archive保管): 約615万円
  • Glacierバッチ移行・予備費: 約30万円
  • API実行(Workers): 約134万円
  • データベース(DynamoDB): 約61万円(※前述の通りDynamoDBを維持)
  • 共通運用基盤(WAF・監視等): 約135万円(※同等の監視基盤を維持)
  • 合計:約1,183.5万円(約1,183万円)/ 月

AWS最適化基準(約6,287万円)から、約81.2%削減(月1,180万円台)に到達しました。
報道されている月6,000万円との比較でも約80.3%減となり、「最大約80%削減」まで圧縮できる計算になります。

注意点:B2直配信で「動画を削除すると請求額が増える」逆転現象

ただし、B2から直接配信する場合、この「3倍無料枠」の計算ロジックに注意が必要です。

もし運用中に「ストレージ代を節約しようとして、B2上の動画を2PBから1PBに削除した」とします。
普通なら安くなるはずですが、計算上はこうなります。

  1. 保存容量が1PBに半減(保管料は $13,900 ➔ $6,950 へ、 約104.25万円下がる
  2. しかし「保存容量の3倍ルール」により、無料転送枠も【3PBまで】に縮小される
  3. ユーザーの閲覧量は変わらないため、配信量は4PBのまま
  4. 枠からはみ出た1PB分に、超過転送料($0.01/GB = 1PBで$10,000 = 約150万円)が発生する
  5. 差引:請求額が約45.75万円($3,050)増えてしまう

「容量を節約したのに、無料転送枠が縮んで請求額が増える」という逆転現象が起きます。
無料枠の連動ルールを理解していないと、良かれと思った施策が裏目に出る典型例です。

image.png


5. まとめ:試算結果の比較(条件統一)

蓄積24PB・配信4PB、共通運用基盤費を含めて条件を統一した試算結果です。

構成案 インフラ月額概算 削減率(対AWS最適化) アーキテクチャのポイント
①-A AWS定価(個別移行) 約7,742万円 - 転送料(約4,441万)+個別移行手数料(約1,485万)で高騰
①-B AWS定価(バッチ移行) 約6,287万円 基準(±0%) 現場の最適化想定。転送料が全体の約70%を占める
② 直近R2 + 過去Glacier(AWS) 約1,621万円 約74.2%削減 一番現実的。下り転送料無料とアーカイブの安さを両立
③ アプリをCloudflare集約 約1,597万円 約74.6%削減 Workersは安いが、D1のアカウント1TB制限と課金に注意
④ 直近B2直配信 + 過去Glacier + DynamoDB 約1,183万円 約81.2%削減 最安構成(最大約80%削減)。ただしB2無料枠の縮小に注意

※1ドル=150円固定。公開料金をもとにした机上試算であり、実際の大口契約割引、移行工数、復元費用等は含みません。


おわりに

「1日5,500万本の動画アプリ、インフラ代は月6,000万円」

規模の大きさに目が行きがちですが、内訳を分解してみると、最大のコスト要因は「CloudFrontの下り通信費」と「オブジェクト単位の移行手数料」 でした。

そして今回面白かったのは、単純に「すべてを最新の格安クラウドに引っ越せばいいわけではない」という点です。

  • 24PBを丸ごとR2に持っていくと、アーカイブ層がないため保管料だけで月約5,400万円かかってしまう。
  • かといってGlacierに1本ずつ動画を放り込むと、移行リクエスト代だけで月約1,485万円が溶ける。
  • だからこそ、 「配信は転送料無料のR2、コールドデータはバッチ化してAWS Glacier、DBはDynamoDB」 という、各クラウドの強みを活かした適材適所のハイブリッド構成が最も美しくコストを削れます。

料金表のたった数行のルール(転送料無料、3倍枠、インデックス課金、移行リクエスト手数料)をどう読み解き、どう組み合わせるか。

もちろん本番環境ではSLA、配信遅延、セキュリティ、運用負荷など金額以外の要素が最優先されます。安易な移行が正義ではありません。

それでも、 「自分たちのサービスの最大のボトルネックは何で、どの料金モデルを組み合わせるのが正解なのか?」 を正しく見極めることの重要性を、改めて実感する試算でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?