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
31
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
170
ALB「証明書上限問題」からの脱却
nishiokashinji
0
470
Railsアプリの画像配信最適化 - Imgproxyを活用したパフォーマンス改善事例
nishiokashinji
0
58
Other Decks in Programming
See All in Programming
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
170
ActionController meets Protocol Buffers
sorah
0
630
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
270
golang-bob.pdf
iwatsukayura
0
130
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
300
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
120
APNsからLive Activityを開始する話
yumnumm
0
170
R8 の設定見直しでアプリサイズ削減
andpad
0
220
ジョジョの世界をXRで再現する
mofurune
0
180
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Git: the NoSQL Database
bkeepers
PRO
433
67k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
220
Designing Powerful Visuals for Engaging Learning
tmiket
1
610
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
570
Documentation Writing (for coders)
carmenintech
77
5.6k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
460
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
BBQ
matthewcrist
90
10k
A better future with KSS
kneath
240
18k
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
ご清聴ありがとうございました