Slide 1

Slide 1 text

εέʔϧՄೳͰ ӡ༻͠΍͍͢ WebSocketαʔόઃܭͷ ՝୊ͱ޻෉ CEDEC 2018 ໘ന๏ਓΧϠοΫɹ୩࿬ ਅۏ

Slide 2

Slide 2 text

͜ͷηογϣϯͰ࿩͢͜ͱ • ैདྷͷWebΞϓϦέʔγϣϯͷ࡞ΓํͷԆ௕ઢ্Ͱ • ϛυϧ΢ΣΞΛ෇͚Ճ͑ΔܗͰWebSocketʹΑΔϦΞϧ λΠϜ௨৴Λ༻͍Δ • ήʔϜαʔόΛ։ൃɾӡ༻ͯ͠Έͨ ͦͷ࣌ͷ޻෉ͱۤ࿑Λ࿩͠·͢ɻ

Slide 3

Slide 3 text

͜ͷηογϣϯͰ࿩͞ΕΔ͜ͱ͸ ౦ژϓϦζϯ1ͱ͍͏ϞόΠϧήʔϜͷࣄྫͰ͢ 1 https://tokyo-prison.kayac.com/

Slide 4

Slide 4 text

ήʔϜͷಛੑ • ൒λʔϯ੍ɻλʔϯ͸Ұఆඵ਺͕ܦա͢Δͱऴྃ͢Δɻλʔϯ ಺͸͋Δఔ౓ࣗ༝ʹಈ͚Δ

Slide 5

Slide 5 text

ήʔϜͷಛੑ • ϓϨΠϠʔ3ਓ vs ϓϨΠϠʔ3ਓ

Slide 6

Slide 6 text

ߨԋऀͷόοΫάϥ΢ϯυ • ໘ന๏ਓΧϠοΫ ιʔγϟϧήʔϜࣄۀ෦ • αʔόαΠυΛઐ໳Ͱ୲౰ɻΞϓϦέʔγϣϯίʔυΛॻ͕͘ Πϯϑϥߏங΋΍Γɺӡ༻΋΍Δ • झຯ͸Perlͱ3DϓϦϯλվ଄ͱϛυϧ΢ΣΞ։ൃ

Slide 7

Slide 7 text

ैདྷͷWebΞϓϦͰ ΞʔΩςΫνϟͰ WebSocketΛ༻͍Δͱ͖ͷ՝୊

Slide 8

Slide 8 text

આ໌ͷॱ൪ 1. ैདྷͷWebΞϓϦͷߏ଄ 2. WebSocketΛ࢝Ίͱͨ͠ੜଘ࣌ؒͷ௕͍ηογϣϯΛѻ͏্Ͱ ͷ໰୊ 3. ղܾํ๏(kuiperbeltͷ঺հ)΁

Slide 9

Slide 9 text

͜͜Ͱ͍͏WebΞϓϦͱ͸ • ΠϯλʔωοτΛ௨ͬͯओʹHTTPΛ࢖͏ ΞϓϦέʔγϣϯ • HTTP͸·ͣϦΫΤετ͋Γ͖

Slide 10

Slide 10 text

ͳͥHTTPΛ࢖͏ͷ͔ • ͍͍ͩͨͷWebϑϨʔϜϫʔΫ͸HTTPΛѻ͏ͨΊʹ࡞ΒΕ͍ͯ Δ • curlΛ͸͡Ίͱͨ͠HTTPΛσόοά͢ΔͨΊͷπʔϧ΍஌ݟ͕ ੈͷதʹ͋;Ε͍ͯΔ • HTTP͸εςʔτϨε͕લఏͷϓϩτίϧͳͷͰεέʔϧͤ͞Δ ͷʹ༗ར(ޙड़)

Slide 11

Slide 11 text

εςʔτϨε͔ͩΒԣʹ૿΍ͤΔ Keep-AliveͰTCP઀ଓ࢖͍ճ͠Λߦ͏৔߹΋͋Δ͕ɺHTTPͷ૚͔ΒݟΕ͹ಉ͡

