Slide 1

Slide 1 text

UnicornͰActionCableΛ ࢖͓͏ͱͯ͠ϋϚΓ͔͚ͨ͜ͱ ϝυϐΞגࣜձࣾ ΤϯδχΞ ଜ্ େ࿨

Slide 2

Slide 2 text

self_introduce.json { “name”: “ଜ্େ࿨”, “age”: 26, “github”: “pipopotamasu”, “company”: “ϝυϐΞגࣜձࣾ”, “tech”: [“Ruby”, “PHP”, “Vue.js”, “React”], “hobby”: [“໺ٿ”, “өը”], }

Slide 3

Slide 3 text

https://jp.vuejs.org/v2/cookbook/ creating-custom-scroll-directives.html

Slide 4

Slide 4 text

http://tech.medpeer.co.jp/

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

※ ࠓ೔͸JSͷ࿩͸͠·ͤΜ

Slide 7

Slide 7 text

ͱ͍͏Θ͚ͰൃදςʔϚ

Slide 8

Slide 8 text

UnicornͰActionCableΛ ࢖͓͏ͱͯ͠ϋϚΓ͔͚ͨ͜ͱ

Slide 9

Slide 9 text

͜͜Ͱ࣭໰ʂ

Slide 10

Slide 10 text

ීஈRails࢖ͬͯΔਓ (´ɾωɾ`)ϊγ

Slide 11

Slide 11 text

ActionCable࢖ͬͯΔਓ (ɾωɾ)ϊγ

Slide 12

Slide 12 text

ActionCableͱ͸ • RailsΞϓϦέʔγϣϯͰWebSocketΛ࣮ݱ͢ ΔͨΊͷϑϨʔϜϫʔΫ • Rails5.0͔Βಋೖ

Slide 13

Slide 13 text

WebSocketͱ͸ • ΫϥΠΞϯτͱαʔόʔͷ૒ํ޲௨৴Λ௿ί ετͰ࣮ݱ͢ΔͨΊͷ࢓૊Έ

Slide 14

Slide 14 text

WebSocketͱ͸ • ΫϥΠΞϯτͱαʔόʔͷ૒ํ޲௨৴Λ௿ί ετͰ࣮ݱ͢ΔͨΊͷ࢓૊Έ • νϟοτΞϓϦΛΠϝʔδ͢ΔͱΘ͔Γ΍͢ ͍

Slide 15

Slide 15 text

WebSocketͱ͸ ΫϥΠΞϯτͱαʔόʔ ؒͰ Websocket༻௨৴(ίωΫγϣϯ)Λཱ֬

Slide 16

Slide 16 text

WebSocketͱ͸ ϢʔβA͕νϟοτΞϓϦͰͭͿ΍͘ ͜ΜʹͪΘ

Slide 17

Slide 17 text

WebSocketͱ͸ WebsocketͷίωΫγϣϯΛ௨ͯ͡ αʔό΁ ͜ΜʹͪΘ

Slide 18

Slide 18 text

WebSocketͱ͸ αʔό͔ΒίωΫγϣϯΛར༻ͯ͠ ଞͷϢʔβʹPush(σʔλΛૹ৴)͢Δ ͜ΜʹͪΘ

Slide 19

Slide 19 text

WebSocketͱ͸ ϢʔβB͸ίωΫγϣϯΛ௨ͯ͡Ϣʔβ AͷϝοηʔδΛड͚औΔɻ ͜ΜʹͪΘ

Slide 20

Slide 20 text

γʔϜϨεʹ σʔλ௨৴͕Ͱ͖Δ

Slide 21

Slide 21 text

WebSocket͡Όͳ͍৔߹

Slide 22

Slide 22 text

௨ৗͷHTTPϦΫΤετͷ৔߹ ϢʔβA͕νϟοτΞϓϦͰͭͿ΍͘ ͜ΜʹͪΘ

Slide 23

Slide 23 text

௨ৗͷHTTPϦΫΤετͷ৔߹ HTTPϦΫΤετͰαʔό΁ (ͦͯ͠ϝοηʔδΛอଘ) ͜ΜʹͪΘ

Slide 24

Slide 24 text

௨ৗͷHTTPϦΫΤετͷ৔߹ ϢʔβB͸৽͍͠ϝοηʔδ͕ͳ͍͔ɺ HTTPϦΫΤετΛ౤͛Δ

Slide 25

Slide 25 text

௨ৗͷHTTPϦΫΤετͷ৔߹ ϢʔβB͸৽͍͠ϝοηʔδ͕ͳ͍͔ɺ ΋͏ҰճHTTPϦΫΤετΛ౤͛Δ

Slide 26

Slide 26 text

௨ৗͷHTTPϦΫΤετͷ৔߹ ϢʔβB͸৽͍͠ϝοηʔδ͕ͳ͍͔ɺ Կճ΋HTTPϦΫΤετΛ౤͛Δ

Slide 27

Slide 27 text

௨ৗͷHTTPϦΫΤετͷ৔߹ ϢʔβB͸৽͍͠ϝοηʔδ͕ͳ͍͔ɺ ఆظతʹHTTPϦΫΤετΛ౤͛Δ(େ఍ͳ͍) ͜ΜʹͪΘ

Slide 28

Slide 28 text

௨ৗͷHTTPϦΫΤετͷ৔߹ ͋ͬͨ৔߹͸ϝοηʔδΛड͚औΔ ͜ΜʹͪΘ

Slide 29

Slide 29 text

WebSocketศར

Slide 30

Slide 30 text

͔͜͜Βຊ୊Ͱ͢

Slide 31

Slide 31 text

UnicornͰActionCableΛ ࢖͓͏ͱͯ͠ϋϚΓ͔͚ͨ͜ͱ

Slide 32

Slide 32 text

ίωΫγϣϯʹΑΔ ϓϩηεރׇ໰୊

Slide 33

Slide 33 text

ࣄલ஌ࣝ

Slide 34

Slide 34 text

2ͭͷΞϓϦέʔγϣϯ αʔόΛ঺հ

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

Unicornུ֓ • ΞϓϦέʔγϣϯαʔό • ϓϩηε্Ͱಈ࡞͢Δ • masterϓϩηεɺworkerϓϩηεͷ2छྨ͕͋ Γɺworkerϓϩηε(܈)͕ϦΫΤετΛॲཧ͢ Δ

Slide 37

Slide 37 text

Pumaུ֓ • ΞϓϦέʔγϣϯαʔό • εϨου্Ͱಈ࡞͢Δ • ෳ਺ͷϦΫΤετΛผʑͷεϨου(worker)Ͱ ฒྻॲཧ͢Δ

Slide 38

Slide 38 text

εϨουϕʔ εͳ෼ɺ QVNBͷํ͕ΑΓଟ͘ͷϦΫΤε τΛࡹ͚Δ

Slide 39

Slide 39 text

ϓϩηεϕʔεͳ ͷͰɺεϨου΄ͲϦΫΤετΛ ଟ͘ࡹ͚ͳ͍

Slide 40

Slide 40 text

ϝυϐΞ͸6OJDPSO Λ࢖͍ͬͯΔ

Slide 41

Slide 41 text

• εϨουηʔϑΛߟ͑ͳͯ͘ྑ͍ • େྔΞΫηε࣌ͷॲཧ͕҆ఆ͍ͯ͠Δ

Slide 42

Slide 42 text

http://blog.willnet.in/entry/2015/02/24/155006 UnicornͱPumaͷൺֱ͸ ҎԼͷURLʹ·ͱ·͍ͬͯ·͢

Slide 43

Slide 43 text

6OJDPSOͰ "DUJPO$BCMF࢖͑Δ https://github.com/rails/rails/blob/master/ actioncable/README.md

Slide 44

Slide 44 text

͔͠͠…

Slide 45

Slide 45 text

Unicornུ֓ • ΞϓϦέʔγϣϯαʔό • ϓϩηε্Ͱಈ࡞͢Δ • masterϓϩηεɺworkerϓϩηεͷ2छྨ͕͋ Γɺworkerϓϩηε(܈)͕ϦΫΤετΛॲཧ͢ Δ

Slide 46

Slide 46 text

1HTTPϦΫΤετ = 1ϓϩηε

Slide 47

Slide 47 text

ͱ͍͏͜ͱ͸WebSocketͰ͸…

Slide 48

Slide 48 text

1ίωΫγϣϯ = 1ϓϩηε

Slide 49

Slide 49 text

ίωΫγϣϯ͕େྔʹ࡞ΒΕͨΒ ϓϩηεރׇ͢ΔΜ͡ΌͶ?

Slide 50

Slide 50 text

ϓϩηεϕʔεͷUnicorn͡Ό ຊ൪ͰActionCable࢖͑ͳ͘Ͷ?

Slide 51

Slide 51 text

ʘ(^o^)ʗ

Slide 52

Slide 52 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

Slide 53

Slide 53 text

͍΍଴ͯΑ…?

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

6OJDPSOͷϓϩηεͷ਺

Slide 56

Slide 56 text

։ൃ؀ڥͰͷίωΫγϣϯͷ਺

Slide 57

Slide 57 text

1ϓϩηεͰ2ͭͷίωΫγϣϯ ͕Ͱ͖͍ͯΔ…?

Slide 58

Slide 58 text

1ίωΫγϣϯ = 1ϓϩηε

Slide 59

Slide 59 text

1ίωΫγϣϯ = 1ϓϩηε

Slide 60

Slide 60 text

ৄ͘͠ௐ΂ͳ͚Ε͹…

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

·ͣ͸ίωΫγϣϯ࡞੒࣌ ͷॲཧΛݟͯΈΑ͏

Slide 63

Slide 63 text

https://github.com/rails/rails/blob/master/ actioncable/lib/action_cable/connection/base.rb

Slide 64

Slide 64 text

Unicornུ֓ • ΞϓϦέʔγϣϯαʔό • ϓϩηε্Ͱಈ࡞͢Δ • masterϓϩηεɺworkerϓϩηεͷ2छྨ͕͋ Γɺworkerϓϩηε(܈)͕ϦΫΤετΛॲཧ͢ Δ

Slide 65

Slide 65 text

Pumaུ֓ • ΞϓϦέʔγϣϯαʔό • εϨου্Ͱಈ࡞͢Δ • ෳ਺ͷϦΫΤετΛผʑͷεϨου(worker)Ͱ ฒྻॲཧ͢Δ

Slide 66

Slide 66 text

worker = ϓϩηεɾεϨου

Slide 67

Slide 67 text

worker_pool͋ͨΓ͕ոͦ͠͏

Slide 68

Slide 68 text

https://github.com/rails/rails/blob/master/ actioncable/lib/action_cable/server/base.rb

Slide 69

Slide 69 text

WorkerΫϥεͷίϯετϥΫλʹ 伴͕͋Γͦ͏…

Slide 70

Slide 70 text

https://github.com/rails/rails/blob/master/ actioncable/lib/action_cable/server/worker.rb

Slide 71

Slide 71 text

https://github.com/rails/rails/blob/master/ actioncable/lib/action_cable/server/worker.rb

Slide 72

Slide 72 text

https://github.com/rails/rails/blob/master/ actioncable/lib/action_cable/server/worker.rb

Slide 73

Slide 73 text

https://github.com/rails/rails/blob/master/ actioncable/lib/action_cable/server/worker.rb 3VCZͰεϨουηʔϑͳ ฒྻॲཧΛॻͨ͘Ίͷ(FN

Slide 74

Slide 74 text

εϨου࡞ͬͯͨ

Slide 75

Slide 75 text

݁࿦

Slide 76

Slide 76 text

HTTPϦΫΤετͱҧ͍ɺ 1ίωΫγϣϯ = 1ϓϩηε Ͱ͸ͳ͍

Slide 77

Slide 77 text

Unicorn͸εϨουϕʔεͰ͸ͳ͍͕ɺ εϨουΛ࡞ͬͯίωΫγϣϯΛ ࡞੒͍ͯ͠Δ

Slide 78

Slide 78 text

ίωΫγϣϯ͕ଟ͘ͳͬͯ΋ɺ (౰ॳͷ༧૝ΑΓ͸) ϓϩηε͸ṧഭ͠ͳͦ͞͏

Slide 79

Slide 79 text

UnicornͰ΋
 ຊ൪ͰActionCable࢖͑ͦ͏!

Slide 80

Slide 80 text

ʌ(●˶∇˶●)ů

Slide 81

Slide 81 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

Slide 82

Slide 82 text

UnicornͰActionCableͷ࢖༻ܦݧ ͋Δਓ͕͍ͨΒ஌ݟΛڭ͍͑ͯͩ͘͞

Slide 83

Slide 83 text

No content