$30 off During Our Annual Pro Sale. View Details »

フルCDNアーキテクチャ実験 / Minami Aoyama Night #1

dekokun
December 09, 2016

フルCDNアーキテクチャ実験 / Minami Aoyama Night #1

Minami Aoyama Night#1 での発表資料
https://connpass.com/event/45263/

dekokun

December 09, 2016
Tweet

More Decks by dekokun

Other Decks in Technology

Transcript

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

    View Slide

  2. ࣗݾ঺հ
    2

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. • ۃΊͯγϯϓϧͳߏ੒
    • Ұ෦ࠓճͷൃදʹؔ܎ͳͦ͞͏ͳߏ੒ཁૉ͸

    େ୾ʹলུ
    • batch, worker, CDN౳
    7
    ͸ͯͳϒϩάͷߏ੒঺հ

    View Slide

  8. • εϧʔϓοτ/ϨΠςϯγʹ͓͚ΔϘτϧωοΫ͸ओʹ

    PerlͷΞϓϦέʔγϣϯͱDB
    • ϦΫΤετ͕ΞϓϦέʔγϣϯɾDBʹ౸ୡ͠ͳ͍

    ΞʔΩςΫνϟ͕ߏஙͰ͖Ε͹

    ϨΠςϯγૣͯ͘Ϣʔβ΋ϋοϐʔ

    αʔό΋ݮΒͤͦ͏
    8
    ͸ͯͳϒϩάͷߏ੒঺հ

    View Slide

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

    ฦ͍ͨ͠

    View Slide

  10. • ϒϩάαʔϏε͸جຊతʹ

    ϖʔδͷߋ৽ස౓ΑΓ΋ϖʔδͷࢀরස౓ͷํ͕

    ѹ౗తʹଟ͍
    • ΞϓϦέʔγϣϯαʔόͷલஈͰHTML͝ͱΩϟογϡ
    ͤ͞Δ͜ͱͰߴ଎ͳϨεϙϯεΛ࣮ݱͰ͖ͦ͏
    • ݱࡏ΋memcachedͰͷΩϟογϡ͸ߦ͍ͬͯΔ͕ɺ

    ͦ΋ͦ΋ΞϓϦέʔγϣϯαʔό·Ͱ

    ϦΫΤετΛ౸ୡͤͨ͘͞ͳ͍
    10
    Ωϟογϡ૚ͷಋೖ

    View Slide

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

    View Slide

  12. • Ωϟογϡ૚ΛڬΉΞʔΩςΫνϟʹ޲͚ͯ

    ݱࡏӶҙ։ൃத
    12
    Ωϟογϡ૚ͷಋೖ

    View Slide

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

    View Slide

  14. ಈతϖʔδΛΩϟογϡ͢Δࡍʹ

    ߟ͑Δ͜ͱ
    14

    View Slide

  15. • ຊ౰ʹϖʔδ·Δ͝ͱΩϟογϡͯ͠େৎ෉ʁ
    • ϖʔδ͕ߋ৽͞Εͨ࣌ʹͲ͏͢Δͷʁ
    • εϚʔτϑΥϯͱPCͰಉ͡ΩϟογϡΛग़ͯ͠

    େৎ෉ʁ
    ͍Ζ͍Ζ͋Γ·͕͢ɺ͜ͷ͋ͨΓ͸࣮ࡍʹ͸ͯͳϒϩά
    ΁ͷಋೖ͕׬ྃͨ͠Β·ͨผͷ৔ॴͰ࿩͠·͢
    15
    ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ

    View Slide

  16. • ຊ౰ʹϖʔδ·Δ͝ͱΩϟογϡͯ͠େৎ෉ʁ
    • ϖʔδ͕ߋ৽͞Εͨ࣌ʹͲ͏͢Δͷʁ
    • εϚʔτϑΥϯͱPCͰಉ͡ΩϟογϡΛग़ͯ͠

    େৎ෉ʁ
    ࠓ೔͸͚ͩ͜͜ɺ͸ͯͳϒϩάΛྫʹग़ͯ͠͝঺հ
    16
    ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. • Ͳ͏΍ͬͯؔ࿈ͦ͠͏ͳΩϟογϡΛॠ࣌ʹফ͢ʁ
    • VarnishͰ͋Ε͹Ωϟογϡʹରͯ͠λάΛ෇͚ɺ

    σʔλͷߋ৽͕͋ͬͨࡍʹλάΛࢦఆͯ͠

    ॠ࣌ʹΩϟογϡΛഁغ͢Δ͜ͱ͕Մೳ
    21
    ಈతϖʔδͷΩϟογϡͷࡍʹߟ͑Δ͜ͱ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  26. • λάͷ෇͚ํɺফ͠ํʹ͍ͭͯৄ͘͠͸ຊ೔ެ։ͷ

    ࢲͷϒϩάࢀর
    26
    λάͰͷΩϟογϡഁغ

    View Slide

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

    View Slide

  28. • Varnish͸ॊೈͳVCLʹΑͬͯۃΊͯ৭ʑͳ͜ͱ͕Մೳ
    • GETϦΫΤετҎ֎͸Ωϟογϡ͠ͳ͍

    ߋ৽͕͔͔ͬͨࡍʹؔ࿈ͨ͠Ωϟογϡͷഁغ౳

    ͦͷଞ͔ͳΓͷ͜ͱ͕Մೳ
    -> શͯͷτϥϑΟοΫΛVarnishʹྲྀ͠ɺશͯͷGETϦΫ
    ΤετΛΩϟογϡͤ͞ΔϑϧΩϟογϡΞʔΩςΫνϟ
    ͕Մೳʹ
    28
    ϑϧΩϟογϡΞʔΩςΫνϟ

    View Slide

  29. ϑϧCDNΞʔΩςΫνϟ
    29

    View Slide

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

    View Slide

  31. • CDNͱ͸
    • ίϯςϯπɾσϦόϦʔɾωοτϫʔΫ

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

    View Slide

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

    View Slide

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

    View Slide

  34. 34
    ϑϧCDNΞʔΩςΫνϟ

    View Slide

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

    View Slide

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

    View Slide

  37. • ੈքͷͲ͔͜ΒͷΞΫηεͰ΋

    Ϣʔβʹߴ଎ʹϨεϙϯεΛฦ͢͜ͱ͕Ͱ͖Δ
    • τϥϑΟοΫʹ͔͔Δྉ͕ۚ҆͘ͳΓ΍͍͢
    • େྔΞΫηε͕དྷͯ΋CDN͕͞͹͍ͯ͘Εͯ҆৺
    • ࣗ෼ͷαʔό͸ΞΫηεΛ͞͹͘໾ׂͰ͸ͳ͘

    σʔλͷߋ৽͕͋ͬͨࡍʹ

    ৽ͨͳΩϟογϡΛ࡞Δ໾ׂʹͳΔ
    37
    ϑϧCDNΞʔΩςΫνϟͷར఺

    View Slide

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

    ՝୊
    38

    View Slide

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

    View Slide

  40. ·ͱΊ
    40

    View Slide

  41. • VarnishʹΑΔϑϧΩϟογϡΞʔΩςΫνϟ͸Մೳ
    • ϑϧΩϟογϡ͕Ͱ͖ͨΒɺ

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

    View Slide

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

    View Slide