Slide 12

Slide 12 text

εςʔτϨε͔ͩΒԣʹ૿΍ͤΔ

Slide 13

Slide 13 text

Ϣʔβ਺෼ಉ࣌ʹϦΫΤετΛड͚͍ͯΔ͜ ͱ΋ͳ͍

Slide 14

Slide 14 text

WebΞϓϦέʔγϣϯͷੈք • HTTP͕εςʔτϨεͳͷͰԣʹಉ͡ΞϓϦΛฒ΂ͯLBʹೖΕ Δ • ෛՙ෼ࢄͱHA໨త • Lightweight Language(PHP΍Ruby2ͳͲ)͕࢖ΘΕΔ͜ͱ͕͋Δ • ͜ΕΒ͸ϚϧνϓϩηεϞσϧ͕ओྲྀ 2 ΋ͪΖΜJava΍C#Ͱ૊Ήͱ͜Ζ΋͋ΓɺͦΕΒ͸ϚϧνεϨου

Slide 15

Slide 15 text

ϦΞϧλΠϜ௨৴ΛWebͷԆ௕Ͱ΍Δબ୒ࢶ • Long Polling • WebSocket • WebRTC DataChannel • ͋Δ͍͸ੜιέοτ

Slide 16

Slide 16 text

ͳͥWebSocketΛ࢖͏ͷ͔ => ௕͍΋ͷʹר͔Εͨ΄͏ָ͕͕Ͱ͖Δ • 2011೥ʹඪ४ࡦఆ͞Ε͔ͯΒ͕࣌ؒܦͪϥΠϒϥϦ͕ރΕ͍ͯ Δ • ੜιέοτͱҧͬͯϥΠϒϥϦΛࣗ෼Ͱॻ͔ͳͯ͘Α͍ • wscatΛ࢝Ίͱͨ͠σόοάπʔϧ΋๛෋ • TCPͳͷͰ࠶ૹͳͲͷ໘౗͸ݟͯ͘ΕΔ

Slide 17

Slide 17 text

ͦ΋ͦ΋ͳͥඪ४Webٕज़ʹͩ͜ΘΔͷ͔ • Web։ൃऀίϛϡχςΟʹ৐͔ͬΕΔ • ϥΠϒϥϦ΍஌ݟΛٵऩͰ͖Δ • (͜Ε͸ޙ෇Ͱ͕͢)PWAήʔϜΞϓϦ࣌୅Λݟਾ͑ͯͷબ୒ • ϒϥ΢β͸࢖͑Δϓϩτίϧ͕ݶΒΕΔ

Slide 18

Slide 18 text

WebSocket͸εςʔτϑϧ௨৴ • ΫϥΠΞϯτ͸WebAppʹରͯ͠ܨ͗ͬͺͳ͠ͷঢ়ଶʹͳΔ • WebSocket͸ηογϣϯͷੜଘ͕࣌ؒ௕͍ͨΊͦͷؒ͸Ϧ ιʔεΛઐ༗͢Δ

Slide 19

Slide 19 text

WebSocket͸઀ଓΛҡ࣋͠ଓ͚Δඞཁ͕͋Δ

Slide 20

Slide 20 text

ϦΞϧλΠϜ௨৴͸εςʔτϑϧ௨৴ • 1ͭͷΫϥΠΞϯτ͕1WebAppΠϯελϯεͱີ݁߹͢Δ • গͳ͘ͱ΋1ηογϣϯͷؒ͸ॊೈͳεέʔϧΞ΢τ(୆਺Λ ԣʹ૿΍͢)΍ϦΞϧλΠϜ௨৴͕ߦΘΕ͍ͯΔؒͷίʔυ ߋ৽(σϓϩΠ)͕೉͍͠

Slide 21

Slide 21 text

