Slide 1

Slide 1 text

ϑϧCDNΞʔΩςΫνϟ࣮ݧ Minami Aoyama Night#1 גࣜձࣾ͸ͯͳ id:dekokun

Slide 2

Slide 2 text

ࣗݾ঺հ 2

Slide 3

Slide 3 text

ࣗݾ঺հ • id:dekokun • ͸ͯͳͰΠϯϑϥ@౦ژ • WebΦϖϨʔγϣϯΤϯδχΞ • ͸ͯͳͷ͍Ζ͍ΖͳαʔϏεͷΠϯϑϥ୲౰ • ೖࣾ1೥ͪΐͬͱ • લ৬͸PHPͱJSॻ͍ͯ·ͨ͠ 3

Slide 4

Slide 4 text

4 • ͸ͯͳϒϩάͷߏ੒঺հ • ಈతϖʔδΛΩϟογϡ͢Δࡍʹߟ͑Δ͜ͱ • ϑϧΩϟογϡΞʔΩςΫνϟ • ϑϧCDNΞʔΩςΫνϟ ຊ೔ͷൃද಺༰

Slide 5

Slide 5 text

͸ͯͳϒϩάͷߏ੒঺հ 5

Slide 6

Slide 6 text

͸ͯͳϒϩάͷߏ੒঺հ(େ෯লུ൛) 6

Slide 7

Slide 7 text

• ۃΊͯγϯϓϧͳߏ੒ • Ұ෦ࠓճͷൃදʹؔ܎ͳͦ͞͏ͳߏ੒ཁૉ͸
 େ୾ʹলུ • batch, worker, CDN౳ 7 ͸ͯͳϒϩάͷߏ੒঺հ

Slide 8

Slide 8 text

• εϧʔϓοτ/ϨΠςϯγʹ͓͚ΔϘτϧωοΫ͸ओʹ
 PerlͷΞϓϦέʔγϣϯͱDB • ϦΫΤετ͕ΞϓϦέʔγϣϯɾDBʹ౸ୡ͠ͳ͍
 ΞʔΩςΫνϟ͕ߏஙͰ͖Ε͹
 ϨΠςϯγૣͯ͘Ϣʔβ΋ϋοϐʔ
 αʔό΋ݮΒͤͦ͏ 8 ͸ͯͳϒϩάͷߏ੒঺հ

Slide 9

Slide 9 text

͸ͯͳϒϩάͷߏ੒঺հ 9 ͜͜ͷલஈͰ ϦΫΤετΛ
 ฦ͍ͨ͠

Slide 10

Slide 10 text

• ϒϩάαʔϏε͸جຊతʹ
 ϖʔδͷߋ৽ස౓ΑΓ΋ϖʔδͷࢀরස౓ͷํ͕
 ѹ౗తʹଟ͍ • ΞϓϦέʔγϣϯαʔόͷલஈͰHTML͝ͱΩϟογϡ ͤ͞Δ͜ͱͰߴ଎ͳϨεϙϯεΛ࣮ݱͰ͖ͦ͏ • ݱࡏ΋memcachedͰͷΩϟογϡ͸ߦ͍ͬͯΔ͕ɺ
 ͦ΋ͦ΋ΞϓϦέʔγϣϯαʔό·Ͱ
 ϦΫΤετΛ౸ୡͤͨ͘͞ͳ͍ 10 Ωϟογϡ૚ͷಋೖ

Slide 11

Slide 11 text

͸ͯͳϒϩάͷߏ੒঺հ 11 Ωϟογϡ૚Λ ڬΉ

Slide 12

Slide 12 text

• Ωϟογϡ૚ΛڬΉΞʔΩςΫνϟʹ޲͚ͯ
 ݱࡏӶҙ։ൃத 12 Ωϟογϡ૚ͷಋೖ

Slide 13

Slide 13 text

• VarnishʹΑΔΩϟογϡ૚ͷಋೖ • Varnish͸ੑೳ΋Α͘ॊೈͳΩϟογϡͷ੍ޚ͕ՄೳͰ ͋Γ࠷ߴͰ͢ 13 Ωϟογϡ૚ͷಋೖͷͨΊͷϛυϧ΢ΣΞ

