Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
静的アセット配信をCDNに逃がすまで
Search
muso
August 26, 2026
Programming
22
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
静的アセット配信をCDNに逃がすまで
muso
August 26, 2026
More Decks by muso
See All by muso
k8sのシークレット管理をちょっとだけ楽にした話
nishiokashinji
0
160
ALB「証明書上限問題」からの脱却
nishiokashinji
0
440
Railsアプリの画像配信最適化 - Imgproxyを活用したパフォーマンス改善事例
nishiokashinji
0
55
Other Decks in Programming
See All in Programming
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
460
The Rails Doctrine Decade
koic
2
270
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
490
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
190
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
110
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
430
Webの地図
yosuke_furukawa
PRO
6
4.7k
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.2k
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
170
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
290
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
3
370
Jetpack Compose メカニズム
skydoves
0
460
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
310
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
700
So, you think you're a good person
axbom
PRO
2
2.2k
The Cult of Friendly URLs
andyhume
79
7k
The Limits of Empathy - UXLibs8
cassininazir
1
680
Build your cross-platform service in a week with App Engine
jlugia
234
19k
4 Signs Your Business is Dying
shpigford
187
23k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
280
Transcript
静的アセット配信を CDNに逃がすまで AKASHI.rb LT 2026/8/25
自己紹介 無双(@nishi_okashi) SRE チームのエンジニア 加古川生まれ、稲美町在住 AKASHI.rb の管理人 Super Ramen Engineer
前提のはなし オンラインコミュニティサイト構築アプリ 「独自ドメイン提供」がある 顧客ごとに別のドメインで配信 一方、静的アセットは全ホスト共通
出発点 静的アセットをRailsから配信していた、しかも無圧縮のまま 転送量がそのまま配信コストに乗る
増え続ける転送量とコスト
まず圧縮しよう
打ち手①:圧縮する
圧縮のつらみ:メモリ 同時に返すぶんだけエンコーダーが要る 一度増えると減りにくい
毎回圧縮しないよう キャッシュしよう
打ち手②:キャッシュする サーバーにキャッシュ層を挟む 毎回圧縮せずに済むようになった が、キャッシュもメモリに載る Web
キャッシュのつらみ:構造的な限界 配信するバイト列は全ホスト共通 でもキャッシュキーにはホストが入る 同じ静的アセットが顧客ドメインぶん複製される
自前で配信する限り、 これは解けない
打ち手③:CDNに任せる User → Cloudflare → CloudFront → S3 圧縮もキャッシュもCDN側の仕事 オリジンには素のファイルを置くだけ
事前圧縮ファイルの用意も不要 Cloudflare は zstd まで対応
成果 オリジンにリクエストが届かなくなった 圧縮とキャッシュをオリジンで抱えなくてよくなった 大量アクセス時のPumaスレッド圧迫も解消されたはず (未計測)
これにて一件落着 …と思いきや
移行後、一部の顧客で スタイルが崩れた
原因:顧客のネットワーク 静的アセットを新しいドメインから配信していた そのドメインが顧客の社内ネットワークで許可されていない CSS / JS だけ落ちてくる → スタイル崩れ 影響は社内ネットワークからのみ
エンドユーザーには影響なし
解決:既存ドメインに相乗り 画像配信で使っていたドメインは既に許可されていた そこに静的アセットも相乗りさせた 対価として、ドメイン名から用途が読めなくなった
まとめ Before から無圧縮で配信、転送量がコストに直結 圧縮してもキャッシュしても、メモリの問題が残る After : CDN に逃がしてまとめて解けた オリジンはリクエストも圧縮・キャッシュ負荷も抱えなくなった ただし配信ドメイン変更は顧客のネットワークに阻まれる
Rails
ご清聴ありがとうございました