ϦΞϧλΠϜ௨৴͸εςʔτϑϧ௨৴ • εςʔτϑϧ௨৴ͱಉظܕPreforkͷ૬ੑͷѱ͞ • 1ݸͷϓϩηε͕1ͭͷϦΫΤετΛಉظతʹॲཧ • 1ϦΫΤετͷॲཧ͕࣌ؒ୹͍(ʙ1sec)͜ͱ͕લఏ • 1ϓϩηεͰ1WebSocketηογϣϯΛѲΔͱϓϩηε਺෼͠ ͔ΫϥΠΞϯτΛऩ༰Ͱ͖ͳ͍

Slide 22

Slide 22 text

٧·Δਤ

Slide 23

Slide 23 text

ࠓ·ͰͷWebΞϓϦ͕ͦͷ·· WebSocketΛ஻Δ͜ͱ͸೉͍͜͠ͱ ͕Θ͔ͬͨ

Slide 24

Slide 24 text

͍͔ʹͯ͠զʑ͸ϦΞϧλΠϜ௨৴ʹཱͪ޲ ͔͑͹͍͍ͷ͔ • ָͰ • Θ͔Γ΍ͯ͘͢ɺγϯϓϧͰ • εέʔϧՄೳͰ • ӡ༻͠΍͍͢ͷ͕΄͍͠

Slide 25

Slide 25 text

ͦΜͳ͏·͍ ιϦϡʔγϣϯ͸͋Δͷ͔

Slide 26

Slide 26 text

ैདྷͷWebΞʔΩςΫνϟ͕WebSocketΛ ѻ͏ͱ͖ͷ೉͍͠఺Λ੔ཧ • ௕࣌ؒੜ͖ଓ͚Δ௨৴ηογϣϯΛҡ࣋͢Δͷ͕೉͍͠ • ௨৴ͱϢʔβΛඥ෇͚Δͷ͕೉͍͠ => ͜ͷลϛυϧ΢ΣΞʹ೚ͤΔͷ͸Ͳ͏͔ ֎ʹग़͢ͷ͸ϚΠΫϩαʔϏεͷߟ͑ํʹ͍͔ۙ΋͠Εͳ͍

Slide 27

Slide 27 text

WebSocketηογϣϯΛ ҡ࣋͢Δ͚ͩͷ ϛυϧ΢ΣΞ kuiperbeltͷ։ൃͱಋೖ

Slide 28

Slide 28 text

kuiperbeltͱ͸ • OSSͰ͢3 • WebSocketͷηογϣϯΛड͚ͯҡ࣋͢Δ͚ͩͷ௨৴σʔϞϯ • ࠷ॳ͸ݸਓϓϩδΣΫτͰ͕ͨ͠ɺձࣾͰ͔ͳΓ࢖ΘΕ͍ͯ· ͢ • ձࣾͷਓʹ΋ίϛοτͯ͠΋Β͍ͬͯ·͢ 3 https://github.com/kuiperbelt/kuiperbelt

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

໊લͷ༝དྷ ఱจֶͷΤοδϫʔεɾΧΠύʔϕϧτ*͔Β * photo by NASA

Slide 32

Slide 32 text

kuiperbelt͕ग़དྷΔ͜ͱ • WebSocketηογϣϯͷҡ࣋ • HTTP-APIͰͷಛఆηογϣϯ΁ͷϝοηʔδͷྲྀ͠ࠐΈ • ্Γ(ΫϥΠΞϯτ->αʔό)͸ඇରԠ7 7 ରԠ༧ఆ͸͋Γ

Slide 33

Slide 33 text

࿩͢͜ͱͷྲྀΕ 1. ౦ژϓϦζϯͰͷαʔόߏ੒ͷུ֓ 2. kuiperbeltΛ࢖ͬͨWebSocketηογϣϯͷೝূɾϝοηʔδ഑ ৴ 3. ઃܭࢥ૝ 4. ࣮ࡍͷӡ༻ࣄྫ 5. ౦ژϓϦζϯͰͷ࣮ࡍͷ࢖ΘΕํ

Slide 34

Slide 34 text

౦ژϓϦζϯͷαʔόߏ੒8 8 ຊ೔17:50ΑΓฐࣾ౻ݪͷৄ͍͠ߏ੒ͷղઆ͕͋Γ·͢