Slide 14

Slide 14 text

ಈతϖʔδΛΩϟογϡ͢Δࡍʹ
 ߟ͑Δ͜ͱ 14

Slide 15

Slide 15 text

• ຊ౰ʹϖʔδ·Δ͝ͱΩϟογϡͯ͠େৎ෉ʁ • ϖʔδ͕ߋ৽͞Εͨ࣌ʹͲ͏͢Δͷʁ • εϚʔτϑΥϯͱPCͰಉ͡ΩϟογϡΛग़ͯ͠
 େৎ෉ʁ ͍Ζ͍Ζ͋Γ·͕͢ɺ͜ͷ͋ͨΓ͸࣮ࡍʹ͸ͯͳϒϩά ΁ͷಋೖ͕׬ྃͨ͠Β·ͨผͷ৔ॴͰ࿩͠·͢ 15 ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ

Slide 16

Slide 16 text

• ຊ౰ʹϖʔδ·Δ͝ͱΩϟογϡͯ͠େৎ෉ʁ • ϖʔδ͕ߋ৽͞Εͨ࣌ʹͲ͏͢Δͷʁ • εϚʔτϑΥϯͱPCͰಉ͡ΩϟογϡΛग़ͯ͠
 େৎ෉ʁ ࠓ೔͸͚ͩ͜͜ɺ͸ͯͳϒϩάΛྫʹग़ͯ͠͝঺հ 16 ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ

Slide 17

Slide 17 text

• Ωϟογϡ͢Δͷ͸͍͍͕ϢʔβىҼͰϖʔδͷߋ৽ ͕͔͔Δ • ϢʔβA “ࡢ೔ॻ͍ͨϒϩάΛߋ৽ͨ͠͸ͣͳͷʹ΋ ͏Ұ౓ݟ௚ͨ͠Βߋ৽͞Εͯͳ͍…ͳͥ” • ϢʔβB “ίϝϯτ෇͚ͨ͸ͣͳͷʹίϝϯτ͕ͳ͘ ͳͬͯΔ…” 17 ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ

Slide 18

Slide 18 text

• Կ͔มߋ͕͋ͬͨΒ͏·ͦ͘ͷϖʔδ͚ͩΩϟογϡΛ ফͤ͹େৎ෉ʁ • τοϓϖʔδ΍هࣄҰཡϖʔδ͸ʁ • ֤ϖʔδʹ”࠷ۙߋ৽ͨ͠ϒϩάϦετ”͕ࡌ͍ͬͯͨ Γ͢Δ 18 ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ

Slide 19

Slide 19 text

• ໰୊2. ͷղܾࡦҊෳ਺ 1. ΩϟογϡظؒΛ୹ͯ͘͠ͳΜͱ͔͙྇ • “1෼ؒ͸ίϝϯτ΍هࣄߋ৽͸൓ө͞Ε·ͤΜ” 2. ߋ৽͞Εͨࡍ͸ͳΜ͔͍͍ײ͡ʹߋ৽Օॴʹؔ࿈ͦ͠ ͏ͳΩϟογϡΛશ෦ॠ࣌ʹফ͢ • 1. ͕ཁ݅తʹOKͰ͋Ε͹γϯϓϧ͕ͩɺΩϟογϡώο τ཰͕Լ͕Δɻ2. ͕͏·͘Ͱ͖ΔͷͰ͋Ε͹ͦΕ͕Ұ൪͍ ͍ 19 ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ

Slide 20

Slide 20 text

• ໰୊2. ͷղܾࡦҊෳ਺ 1. ΩϟογϡظؒΛ୹ͯ͘͠ͳΜͱ͔͙྇ • “1෼ؒ͸ίϝϯτ΍هࣄߋ৽͸൓ө͞Ε·ͤΜ” 2. ߋ৽͞Εͨࡍ͸ͳΜ͔͍͍ײ͡ʹߋ৽Օॴʹؔ࿈͠ ͦ͏ͳΩϟογϡΛॠ࣌ʹফ͢ ॠ࣌ʹফ͢ͷॏཁ ΩϟογϡΛফ͢ͷʹ15෼ͱ͔͔͔͍ͬͯͨΒҙຯ͕ͳ ͍ɻ 20 ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ

Slide 21

Slide 21 text

• Ͳ͏΍ͬͯؔ࿈ͦ͠͏ͳΩϟογϡΛॠ࣌ʹফ͢ʁ • VarnishͰ͋Ε͹Ωϟογϡʹରͯ͠λάΛ෇͚ɺ
 σʔλͷߋ৽͕͋ͬͨࡍʹλάΛࢦఆͯ͠
 ॠ࣌ʹΩϟογϡΛഁغ͢Δ͜ͱ͕Մೳ 21 ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ

Slide 22

Slide 22 text

22 λάͰͷΩϟογϡഁغ(λά෇༩) 7BSOJTI 1FSM OHJOY /hoge͍ͩ͘͞ Ωϟογϡ͕ͳ͍ͷͰ /hoge͍ͩ͘͞ /hogeͰ͢ λά͸ “A”Ͱ͢ /hogeͰ͢

Slide 23

Slide 23 text

23 λάͰͷΩϟογϡഁغ(λά෇༩) 7BSOJTI 1FSM OHJOY /hoge͍ͩ͘͞ Ωϟογϡ͕ͳ͍ͷͰ /hoge͍ͩ͘͞ /hogeͰ͢ λά͸ “A”Ͱ͢ /hogeͰ͢ /hoge͍ͩ͘͞ Ωϟογϡ͕͋Γ·ͨ͠ /hogeͰ͢

Slide 24

Slide 24 text

24 7BSOJTI 1FSM OHJOY /A ʹ ߋ৽͕͋Γ·ͨ͠ λάͰͷΩϟογϡഁغ(Ωϟογϡഁغ) /A ʹ ߋ৽͕͋Γ·ͨ͠

Slide 25

Slide 25 text

25 7BSOJTI 1FSM OHJOY /A ʹ ߋ৽͕͋Γ·ͨ͠ λάA͕͍ͭͯΔ ΩϟογϡΛ ফͯ͠Լ͍͞ λάͰͷΩϟογϡഁغ(Ωϟογϡഁغ) /A ʹ ߋ৽͕͋Γ·ͨ͠ ফ͠·ͨ͠

Slide 26

Slide 26 text

• λάͷ෇͚ํɺফ͠ํʹ͍ͭͯৄ͘͠͸ຊ೔ެ։ͷ
 ࢲͷϒϩάࢀর 26 λάͰͷΩϟογϡഁغ

Slide 27

Slide 27 text

ϑϧΩϟογϡΞʔΩςΫνϟ 27

Slide 28

Slide 28 text

• Varnish͸ॊೈͳVCLʹΑͬͯۃΊͯ৭ʑͳ͜ͱ͕Մೳ • GETϦΫΤετҎ֎͸Ωϟογϡ͠ͳ͍
 ߋ৽͕͔͔ͬͨࡍʹؔ࿈ͨ͠Ωϟογϡͷഁغ౳
 ͦͷଞ͔ͳΓͷ͜ͱ͕Մೳ -> શͯͷτϥϑΟοΫΛVarnishʹྲྀ͠ɺશͯͷGETϦΫ ΤετΛΩϟογϡͤ͞ΔϑϧΩϟογϡΞʔΩςΫνϟ ͕Մೳʹ 28 ϑϧΩϟογϡΞʔΩςΫνϟ

Slide 29

Slide 29 text

ϑϧCDNΞʔΩςΫνϟ 29

Slide 30

Slide 30 text

• ҎԼɺ׬શʹ࣮ݧஈ֊ͷ࿩Ͱ͢ 30 ϑϧCDNΞʔΩςΫνϟ

Slide 31

Slide 31 text

