Slide 1

Slide 1 text

φ΢ͰϠϯάͳ17ࡀͷ VPSߏஙه ͋ͳͨͷொͷGeekɻ yosida95 / ٢ా ߉ฏ 1 12೥9݄15೔౔༵೔

Slide 2

Slide 2 text

͓·͑ɺ୭Αʁ ٢ా߉ฏ, @yosida95, id:yosida95 17ࡀͷߴߍ2೥ੜ ΞϑλʔεΫʔϧϓϩάϥϚʔ ࣗࣨαʔόʔͰWeb αʔϏεΛӡӦ ͢Δఔ౓ͷೳྗ http://yosida95.com/ 2 12೥9݄15೔౔༵೔

Slide 3

Slide 3 text

͓·͑ɺ୭Αʁ ՆٳΈதʹौ୩ܥIT اۀͰεϚϑΥ ΤϯδχΞͱͯ͠ΞϧόΠτ ݱࡏઈࢍٻΞϧόΠτத Python ͰΖ͘Ζճ͍ͨ͠ʂʂ http://yosida95.com/ 3 12೥9݄15೔౔༵೔

Slide 4

Slide 4 text

͓·͑ɺ୭Αʁ TwitActivity / http://twit.yosida95.com Twitter Ͱͷձ࿩ΛϦΞϧλΠϜʹ ·ͱΊɺදࣔ͢ΔαʔϏε Event Search / http://event.yosida95.com ATND Beta, Connpass, Zusaar ͔Β ΠϕϯτΛݕࡧ͢ΔαʔϏε http://yosida95.com/ 4 12೥9݄15೔౔༵೔

Slide 5

Slide 5 text

͓·͑ɺ୭Αʁ ݟͯΔͳ͏(Ծ) http://miteru.yosida95.com/ Ӿཡதͷ΢ΣϒϖʔδΛTwitter ্ ʹϙετ͢ΔϒοΫϚʔΫϨοτ Ϣʔβʔ150໊ఔ౓ http://yosida95.com/ 5 12೥9݄15೔౔༵೔

Slide 6

Slide 6 text

ࠓ೔ͷ͋͐͡Μͩ VPS ͱ͸ʁ Ͳ͏ͯ͠VPS Λ࡞ͬͨͷʁ Ծ૝Ϛγϯ੍ޚΛࢧ͑Δٕज़ ίϯύωΛࢧ͑Δٕज़ ࠓޙ࣮૷͍ͨ͠΋ͷ 6 12೥9݄15೔౔༵೔

Slide 7

Slide 7 text

ࠓ೔ͷ͋͐͡Μͩ αςετ βςετ σϞ (࣭ٙԠ౴) 7 12೥9݄15೔౔༵೔

Slide 8

Slide 8 text

ͱ͍͏͜ͱͰ Θͨ͠ɺ͓͏ͪʹVPSߏஙͪ͠Ό͍·͠ ͨʂ 8 12೥9݄15೔౔༵೔

Slide 9

Slide 9 text

VPS ͱ͸ Virtual Private Server ͷུɻ ͘͞ΒVPS ͳͲ͕༗໊ɻ௿Ձ֨Ͱઐ༻ αʔόʔͱಉఔ౓ͷࣗ༝౓͕ఏڙ͞Ε Δ͜ͱͰਓؾͷϨϯλϧαʔόʔαʔϏ εɻ 9 12೥9݄15೔౔༵೔

Slide 10

Slide 10 text

VPS ͱ͸ ٕज़తʹ͸αʔόʔԾ૝Խٕज़ʹΑͬͯ 1୆ͷ෺ཧϚγϯ্Ͱಈ͍͍ͯΔݸʑͷ αʔόʔͷ͜ͱɻ গ਺ͷ෺ཧαʔόʔͰଟ͘ͷԾ૝Ϛγ ϯΛಈ͔ͤΔͷͰ҆ՁͰఏڙͰ͖Δɻ 10 12೥9݄15೔౔༵೔

Slide 11

Slide 11 text

VPS ͱ͸ ϗεταʔόʔ VPS VPS VPS VPS 11 12೥9݄15೔౔༵೔

Slide 12

Slide 12 text

Ͳ͏ͯ͠VPS Λ࡞ͬͨͷʁ (1)ܭࢉϦιʔε༗ޮ׆༻ͷͨΊʹࣗ୐ ͷαʔόʔΛԾ૝Խ (2)Ծ૝ϚγϯΛίϚϯυ1ͭͰ࡞੒Ͱ ͖ΔΑ͏ʹͯ͠Έͨ 12 12೥9݄15೔౔༵೔

Slide 13

Slide 13 text

Ͳ͏ͯ͠VPS Λ࡞ͬͨͷʁ (3)Ծ૝ϚγϯΛ΢Σϒίϯύω͔Β੍ ޚͰ͖Ε͹ૉఢ (4)Α͠ɺ࡞Ζ͏ 13 12೥9݄15೔౔༵೔

Slide 14

Slide 14 text

Ͳ͏ͯ͠VPS Λ࡞ͬͨͷʁ (5)Ծ૝Ϛγϯ + ΢Σϒίϯύω ʹ͜ΕͬͯVPS ͳͷͰ͸ 14 12೥9݄15೔౔༵೔