Slide 35

Slide 35 text

HTTPͷதͷ࢓૊ΈͷதͰೝূΛ͢Δ • ೝূ͸WebSocket΁ͷΞοϓάϨʔυલʹWebAppଆʹϓϩΩ γΛߦ͏ • ϓϩΩγ࣌ʹkuiperbelt͸ࣗ෼ͷղܾՄೳͳϗετ໊Λ෇Ճ͢ Δ -> εέʔϧΞ΢τʹ༻͍Δ • WebAppଆ͸ϨεϙϯεͷϔομʹࣝผࢠΛՃ͑Δ

Slide 36

Slide 36 text

HTTPͷதͷ࢓૊ΈͷதͰೝূΛ͢Δ

Slide 37

Slide 37 text

HTTPͷதͷ࢓૊ΈͷதͰϝοηʔδ഑৴Λ ͢Δ • ΫϥΠΞϯτ΁ͷϝοηʔδ͸ϔομͰࣝผࢠΛࢦఆͯ͠ɺϘ σΟͷ಺༰͸ͦͬ͘Γͦͷ··WebSocketͷηογϣϯʹྲྀ͠ ࠐΉ • த਎ͷϝοηʔδͷܗࣜ͸kuiperbelt͸ؔ༩͠ͳ͍ • ౦ژϓϦζϯ͸όΠφϦΛྲྀͯ͠·͢

Slide 38

Slide 38 text

HTTPͷதͷ࢓૊ΈͷதͰϝοηʔδ഑৴Λ ͢Δ

Slide 39

Slide 39 text

kuiperbeltࣗ਎ͷઃܭࢥ૝ • ୯७ͳ͜ͱ͔͠΍Βͳ͍ͷͰམͪͳ͍ɾ࠶ىಈ͠ͳͯ͘ྑ͍ • ήʔϜϩδοΫ͸஌Βͳ͍ͷͰσϓϩΠ͕ඞཁͳ͍ • ൒೥Ҏ্ӡ༻͍ͯ͠Δ͕ϝϞϦϦʔΫ͸ى͖͍ͯͳ͍ • ಛఆϓϩτίϧɾϛυϧ΢ΣΞʹґଘ͠ͳ͍

Slide 40

Slide 40 text

ผλΠτϧͰͷো֐ࣄྫ ͏͔ͬΓHTTP/2ࣄ݅ ݱࡏ͸ҰఆִؒͰίωΫγϣϯΛഁغ͢Δ࣮૷͕ೖ͍ͬͯ·͢

Slide 41

Slide 41 text

kuiperbeltࣗ਎ͷઃܭࢥ૝ • GoͰॻ͔Ε͍ͯΔͷͰίΞ෼͚ͩͪΌΜͱεέʔϧ͢Δ • 1ίΞ͋ͨΓඵؒ10,000ϝοηʔδ͙Β͍(1ϝοηʔδ͋ͨΓ ฏۉ150bytes) • ϝϞϦྔ͸ΫϥΠΞϯτ਺ʹൺྫ͠ɺϝοηʔδͷ಺༰ͳͲ ʹ΋ࠨӈ͞ΕΔ͕1ສ઀ଓͰ1GBʙ1.8GB

Slide 42

Slide 42 text

࣮ࡍͷӡ༻Ͱ͸ • ࣮ෛՙࢼݧͰϝοηʔδྲྀྔͱϝοηʔδαΠζ͕େ͖͍͜ͱ ͕൑໌ͨͨ͠Ίɺ1Πϯελϯε5000઀ଓఔ౓ʹ཈͑ͨ • m3.large4ͱr4.large5ͷspot fleetʹ͍ͯͨ͠Βm3.largeͷpps ্ݶ͕௿ͯ͘ภΓ͕ग़ͨͷͰr4.largeͷΈͷӡ༻ʹ͍ͯ͠Δ 5 2core 15.25GBϝϞϦ 4 2core 7.5GBϝϞϦ

Slide 43