• CDNͱ͸ • ίϯςϯπɾσϦόϦʔɾωοτϫʔΫ
 ʢContents Delivery Networkʣͷུ • Πϝʔδͱͯ͠͸ڊେͳΩϟογϡαʔό • Akamai, CloudFront, Fastly౳ 31 ϑϧCDNΞʔΩςΫνϟ

Slide 32

Slide 32 text

• Ұൠతʹ͸ɺCDN͸੩తϑΝΠϧͷ഑৴ʹ༻͍ΒΕΔ • Ωϟογϡͷഁغʹ͕͔͔࣌ؒΓ͕ͪ(CDNʹΑΔ) 32 ϑϧCDNΞʔΩςΫνϟ

Slide 33

Slide 33 text

• ΋͠Varnishͱಉ༷ͷػೳΛ࣋ͭCDN͕͋Ε͹ • Varnishಉ༷ʹશͯͷτϥϑΟοΫΛCDNʹड͚࣋ͬͯ ΋Β͏͜ͱ͕Մೳ • ࠷ۙͷCDN͸Ωϟογϡͷഁغͷߴ଎ԽΛਐΊ͍ͯΔ • ͦͷதͰ΋Ωϟογϡͷഁغ͕ߴ଎͔ͭVarnishͱಉ༷ ͷॊೈ͞Λ࣋ͭCDN͕͋Δ 33 ϑϧCDNΞʔΩςΫνϟ

Slide 34

Slide 34 text

34 ϑϧCDNΞʔΩςΫνϟ

Slide 35

Slide 35 text

• “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ͷػೳ

Slide 36

Slide 36 text

• ISUCON6ͷ༧બͷ໰୊ΛFastlyͰ഑৴ͯ͠Έͨ • σϞ 36 Fastly

Slide 37

Slide 37 text

• ੈքͷͲ͔͜ΒͷΞΫηεͰ΋
 Ϣʔβʹߴ଎ʹϨεϙϯεΛฦ͢͜ͱ͕Ͱ͖Δ • τϥϑΟοΫʹ͔͔Δྉ͕ۚ҆͘ͳΓ΍͍͢ • େྔΞΫηε͕དྷͯ΋CDN͕͞͹͍ͯ͘Εͯ҆৺ • ࣗ෼ͷαʔό͸ΞΫηεΛ͞͹͘໾ׂͰ͸ͳ͘
 σʔλͷߋ৽͕͋ͬͨࡍʹ
 ৽ͨͳΩϟογϡΛ࡞Δ໾ׂʹͳΔ 37 ϑϧCDNΞʔΩςΫνϟͷར఺

Slide 38

Slide 38 text

ϑϧCDNΞʔΩςΫνϟͷ
 ՝୊ 38

Slide 39

Slide 39 text

• Ωϟογϡ͸ػೳͷ֬ೝ͕೉͘͠ɺόάΛ࡞ΓࠐΈ΍ ͍͢ • όά͕ग़ͨࡍͷඃ֐΋େ͖͘ͳΓ͕ͪ • Ωϟογϡͳ͠Ͱ͍͚ΔͷͰ͋Ε͹Ωϟογϡ͸ͳ͠Ͱ γϯϓϧͳߏ੒ͷ΄͏͕͍͍ʹܾ·͍ͬͯΔ • ։ൃ࣌ͷखݩͰͷςετͲ͏͢Ε͹͍͍ͷ…ʁ 39 ϑϧCDNΞʔΩςΫνϟͷ՝୊

Slide 40

Slide 40 text

·ͱΊ 40

Slide 41

Slide 41 text

• VarnishʹΑΔϑϧΩϟογϡΞʔΩςΫνϟ͸Մೳ • ϑϧΩϟογϡ͕Ͱ͖ͨΒɺ
 ࣍͸ϑϧCDNΞʔΩςΫνϟͰߴ଎ɺ҆ՁʹେྔͷϦ ΫΤετΛ͞͹͘͜ͱ͕Ͱ͖ΔΑ͏ʹͳΔ 41 ·ͱΊ

Slide 42

Slide 42 text

͋Γ͕ͱ͏͍͟͝·ͨ͠ 42