Slide 15

Slide 15 text

Ծ૝Ϛγϯ੍ޚΛࢧ͑Δٕज़ αʔόʔ Scientific Linux - ϗετOS KVM/QEMU - Ծ૝Խج൫ ⇒ ׬શԾ૝Խ libvirt(Python Package) - Ϛγϯ੍ޚ 15 12೥9݄15೔౔༵೔

Slide 16

Slide 16 text

KVM/QEMU KVM Kernel-based Virtual Machine ͷུ Linux Χʔωϧʹඪ४Ͱ౥ࡌ Intel VT-x ΍AMD-V Λར༻ͯ͠Ծ૝ ԽΛ࣮ݱ͢Δ 16 12೥9݄15೔౔༵೔

Slide 17

Slide 17 text

KVM/QEMU QEMU ϋʔυ΢ΣΞͷΤϛϡϨʔτΛ ߦ͏ Linux ͷϢʔβʔϓϩηεͱͯ͠ ಈ࡞͢Δ 17 12೥9݄15೔౔༵೔

Slide 18

Slide 18 text

KVM/QEMU Linux Kernel KVM VPS QEMU VPS QEMU VPS QEMU VPS QEMU 18 12೥9݄15೔౔༵೔

Slide 19

Slide 19 text

libvirt QEMU ΍XEN ଞଟ͘ͷ؀ڥͰಈ͘Ծ ૝ϚγϯΛڞ௨API Ͱίϯτϩʔϧ Ͱ͖ΔCϥΠϒϥϦ Ծ૝Ϛγϯʹର͢Δ͋ΒΏΔૢ࡞Λ libvirt ͔Βߦͳ͍ͬͯ·͢ɻ 19 12೥9݄15೔౔༵೔

Slide 20

Slide 20 text

libvirt libvirt Λར༻Ͱ͖Δݴޠ C C# Java OCaml Perl PHP Python Ruby 20 12೥9݄15೔౔༵೔

Slide 21

Slide 21 text

libvirt virt-manager ͱ͍͏Ծ૝Ϛγϯૢ࡞༻ GUI ΞϓϦέʔγϣϯ͕Python Ͱ࣮ ૷͞Ε͍ͯΔ ࠓճͷίϯτϩʔϧύωϧ੡࡞ʹ ͋ͨΓେ͍ʹࢀߟʹͳͬͨ 21 12೥9݄15೔౔༵೔

Slide 22

Slide 22 text

ίϯύωΛࢧ͑Δٕज़ ίϯύωʹཁٻ͞ΕΔػೳ VPS ৽ن࡞੒ VPS ిݯૢ࡞ VNC ίϯιʔϧ OS ࠶Πϯετʔϧ 22 12೥9݄15೔౔༵೔

Slide 23

Slide 23 text

Task Queueing ॲཧͷڝ߹๷ࢭ ੔߹ੑอ࣋ ίωΫγϣϯઅ໿ etc... 23 12೥9݄15೔౔༵೔

Slide 24

Slide 24 text

Task Queueing Kestrel Scala ੡ϝοηʔδΩϡʔαʔό memcached ޓ׵ MongoDB υΩϡϝϯτࢦ޲NoSQL 24 12೥9݄15೔౔༵೔

Slide 25

Slide 25 text

Task Queueing Queue Client Web Control Panel Mongo DB Kestrel 25 12೥9݄15೔౔༵೔

Slide 26

Slide 26 text

Task Queueing Queue Client Web Control Panel Mongo DB (1)Task Kestrel 25 12೥9݄15೔౔༵೔

Slide 27

Slide 27 text

Task Queueing Queue Client Web Control Panel Mongo DB (1)Task (2)Task ID + Task Kestrel 25 12೥9݄15೔౔༵೔

Slide 28

Slide 28 text

Task Queueing Queue Client Web Control Panel Mongo DB (1)Task (2)Task ID + Task Kestrel (3) Task ID 25 12೥9݄15೔౔༵೔

Slide 29

Slide 29 text

Task Queueing Queue Client Web Control Panel Mongo DB (1)Task (2)Task ID + Task Kestrel (3) Task ID (4)Task ID 25 12೥9݄15೔౔༵೔

Slide 30

Slide 30 text

Task Queueing Queue Client Task Worker Mongo DB Kestrel 26 12೥9݄15೔౔༵೔

Slide 31

Slide 31 text

Task Queueing Queue Client Task Worker Mongo DB (1)Get Task Kestrel 26 12೥9݄15೔౔༵೔

Slide 32

Slide 32 text

Task Queueing Queue Client Task Worker Mongo DB (1)Get Task (2)pop Kestrel 26 12೥9݄15೔౔༵೔

Slide 33

Slide 33 text

Task Queueing Queue Client Task Worker Mongo DB (1)Get Task (2)pop Kestrel (3)Task ID 26 12೥9݄15೔౔༵೔

Slide 34

Slide 34 text

Task Queueing Queue Client Task Worker Mongo DB (1)Get Task (2)pop Kestrel (4) Task ID (3)Task ID 26 12೥9݄15೔౔༵೔