Slide 43 text

ύέοτ٧·ΓΛىͯ͜͠࠶ૹ͕ߦΘΕ͍ͯ Δϩά 21:00:47 plack.1 | 1019.259 ms [Furl::HTTP] POST http://XX.XX.XX.XX:9180/send | Furl:40 21:00:47 plack.1 | 3017.341 ms [Furl::HTTP] POST http://XX.XX.XX.XX:9180/send | Furl:40 21:00:47 plack.1 | 1017.801 ms [Furl::HTTP] POST http://XX.XX.XX.XX:9180/send | Furl:40 21:00:47 plack.1 | 7174.359 ms [Furl::HTTP] POST http://XX.XX.XX.XX:9180/send | Furl:40 21:00:47 plack.1 | 1025.966 ms [Furl::HTTP] POST http://XX.XX.XX.XX:9180/send | Furl:40 21:00:47 plack.1 | 10010.330 ms [Furl::HTTP] POST http://XX.XX.XX.XX:9180/send | Furl:40 1, 3, 7, 10...ͱ஗Ԇ͍ͯ͠ΔͷͰ࠶ૹͰ٧·͍ͬͯΔͷͰ͸ʁ ͱ ͳͬͨ

Slide 44

Slide 44 text

΍͍ͬͯΔ͜ͱ͕γϯϓϧͳͷͰ༷ʑͳΞʔΩςΫνϟʹରԠͰ͖Δ MO޲͖ͷதܧ͚ͩߦ͏ΞʔΩςΫνϟ

Slide 45

Slide 45 text

΍͍ͬͯΔ͜ͱ͕γϯϓϧͳͷͰ༷ʑͳΞʔΩςΫνϟʹରԠͰ͖Δ MMO΍Ϛονϯά޲͖ͷαʔόͰήʔϜϩδοΫΛ࣮ߦ͢ΔΞʔΩςΫνϟ

Slide 46

Slide 46 text

ϦΞϧλΠϜ௨৴αʔόΛϩʔυόϥϯαʔʹ૊ΈࠐΉ Q: ෳ਺ͷαʔόΛܦ༝͢Δ͔ΒϨΠςϯγ͕ݫ͍͠ͷͰ͸ʁ A1: ϞόΠϧʹ͓͍ͯ͸ͦͷݶΓͰ͸ͳ͍ A2: λʔϯ੍ͳΒ͋Δఔ౓ڐ༰Ͱ͖Δ

Slide 47

Slide 47 text

A1: ϞόΠϧʹ͓͍ͯ͸ͦͷݶΓͰ͸ͳ͍ HTTP-APIΛଧ͔ͬͯΒWebSocketͰԠ౴͕͔͑ͬͯ͘Δ·Ͱͷ RTTΛܭଌ6 6 JavaScriptͳͷͰspectreͷӨڹͰ2msఔ౓ͷؙΊ͕ଘࡏ͍ͯ͠Δͷ͸ཹҙ

Slide 48

Slide 48 text

A1: ϞόΠϧʹ͓͍ͯ͸ͦͷݶΓͰ͸ͳ͍ • લ൒͕ݻఆޫճઢܦ༝ͷWiFi, ޙ൒͕4G • WiFiͩͱ20 ʙ 30ms, 4Gͩͱ75msʙ • LBΛܦ༝͢Δ͜ͱʹΑΔϨΠςϯγ͸1ܻmsఔ౓ • ϞόΠϧʹ͓͍ͯ͸LBʹΑΔϨΠςϯγ͸ࢧ഑తͰ͸ͳ͍

Slide 49

Slide 49 text

A2: λʔϯ੍ͳΒ͋Δఔ౓ڐ༰Ͱ͖Δ • ͜Ε͕PC΍ίϯγϡʔϚͰ΍ΔΑ͏ͳFPS΍֨ήʔͰ͋Ε͹1ܻ msͷ஗ԆͰ͢Β୹ॖ͍ͨ͠ • ڐ༰͞ΕΔ஗Ԇ෯͸ήʔϜγεςϜʹΑͬͯมΘΔ • ཁ݅ʹΑͬͯ͸ૹΓͬͺͳ͠ʹͰ͖Δ/Φʔόʔϔου͕গͳ ͍UDPͳͲΛબ୒͢Δ

