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アーキテクチャ実験 / Minami Aoyama Night #1
Search
dekokun
December 09, 2016
Technology
18k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
フルCDNアーキテクチャ実験 / Minami Aoyama Night #1
Minami Aoyama Night#1 での発表資料
https://connpass.com/event/45263/
dekokun
December 09, 2016
More Decks by dekokun
See All by dekokun
Amazon Aurora の v1 が EOL になるので 10 クラスタアップグレードして出てきたノウハウ
dekokun
0
2.6k
東京にいながら仕事のほとんどを京都のエンジニアと一緒にしている私のリモートワークの話 / Hatena Engineer Seminar #6
dekokun
3
11k
はてなでの サービス信頼性向上のための 取り組み事例
dekokun
15
5.9k
Other Decks in Technology
See All in Technology
CSS2026:OWS研究会・招待講演「世界観を、実装する」
atsush1_sada
2
340
「作れる」と「リリースできる」の間にあったもの── PdMを外して見えた、PdMがやるべき仕事/Buildable ≠ Shippable: What Removing the PM Taught Me About the PM’s Job
yappli_developers
0
290
国際カードブランドルール変更に伴うクレジットカード決済取引仕様変更について
k1style
0
240
AWSセキュリティで活用するAI機能
cmusudakeisuke
1
320
Filter What the LLM Reads: RAG Governance with AgentCore Gateway
yakumo
0
110
渡米前の準備を制す!re:Invent 2026徹底準備術 / The Ultimate Preparation Guide for re:Invent 2026
yuj1osm
1
300
BacklogのRAG 今ならこう作る - S3 Vectorsと自前パイプラインの勘所
revsystem
0
140
クラウドエージェントの先駆け Devin。今も最先端を走る、他との違い
kinopeee
0
440
企画を Software Factory-ready にする——開発が高速になったとき、PdMの仕事はどう変わったか
yachibit
1
280
dbt Semantic Layerで進めるenechainのデータ民主化
akizhou
1
270
AIをリアル世界に解き放つ 〜M5Stack×AIであなたのアイディアを手の平に〜
hamadakoji
1
550
AI時代、つくる力を自分たちの手に。 ──電通×KAG、アジャイルとAI駆動開発で挑む開発の変革
yuukiyo
3
390
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
610
Into the Great Unknown - MozCon
thekraken
41
2.8k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
650
Chasing Engaging Ingredients in Design
codingconduct
0
370
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Mind Mapping
helmedeiros
1
410
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
410
Ethics towards AI in product and experience design
skipperchong
2
440
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
290
How to make the Groovebox
asonas
2
2.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
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