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
「守る」から「進化させる」セキュリティへ ~AWS re:Inforce 2025参加報告~ / AWS re:Inforce 2025 Participation Report
yuj1osm
1
150
広島発!スタートアップ開発の裏側
tsankyo
0
260
Evolution on AI Agent and Beyond - AGI への道のりと、シンギュラリティの3つのシナリオ
masayamoriofficial
0
230
Product Management Conference -AI時代に進化するPdM-
kojima111
0
250
TypeScript入門
recruitengineers
PRO
27
8.7k
株式会社ARAV 採用案内
maqui
0
380
会社にデータエンジニアがいることでできるようになること
10xinc
9
1.6k
「AI2027」を紐解く ― AGI・ASI・シンギュラリティ
masayamoriofficial
0
120
絶対に失敗できないキャンペーンページの高速かつ安全な開発、WINTICKET × microCMS の開発事例
microcms
0
160
kintone開発チームの紹介
cybozuinsideout
PRO
0
73k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.6k
VPC Latticeのサービスエンドポイント機能を使用した複数VPCアクセス
duelist2020jp
0
310
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
How to Ace a Technical Interview
jacobian
279
23k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
The Cult of Friendly URLs
andyhume
79
6.6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
4 Signs Your Business is Dying
shpigford
184
22k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Fireside Chat
paigeccino
39
3.6k
BBQ
matthewcrist
89
9.8k
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