Slide 50

Slide 50 text

ݱঢ়͸LBʹೖΕΔϝϦοτ͕Ͱ͔͍ • TLS TerminationΛ೚ͤΔ͜ͱ͕ग़དྷΔ • ݸผʹTerminationΛ΍͍ͬͯΔͱূ໌ॻͷ؅ཧ͕໘౗ • ࠷ۙ͸௨Βͳ͍ϑΥϫʔυϓϩΩγ͕ݮͬͨͱ͸͍͑ੜ WebSocket͸ૄ௨͢Δ͔Ͳ͏͔ͷϦεΫ͕͋Δ

Slide 51

Slide 51 text

ݱঢ়͸LBʹೖΕΔϝϦοτ͕Ͱ͔͍ • ࣗಈͰ༙͍ͨԾ૝Ϛγϯ/ίϯςφʹ౸ୡՄೳͳIPΞυϨε/ϗ ετΛͲ͏΍ͬͯΫϥΠΞϯτʹ௨஌͢Δ͔໰୊ • ैདྷ͸ಉ͡ϧʔϜΛݻΊΔΑ͏ʹϚονϯά࣌ʹ઀ଓ͢΂͖ ΞυϨεΛࣔͨ͠Γ • LBͳΒೖΕΔ͚ͩͰ౸ୡՄೳʹͳΔɺϧʔϜͰݻΊΔΈ͍ͨ ͳͷ͸ग़དྷͳ͍͕

Slide 52

Slide 52 text

࣮ࡍʹ૊ΈࠐΜͰΈͯ౦ژϓϦζϯ ͸ͲͷΑ͏ʹήʔϜΛਐߦ͍ͯ͠Δ ͔

Slide 53

Slide 53 text

kuiperbeltΛ૊ΈࠐΜͩ౦ژϓϦζϯͷॲཧ

Slide 54

Slide 54 text

kuiperbeltΛ૊ΈࠐΜͩ౦ژϓϦζϯͷॲཧ

Slide 55

Slide 55 text

ήʔϜϩδοΫ͕αʔόଆʹ͋Δ͜ͱͷϝ Ϧοτ • ήʔϜϩδοΫͷมߋ͕͋Δఔ౓༰қ ετΞਃ੥͕ཁΒͳ͍ • ΫϥΠΞϯτੑೳʹҾͬுΒΕͳ͍ • ΫϥΠΞϯτ։ൃऀ͸ֆΛग़͢͜ͱʹूதͰ͖Δ • νʔτ΋͞Εʹ͍͘ • ϩΪϯά΋༰қͳͷͰղੳͳͲ΋Ͱ͖Δ

Slide 56

Slide 56 text

ήʔϜϩδοΫ͕αʔόଆʹ͋Δ͜ͱͷσϝ Ϧοτ • ΫϥΠΞϯτ͕αʔόͷॲཧΛ଴ͭͨΊϨεϙϯγϏϦςΟ͕ ѱ͍ • αʔόͷϨεϙϯεΛ଴ͨͳ͍ͳͲͷରࡦΛߨ͍ͯ͡Δ(ඇಉ ظԽ)

Slide 57

Slide 57 text

ήʔϜϩδοΫ͕αʔόଆʹ͋Δ͜ͱͷσϝ Ϧοτ • αʔόͷෛՙରࡦΛे෼ʹߦ͏ඞཁ͕͋ΔɹϦιʔε΋֬อ͢ Δඞཁ͕͋Δ • ૝ఆ࣮ෛՙࢼݧͱνϡʔχϯάΛ܁Γฦ͠·͕ͨ͠ඇৗʹۤ ࿑͠·ͨ͠

Slide 58

Slide 58 text

