Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
フルCDNアーキテクチャ実験 / Minami Aoyama Night #1
Search
dekokun
December 09, 2016
Technology
5
18k
フルCDNアーキテクチャ実験 / Minami Aoyama Night #1
Minami Aoyama Night#1 での発表資料
https://connpass.com/event/45263/
dekokun
December 09, 2016
Tweet
Share
More Decks by dekokun
See All by dekokun
Amazon Aurora の v1 が EOL になるので 10 クラスタアップグレードして出てきたノウハウ
dekokun
0
2.4k
東京にいながら仕事のほとんどを京都のエンジニアと一緒にしている私のリモートワークの話 / Hatena Engineer Seminar #6
dekokun
3
11k
はてなでの サービス信頼性向上のための 取り組み事例
dekokun
15
5.8k
Other Decks in Technology
See All in Technology
VCC 2025 Write-up
bata_24
0
180
コンテキストエンジニアリングとは? 考え方と応用方法
findy_eventslides
4
890
Where will it converge?
ibknadedeji
0
140
PLaMoの事後学習を支える技術 / PFN LLMセミナー
pfn
PRO
9
3.8k
Azure Well-Architected Framework入門
tomokusaba
0
280
DataOpsNight#8_Terragruntを用いたスケーラブルなSnowflakeインフラ管理
roki18d
1
330
Access-what? why and how, A11Y for All - Nordic.js 2025
gdomiciano
1
110
LLMアプリケーション開発におけるセキュリティリスクと対策 / LLM Application Security
flatt_security
7
1.8k
Modern_Data_Stack最新動向クイズ_買収_AI_激動の2025年_.pdf
sagara
0
200
Why React!?? Next.jsそしてReactを改めてイチから選ぶ
ypresto
10
4.4k
自作LLM Native GORM Pluginで実現する AI Agentバックテスト基盤構築
po3rin
2
240
生成AI_その前_に_マルチクラウド時代の信頼できるデータを支えるSnowflakeメタデータ活用術.pdf
cm_mikami
0
110
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
697
190k
The Straight Up "How To Draw Better" Workshop
denniskardys
237
140k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.7k
The Pragmatic Product Professional
lauravandoore
36
6.9k
BBQ
matthewcrist
89
9.8k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
54
3k
A designer walks into a library…
pauljervisheath
209
24k
The World Runs on Bad Software
bkeepers
PRO
71
11k
Automating Front-end Workflow
addyosmani
1371
200k
Transcript
ϑϧCDNΞʔΩςΫνϟ࣮ݧ Minami Aoyama Night#1 גࣜձࣾͯͳ id:dekokun
ࣗݾհ 2
ࣗݾհ • id:dekokun • ͯͳͰΠϯϑϥ@౦ژ • WebΦϖϨʔγϣϯΤϯδχΞ • ͯͳͷ͍Ζ͍ΖͳαʔϏεͷΠϯϑϥ୲ •
ೖࣾ1ͪΐͬͱ • લ৬PHPͱJSॻ͍ͯ·ͨ͠ 3
4 • ͯͳϒϩάͷߏհ • ಈతϖʔδΛΩϟογϡ͢Δࡍʹߟ͑Δ͜ͱ • ϑϧΩϟογϡΞʔΩςΫνϟ • ϑϧCDNΞʔΩςΫνϟ ຊͷൃද༰
ͯͳϒϩάͷߏհ 5
ͯͳϒϩάͷߏհ(େ෯লུ൛) 6
• ۃΊͯγϯϓϧͳߏ • Ұ෦ࠓճͷൃදʹؔͳͦ͞͏ͳߏཁૉ େʹলུ • batch, worker, CDN 7
ͯͳϒϩάͷߏհ
• εϧʔϓοτ/ϨΠςϯγʹ͓͚ΔϘτϧωοΫओʹ PerlͷΞϓϦέʔγϣϯͱDB • ϦΫΤετ͕ΞϓϦέʔγϣϯɾDBʹ౸ୡ͠ͳ͍ ΞʔΩςΫνϟ͕ߏஙͰ͖Ε ϨΠςϯγૣͯ͘Ϣʔβϋοϐʔ αʔόݮΒͤͦ͏ 8 ͯͳϒϩάͷߏհ
ͯͳϒϩάͷߏհ 9 ͜͜ͷલஈͰ ϦΫΤετΛ ฦ͍ͨ͠
• ϒϩάαʔϏεجຊతʹ ϖʔδͷߋ৽සΑΓϖʔδͷࢀরසͷํ͕ ѹతʹଟ͍ • ΞϓϦέʔγϣϯαʔόͷલஈͰHTML͝ͱΩϟογϡ ͤ͞Δ͜ͱͰߴͳϨεϙϯεΛ࣮ݱͰ͖ͦ͏ • ݱࡏmemcachedͰͷΩϟογϡߦ͍ͬͯΔ͕ɺ ͦͦΞϓϦέʔγϣϯαʔό·Ͱ
ϦΫΤετΛ౸ୡͤͨ͘͞ͳ͍ 10 Ωϟογϡͷಋೖ
ͯͳϒϩάͷߏհ 11 ΩϟογϡΛ ڬΉ
• ΩϟογϡΛڬΉΞʔΩςΫνϟʹ͚ͯ ݱࡏӶҙ։ൃத 12 Ωϟογϡͷಋೖ
• VarnishʹΑΔΩϟογϡͷಋೖ • VarnishੑೳΑ͘ॊೈͳΩϟογϡͷ੍ޚ͕ՄೳͰ ͋Γ࠷ߴͰ͢ 13 ΩϟογϡͷಋೖͷͨΊͷϛυϧΣΞ
ಈతϖʔδΛΩϟογϡ͢Δࡍʹ ߟ͑Δ͜ͱ 14
• ຊʹϖʔδ·Δ͝ͱΩϟογϡͯ͠େৎʁ • ϖʔδ͕ߋ৽͞Εͨ࣌ʹͲ͏͢Δͷʁ • εϚʔτϑΥϯͱPCͰಉ͡ΩϟογϡΛग़ͯ͠ େৎʁ ͍Ζ͍Ζ͋Γ·͕͢ɺ͜ͷ͋ͨΓ࣮ࡍʹͯͳϒϩά ͷಋೖ͕ྃͨ͠Β·ͨผͷॴͰ͠·͢ 15
ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ
• ຊʹϖʔδ·Δ͝ͱΩϟογϡͯ͠େৎʁ • ϖʔδ͕ߋ৽͞Εͨ࣌ʹͲ͏͢Δͷʁ • εϚʔτϑΥϯͱPCͰಉ͡ΩϟογϡΛग़ͯ͠ େৎʁ ࠓ͚ͩ͜͜ɺͯͳϒϩάΛྫʹग़ͯ͠͝հ 16 ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ
• Ωϟογϡ͢Δͷ͍͍͕ϢʔβىҼͰϖʔδͷߋ৽ ͕͔͔Δ • ϢʔβA “ࡢॻ͍ͨϒϩάΛߋ৽ͨͣ͠ͳͷʹ ͏Ұݟͨ͠Βߋ৽͞Εͯͳ͍…ͳͥ” • ϢʔβB “ίϝϯτ͚ͨͣͳͷʹίϝϯτ͕ͳ͘
ͳͬͯΔ…” 17 ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ
• Կ͔มߋ͕͋ͬͨΒ͏·ͦ͘ͷϖʔδ͚ͩΩϟογϡΛ ফͤେৎʁ • τοϓϖʔδهࣄҰཡϖʔδʁ • ֤ϖʔδʹ”࠷ۙߋ৽ͨ͠ϒϩάϦετ”͕ࡌ͍ͬͯͨ Γ͢Δ 18 ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ
• 2. ͷղܾࡦҊෳ 1. ΩϟογϡظؒΛͯ͘͠ͳΜͱ͔͙྇ • “1ؒίϝϯτهࣄߋ৽ө͞Ε·ͤΜ” 2. ߋ৽͞ΕͨࡍͳΜ͔͍͍ײ͡ʹߋ৽Օॴʹؔ࿈ͦ͠ ͏ͳΩϟογϡΛશ෦ॠ࣌ʹফ͢
• 1. ͕ཁ݅తʹOKͰ͋Εγϯϓϧ͕ͩɺΩϟογϡώο τ͕Լ͕Δɻ2. ͕͏·͘Ͱ͖ΔͷͰ͋ΕͦΕ͕Ұ൪͍ ͍ 19 ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ
• 2. ͷղܾࡦҊෳ 1. ΩϟογϡظؒΛͯ͘͠ͳΜͱ͔͙྇ • “1ؒίϝϯτهࣄߋ৽ө͞Ε·ͤΜ” 2. ߋ৽͞ΕͨࡍͳΜ͔͍͍ײ͡ʹߋ৽Օॴʹؔ࿈͠ ͦ͏ͳΩϟογϡΛॠ࣌ʹফ͢
ॠ࣌ʹফ͢ͷॏཁ ΩϟογϡΛফ͢ͷʹ15ͱ͔͔͔͍ͬͯͨΒҙຯ͕ͳ ͍ɻ 20 ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ
• Ͳ͏ͬͯؔ࿈ͦ͠͏ͳΩϟογϡΛॠ࣌ʹফ͢ʁ • VarnishͰ͋ΕΩϟογϡʹରͯ͠λάΛ͚ɺ σʔλͷߋ৽͕͋ͬͨࡍʹλάΛࢦఆͯ͠ ॠ࣌ʹΩϟογϡΛഁغ͢Δ͜ͱ͕Մೳ 21 ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ
22 λάͰͷΩϟογϡഁغ(λά༩) 7BSOJTI 1FSM OHJOY /hoge͍ͩ͘͞ Ωϟογϡ͕ͳ͍ͷͰ /hoge͍ͩ͘͞ /hogeͰ͢ λά
“A”Ͱ͢ /hogeͰ͢
23 λάͰͷΩϟογϡഁغ(λά༩) 7BSOJTI 1FSM OHJOY /hoge͍ͩ͘͞ Ωϟογϡ͕ͳ͍ͷͰ /hoge͍ͩ͘͞ /hogeͰ͢ λά
“A”Ͱ͢ /hogeͰ͢ /hoge͍ͩ͘͞ Ωϟογϡ͕͋Γ·ͨ͠ /hogeͰ͢
24 7BSOJTI 1FSM OHJOY /A ʹ ߋ৽͕͋Γ·ͨ͠ λάͰͷΩϟογϡഁغ(Ωϟογϡഁغ) /A ʹ
ߋ৽͕͋Γ·ͨ͠
25 7BSOJTI 1FSM OHJOY /A ʹ ߋ৽͕͋Γ·ͨ͠ λάA͕͍ͭͯΔ ΩϟογϡΛ ফͯ͠Լ͍͞
λάͰͷΩϟογϡഁغ(Ωϟογϡഁغ) /A ʹ ߋ৽͕͋Γ·ͨ͠ ফ͠·ͨ͠
• λάͷ͚ํɺফ͠ํʹ͍ͭͯৄ͘͠ຊެ։ͷ ࢲͷϒϩάࢀর 26 λάͰͷΩϟογϡഁغ
ϑϧΩϟογϡΞʔΩςΫνϟ 27
• VarnishॊೈͳVCLʹΑͬͯۃΊͯ৭ʑͳ͜ͱ͕Մೳ • GETϦΫΤετҎ֎Ωϟογϡ͠ͳ͍ ߋ৽͕͔͔ͬͨࡍʹؔ࿈ͨ͠Ωϟογϡͷഁغ ͦͷଞ͔ͳΓͷ͜ͱ͕Մೳ -> શͯͷτϥϑΟοΫΛVarnishʹྲྀ͠ɺશͯͷGETϦΫ ΤετΛΩϟογϡͤ͞ΔϑϧΩϟογϡΞʔΩςΫνϟ ͕Մೳʹ
28 ϑϧΩϟογϡΞʔΩςΫνϟ
ϑϧCDNΞʔΩςΫνϟ 29
• ҎԼɺશʹ࣮ݧஈ֊ͷͰ͢ 30 ϑϧCDNΞʔΩςΫνϟ
• CDNͱ • ίϯςϯπɾσϦόϦʔɾωοτϫʔΫ ʢContents Delivery Networkʣͷུ • Πϝʔδͱͯ͠ڊେͳΩϟογϡαʔό •
Akamai, CloudFront, Fastly 31 ϑϧCDNΞʔΩςΫνϟ
• ҰൠతʹɺCDN੩తϑΝΠϧͷ৴ʹ༻͍ΒΕΔ • Ωϟογϡͷഁغʹ͕͔͔࣌ؒΓ͕ͪ(CDNʹΑΔ) 32 ϑϧCDNΞʔΩςΫνϟ
• ͠Varnishͱಉ༷ͷػೳΛ࣋ͭCDN͕͋Ε • Varnishಉ༷ʹશͯͷτϥϑΟοΫΛCDNʹड͚࣋ͬͯ Β͏͜ͱ͕Մೳ • ࠷ۙͷCDNΩϟογϡͷഁغͷߴԽΛਐΊ͍ͯΔ • ͦͷதͰΩϟογϡͷഁغ͕ߴ͔ͭVarnishͱಉ༷ ͷॊೈ͞Λ࣋ͭCDN͕͋Δ
33 ϑϧCDNΞʔΩςΫνϟ
34 ϑϧCDNΞʔΩςΫνϟ
• “Instant Purge lets you update stale content within 150
milliseconds or less.” • “Instant Purge” https://www.fastly.com/products/ instant-purging ΑΓ • λάʹΑΔΩϟογϡഁغՄೳ • FastlyͷSurrogate Keysػೳ • ͦͷଞVCLͷهड़Ͱॊೈͳಈ࡞͕Մೳ 35 Fastlyͷػೳ
• ISUCON6ͷ༧બͷΛFastlyͰ৴ͯ͠Έͨ • σϞ 36 Fastly
• ੈքͷͲ͔͜ΒͷΞΫηεͰ ϢʔβʹߴʹϨεϙϯεΛฦ͢͜ͱ͕Ͱ͖Δ • τϥϑΟοΫʹ͔͔Δྉ͕ۚ҆͘ͳΓ͍͢ • େྔΞΫηε͕དྷͯCDN͕͍ͯ͘͞Εͯ҆৺ • ࣗͷαʔόΞΫηεΛׂ͘͞Ͱͳ͘ σʔλͷߋ৽͕͋ͬͨࡍʹ
৽ͨͳΩϟογϡΛ࡞ΔׂʹͳΔ 37 ϑϧCDNΞʔΩςΫνϟͷར
ϑϧCDNΞʔΩςΫνϟͷ ՝ 38
• Ωϟογϡػೳͷ֬ೝ͕͘͠ɺόάΛ࡞ΓࠐΈ ͍͢ • όά͕ग़ͨࡍͷඃେ͖͘ͳΓ͕ͪ • Ωϟογϡͳ͠Ͱ͍͚ΔͷͰ͋ΕΩϟογϡͳ͠Ͱ γϯϓϧͳߏͷ΄͏͕͍͍ʹܾ·͍ͬͯΔ • ։ൃ࣌ͷखݩͰͷςετͲ͏͢Ε͍͍ͷ…ʁ
39 ϑϧCDNΞʔΩςΫνϟͷ՝
·ͱΊ 40
• VarnishʹΑΔϑϧΩϟογϡΞʔΩςΫνϟՄೳ • ϑϧΩϟογϡ͕Ͱ͖ͨΒɺ ࣍ϑϧCDNΞʔΩςΫνϟͰߴɺ҆ՁʹେྔͷϦ ΫΤετΛ͘͜͞ͱ͕Ͱ͖ΔΑ͏ʹͳΔ 41 ·ͱΊ
͋Γ͕ͱ͏͍͟͝·ͨ͠ 42