Slide 35

Slide 35 text

Task Queueing Queue Client Task Worker Mongo DB (1)Get Task (2)pop Kestrel (4) Task ID (3)Task ID (5)Task 26 12೥9݄15೔౔༵೔

Slide 36

Slide 36 text

Task Queueing Queue Client Task Worker Mongo DB (1)Get Task (2)pop Kestrel (4) Task ID (6)Task (3)Task ID (5)Task 26 12೥9݄15೔౔༵೔

Slide 37

Slide 37 text

VPS ৽ن࡞੒ (1)ऩ༰͢ΔϗετΛબ୒͢Δ (2)ήετʹඞཁͳ৘ใΛੜ੒͢Δ (1)Mac Address (2)IP Address 27 12೥9݄15೔౔༵೔

Slide 38

Slide 38 text

VPS ৽ن࡞੒ (3)ετϨʔδΛ࡞੒͢Δ (4)VPS ఆٛXML Λੜ੒͢Δ (5)libvirt ʹ౉ͯ͠QEMU ʹఆٛͤ͞Δ (6)OS ΠϯετʔϧσΟεΫΛೖΕͯ ىಈ͢Δ 28 12೥9݄15೔౔༵೔

Slide 39

Slide 39 text

VPS ిݯૢ࡞ (1)ిݯΛೖΕΔ (2)ిݯΛ੾Δ (3)࠶ىಈ͢Δ 29 12೥9݄15೔౔༵೔

Slide 40

Slide 40 text

VNC ίϯιʔϧ 30 12೥9݄15೔౔༵೔

Slide 41

Slide 41 text

VNC ίϯιʔϧ QEMU ʹ͸ඪ४ͰVNC αʔόʔ͕಺ ଁ͞Ε͍ͯΔ noVNC https://github.com/kanaka/ VNC ΫϥΠΞϯτ େ෯ʹखΛೖΕͨ 31 12೥9݄15೔౔༵೔

Slide 42

Slide 42 text

VNC ίϯιʔϧ gevent-websocket Gunicorn ͕αϙʔτ͞Ε͍ͯΔ Nginx nginx_tcp_proxy_module 32 12೥9݄15೔౔༵೔

Slide 43

Slide 43 text

OS ࠶Πϯετʔϧ (1)if OS มߋΛ൐͏৔߹: (1)ݱࡏͷετϨʔδΛ࡟আ (2)৽͘͠ετϨʔδΛ࡞੒ (2)Ծ૝Ϛγϯ࠶ىಈ (3)OS ΠϝʔδΛ౤ೖ͢Δ 33 12೥9݄15೔౔༵೔

Slide 44

Slide 44 text

ࠓޙ࣮૷͍ͨ͠΋ͷ γϦΞϧίϯιʔϧ VNC ॏ͍…… OS Πϯετʔϧ࣌͸࢓ํͳ͍͕ଞ ͷૢ࡞͸γϦΞϧίϯιʔϧͰ΍ Γ͍ͨ 34 12೥9݄15೔౔༵೔

Slide 45

Slide 45 text

ࠓޙ࣮૷͍ͨ͠΋ͷ ϦιʔεϞχλ CPU ͱϝϞϦͷ࢖༻཰ʹ͍ͭͯί ϯύωʹάϥϑද͍ࣔͨ͠ ϝʔϧͰ௨஌ͨ͠ΓɺΞϥʔτ௨ ஌ͨ͠Γ͍ͨ͠ 35 12೥9݄15೔౔༵೔

Slide 46

Slide 46 text

ࠓޙ࣮૷͍ͨ͠΋ͷ εφοϓγϣοτ ೚ҙͷλΠϛϯά + ఆظͰεφο ϓγϣοτΛͱΓ͍ͨ Ծ૝Ϛγϯ͋ͨΓ3ͭ͘Β͍εφ οϓγϣοτͱ͓͖͍ͬͯͨ 36 12೥9݄15೔౔༵೔

Slide 47

Slide 47 text

αςετ 2໊, 4୆ λεΫΩϡʔΠϯάະಋೖ 1ͭͷαʔόʔϓϩηεͰHTTP ͱ WebSocket 37 12೥9݄15೔౔༵೔

Slide 48

Slide 48 text

βςετ 4໊, 8୆ λεΫΩϡʔΠϯάಋೖ HTTP ͱWebSocket ͷαʔόʔϓϩ ηε෼཭ ػೳ௥Ճ 38 12೥9݄15೔౔༵೔

Slide 49

Slide 49 text

ςελʔ αςελʔ @Alice1017 ͞Μ, @LGA128 ͞Μ βςελʔ @YDKKK ͞Μ, @Tiryoh_kun ͞Μ ͋Γ͕ͱ͏͍͟͝·ͨ͠ 39 12೥9݄15೔౔༵೔

Slide 50

Slide 50 text

σϞ - ࣮ԋ - yosida95@pyconjp[~]$ yosida95vps start 40 12೥9݄15೔౔༵೔

Slide 51

Slide 51 text

Thank You for Listening ! 41 12೥9݄15೔౔༵೔