ͦͷଞkuiperbeltΛಋೖͨ͜͠ͱͰݟ͖͑ͯͨ ໰୊఺ 1. ϝοηʔδ౸ୡॱ໰୊ 2. αʔόؒϝοηʔδܽଛ໰୊

Slide 59

Slide 59 text

ϝοηʔδ౸ୡॱ໰୊ kuiperbeltͷதͰϩοΫऔΕͨॱ൪ʹྲྀΕΔ

Slide 60

Slide 60 text

ϝοηʔδ౸ୡॱ໰୊ ղ๏ • γʔέϯε൪߸Λ΋্ͨͤͨͰ 1. ΫϥΠΞϯτଆͰόοϑΝϦϯάͭͭ͠ฒ΂௚͢ 2. kuiperbeltଆͰόοϑΝϦϯάͭͭ͠ฒ΂௚͢

Slide 61

Slide 61 text

ϝοηʔδ౸ୡॱ໰୊ ΫϥΠΞϯτଆͰฒ΂௚͢ͷΛ࠾༻ • kuiperbeltͰ΍ΔͱϝϞϦ࢖༻ྔ͕૿͑Δ, ঢ়ଶ͕૿͑ͯίϯς φ͕མͪͨͱ͖ʹϝοηʔδܽଛ͕૿͑Δ • ඈ͹ͦ͏ͱͨ͠ϝοηʔδ͸ͬ͞͞ͱૹͬͯঢ়ଶΛͳ͘͢ • kuiperbelt͸த਎ʹྲྀΕΔσʔλʹؔ༩͠ͳ͍ϧʔϧ

Slide 62

Slide 62 text

αʔόؒϝοηʔδܽଛ໰୊ • HTTPͰ௚઀ૹΔͱܽଛ͢ΔΜ͡Όͳ͍ʁʁʁ • DC಺௨৴, Ϧʔδϣϯ಺௨৴ͳͷͰܦ࿏ͰམͪΔ͜ͱ͸ͳ͔ ͳ͔ͳ͍ • ϦτϥΠ&ΫϥΠΞϯτଆͰͷॏෳݕ஌ͳͲ΋ೖΕ͍ͯΔ • ࠓޙ͸circuit breaker΋ೖΕΔ

Slide 63

Slide 63 text

ͦͯ͠ӡ༻͍ͯ͠Δࠓ͸ • αʔόͷਓ͕͋Μ·ΓWebSocketͷ͜ͱΛߟ͑ͣʹࠓ·ͰͲ͓ ΓίʔυΛॻ͚Δ • WebSocketαʔό͕ίϯςφͱϩʔυόϥϯαʔʹΑͬͯϊʔ ϝϯςͰಈ͍͍ͯΔ • ͍ͭͰ΋ίϚϯυҰൃͰεέʔϧΞ΢τՄೳ • WebSocketͷ͜ͱΛ͋·Γߟ͑ͣʹσϓϩΠ͕ग़དྷΔ

Slide 64

Slide 64 text

εέʔϧՄೳͰ ӡ༻͠΍͍͢ WebSocketαʔό ͕ಈ͍͍ͯΔ

Slide 65

Slide 65 text

·ͱΊ • ैདྷͷWebΞϓϦέʔγϣϯΞʔΩςΫνϟʹൺֱత༰қʹಋ ೖͰ͖ΔϦΞϧλΠϜ௨৴༻ϛυϧ΢ΣΞΛ࡞࣮ͬͯࡍʹຊ൪ ಋೖ͠·ͨ͠ • ଞͷطʹӡ༻தͷήʔϜʹ΋ಋೖ͢Δχʔζ͕͋ΔΑ͏ͳͷͰ ͜Ε͔Β΋΍͍͖ͬͯ·͢ • ຊ൪ӡ༻ͯ͠ΈͯɺղܾՄೳͰ͸͋Δ͕ɺͦͦ͜͜ͷ໰୊͸͍ ͔ͭ͘߹ͬͨͷͰڞ༗͍͖ͤͯͨͩ͞·ͨ͠

Slide 66

Slide 66 text

Any Questions?