Slide 1

Slide 1 text

!UBLVNBLVNF(.01FQBCP *OD +VMZ5FDI'FTUB ສυϝΠϯΛ௒͑ΔϨϯλϧαʔόͷ ίϯςϯπΩϟογϡػೳͷཪଆ

Slide 2

Slide 2 text

(.0ϖύϘϗεςΟϯάࣄۀ෦ ΠϯϑϥΤϯδχΞ ٱถ୓അ!UBLVNBLVNF

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

ֹ݄ԁ͔Βར༻Ͱ͖Δʂ

Slide 5

Slide 5 text

ֹ݄ԁ͔Βར༻Ͱ͖Δʂ ඵؒ໿ສઍϦΫΤετΛॲཧʂ

Slide 6

Slide 6 text

ֹ݄ԁ͔Βར༻Ͱ͖Δʂ ສαΠτҎ্ӡ༻தʂ ඵؒ໿ສઍϦΫΤετΛॲཧʂ

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

ίϯςϯπΩϟογϡػೳ 3FWFSTF1SPYZ 84FSWFS ௨ৗ

Slide 9

Slide 9 text

ίϯςϯπΩϟογϡػೳ 3FWFSTF1SPYZ 84FSWFS 3FWFSTF1SPYZ $BDIF4FSWFS 84FSWFS Ωϟογϡ ίϯςϯπΩϟογϡ͋Γ

Slide 10

Slide 10 text

ίϯςϯπΩϟογϡػೳ 3FWFSTF1SPYZ $BDIF4FSWFS 84FSWFS Ωϟογϡ ίϯςϯπΩϟογϡ͋Γ 84FSWFSͷલஈͰΩϟογϡͯ͠ ߴ଎ʹԠ౴͢Δɻ

Slide 11

Slide 11 text

ίϯςϯπΩϟογϡػೳ 3FWFSTF1SPYZ $BDIF4FSWFS 84FSWFS Ωϟογϡ ίϯςϯπΩϟογϡ͋Γ OHJOY IUUQE ύϑΥʔϚϯεͷߴ͍OHJOYͰϦΫΤετ Λॲཧ͢Δɻ 84FSWFSͷલஈͰΩϟογϡͯ͠ ߴ଎ʹԠ౴͢Δɻ

Slide 12

Slide 12 text

ίϯςϯπΩϟογϡػೳ 3FWFSTF1SPYZ $BDIF4FSWFS 84FSWFS Ωϟογϡ ίϯςϯπΩϟογϡ͋Γ OHJOY IUUQE ύϑΥʔϚϯεͷߴ͍OHJOYͰϦΫΤετ Λॲཧ͢Δɻ 1)1౳ͷॲཧͰߴෛՙʹͳΓ΍͍͢ 8αʔόͷෛՙ௿ݮ 84FSWFSͷલஈͰΩϟογϡͯ͠ ߴ଎ʹԠ౴͢Δɻ

Slide 13

Slide 13 text

ฒྻສϦΫΤετ #FODI.BSLFS "QBDIF#FODI 3FWFSTF1SPYZ 84FSWFS 3FWFSTF1SPYZ $BDIF4FSWFS 84FSWFS Ωϟογϡ 8PSE1SFTTαΠτ 8PSE1SFTTαΠτ

Slide 14

Slide 14 text

3FWFSTF1SPYZ 84FSWFS 3FWFSTF1SPYZ $BDIF4FSWFS 84FSWFS Ωϟογϡ 8PSE1SFTTαΠτ 8PSE1SFTTαΠτ ύϑΥʔϚϯεഒʂ

Slide 15

Slide 15 text

3FWFSTF1SPYZ 84FSWFS 3FWFSTF1SPYZ $BDIF4FSWFS 84FSWFS Ωϟογϡ 8PSE1SFTTαΠτ 8PSE1SFTTαΠτ ύϑΥʔϚϯεഒʂ ແྉఏڙ

Slide 16

Slide 16 text

ͳͥ࡞ͬͨͷ͔ʁ

Slide 17

Slide 17 text

ࠃ಺࠷଎ Ϩϯαό ࠷଎

Slide 18

Slide 18 text

ੈͷதʹ͸ଟ͘ͷ $%/ࣄۀऀ͕ଘࡏ͢Δ ίϯςϯπΩϟογϡͱ͍͑͹$%/

Slide 19

Slide 19 text

ϩϦϙοϓʂͰ֎෦$%/αʔϏε࢖͏ *OUFSOFU 3FWFSTF1SPYZ $BDIF4FSWFS 84FSWFS $%/ࣄۀऀ%$ ΞΫηε ϩϦϙοϓʂ

Slide 20

Slide 20 text

*OUFSOFU 3FWFSTF1SPYZ $BDIF4FSWFS 84FSWFS $%/ࣄۀऀ%$ ΞΫηε ΦϦδϯͷαʔόʹΞΫηε Ωϟογϡର৅֎ͷίϯςϯπ Ωϟογϡظݶ੾Ε ϩϦϙοϓʂ ϩϦϙοϓʂͰ֎෦$%/αʔϏε࢖͏

Slide 21

Slide 21 text

*OUFSOFU 3FWFSTF1SPYZ $BDIF4FSWFS 84FSWFS $%/ࣄۀऀ%$ ΞΫηε ϩϦϙοϓʂ ΠϯλʔωοτΛߦ͖དྷ͢Δඞཁ͕͋Δ ϩϦϙοϓʂͰ֎෦$%/αʔϏε࢖͏

Slide 22

Slide 22 text

ίϯςϯπΩϟογϡػೳͷ৔߹ *OUFSOFU 3FWFSTF1SPYZ $BDIF4FSWFS 84FSWFS ΞΫηε ϩϦϙοϓʂ

Slide 23

Slide 23 text

ίϯςϯπΩϟογϡػೳͷ৔߹ *OUFSOFU 3FWFSTF1SPYZ $BDIF4FSWFS 84FSWFS ΞΫηε ໢಺ߴ଎ ϩϦϙοϓʂ

Slide 24

Slide 24 text

$%/͸োน͕ߴ͍

Slide 25

Slide 25 text

$%/͸োน͕ߴ͍ υϝΠϯΛ$%/ʹ޲͚ΔͨΊͷ%/4ͷઃఆ ͦ΋ͦ΋%/4ͱ͸ʁ $%/͸ػೳ͕ଟ͘ઃఆ͕ෳࡶ ඇΤϯδχΞͷํʹͱͬͯ͸೉͍͠ αʔϏεʹΑͬͯ͸ར༻ྉ͕ۚൃੜ͢Δ ϩϦϙοϓʂ͸ΤϯδχΞҎ֎ͷํʑ͔Β΋ ଟ͘͝ར༻௖͍͍ͯΔ

Slide 26

Slide 26 text

ίϯςϯπΩϟογϡػೳ͸ʁ

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Άͪͬ

Slide 29

Slide 29 text

Άͪͬ ଟػೳΑΓ؆୯Λ༏ઌ

Slide 30

Slide 30 text

͜͜·Ͱͷ͓͞Β͍ ίϯςϯπΩϟογϡػೳΛϦϦʔε ࠃ಺࠷଎ϨϯαόΛ໨ࢦ͢ʂ ֎෦$%/Λซ༻͢ΔΑΓɺ໢಺ંฦ͠ ͷ௨৴Ͱ׬݁͢Δɻ ୭Ͱ΋؆୯ʹઃఆͰ͖Δʂ $%/͕೉͍͠ͱײ͡Δ͓٬༷Ͱ΋؆୯ ʹઃఆ͕Մೳɻ

Slide 31

Slide 31 text

͜͜·Ͱ໘ന͘ͳ͍Ͷʁ

Slide 32

Slide 32 text

ຊ೔͸ େن໛ϗεςΟϯάͳΒͰ͸ͷ ίϯςϯπΩϟογϡػೳΛ ࢧ͑ΔΠϯϑϥٕज़ʹ͍ͭͯ ͓࿩͠·͢ʂ

Slide 33

Slide 33 text

ઃܭ લఏ ࣮૷ ·ͱΊ ຊ೔ͷྲྀΕ ίϯςϯπΩϟογϡͷ֓ཁɾ։ൃܦҢ ࠓίί ίϯςϯπΩϟογϡͷػೳͱΠϯϑϥʹٻΊͨ͜ͱ

Slide 34

Slide 34 text

ઃܭ લఏ ࣮૷ ·ͱΊ ίϯςϯπΩϟογϡͷػೳͱ ΠϯϑϥʹٻΊͨ͜ͱ

Slide 35

Slide 35 text

ΩϟογϡϞʔυ

Slide 36

Slide 36 text

ΩϟογϡϞʔυ 81Ωϟογϡػೳ ੩తΩϟογϡػೳ

Slide 37

Slide 37 text

81Ωϟογϡػೳ 8PSE1SFTT༻ʹ࠷దԽͨ͠Ωϟογϡػೳ ϩϦϙοϓʂͷ͓٬༷ͷଟ͘͸8PSE1SFTTΛ ར༻͍ͯ͠Δ ੩తΩϟογϡػೳ ը૾΍+4 $44ͳͲͷ੩తίϯςϯπΛର৅ʹ ͨ͠Ωϟογϡػೳ 8PSE1SFTTҎ֎Λར༻͍ͯ͠Δํ޲͚ ҆ఆͨ͠αΠτදࣔʹد༩ ΩϟογϡϞʔυ

Slide 38

Slide 38 text

͢΂ͯͷίϯςϯπΛΩϟογϡͨ͠৔߹ɿ 8PSE1SFTTͷϩάΠϯޙͷ؅ཧը໘͕Ωϟο γϡ͞Εͨ৔߹ʹҙਤ͠ͳ͍৘ใ͕࿙ΕΔ ಠࣗձһ੍8ΞϓϦέʔγϣϯͰɺผͷ ձһͷϖʔδ͕ݟ͑ͯ͠·͏ ϚωʔδυͳΩϟογϡػೳΛఏڙ ΩϟογϡϞʔυ ͳͥΩϟογϡϞʔυΛ෼͚Δඞཁ͕͋Δʁ

Slide 39

Slide 39 text

υϝΠϯͷઃఆʹԠͨ͡ ػೳͷϋϯυϦϯά

Slide 40

Slide 40 text

طଘͷߏ੒ 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ

Slide 41

Slide 41 text

طଘͷߏ੒ 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ ໿ສαΠτ

Slide 42

Slide 42 text

υϝΠϯͷઃఆʹԠͯ͡ϓϩΩγઌΛมߋ͍ͨ͠ 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ $BDIF4FSWFS PS ίϯςϯπΩϟογϡػೳ͸ 0/ʁ0''ʁ

Slide 43

Slide 43 text

3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ $BDIF4FSWFS PS ΩϟογϡͷϞʔυ͸ 81Ωϟογϡʁ ੩తΩϟογϡʁ υϝΠϯͷઃఆʹԠͯ͡ৼΔ෣͍Λ੍ޚ͍ͨ͠

Slide 44

Slide 44 text

εέʔϥϏϦςΟ

Slide 45

Slide 45 text

εέʔϥϏϦςΟ αʔόΛ௥Ճ͚ͨͩ͠Ͱউखʹػೳ͕εέʔϧ ͢ΔΠϯϑϥΞʔΩςΫνϟʹ͍ͨ͠ $BDIF4FSWFS $BDIF4FSWFS $BDIF4FSWFS 3FWFSTF1SPYZ

Slide 46

Slide 46 text

ߴՄ༻ੑ

Slide 47

Slide 47 text

ߴՄ༻ੑ αʔό͸յΕΔ յΕͯ΋શࣗಈͰαʔϏεͷঢ়ଶ͕෮چ͢Δ ΠϯϑϥΞʔΩςΫνϟʹ͍ͨ͠ $BDIF4FSWFS $BDIF4FSWFS $BDIF4FSWFS 3FWFSTF1SPYZ

Slide 48

Slide 48 text

ޮ཰తͳΩϟογϡ

Slide 49

Slide 49 text

ޮ཰తͳΩϟογϡ ୯७ʹ$BDIF4FSWFSΛฒ΂ͯ෼ࢄ͢Δͱ 3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS 84FSWFS Ωϟογϡώοτ཰௿Լ σΟεΫྖҬͷফඅ FYBNQMFDPN FYBNQMFDPN

Slide 50

Slide 50 text

ޮ཰తͳΩϟογϡ υϝΠϯຖʹॲཧ͢Δ$BDIF4FSWFSΛݶఆ͍ͨ͠ 3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS 84FSWFS Ωϟογϡώοτ཰޲্ σΟεΫྖҬͷઅ໿ FYBNQMFDPN FYBNQMFDPN

Slide 51

Slide 51 text

͜͜·Ͱͷ͓͞Β͍ ΩϟογϡϞʔυ 81 ੩తΩϟογϡ υϝΠϯͷઃఆʹԠͨ͡ػೳͷϋϯυϦϯά εέʔϥϏϦςΟ ߴՄ༻ੑ ޮ཰తͳΩϟογϡ ίϯςϯπΩϟογϡͷػೳͱ ɹɹɹɹɹɹɹɹΠϯϑϥʹٻΊͨ͜ͱ

Slide 52

Slide 52 text

͜ΕΒΛಉ࣌ʹຬͨ͢ ج൫Λ࣮૷͢Δඞཁ͕͋Δ

Slide 53

Slide 53 text

࣮૷ લఏ ઃܭ ·ͱΊ ίϯςϯπΩϟογϡػೳͷ࣮૷

Slide 54

Slide 54 text

͜͜Ͱ#FFS څਫ

Slide 55

Slide 55 text

ΩϟογϡϞʔυͷ࣮૷

Slide 56

Slide 56 text

ΩϟογϡϞʔυͷ࣮૷ http { : proxy_cache_path /var/cache/nginx/cache levels=1:2 \ keys_zone=zone1:1024m inactive=10m; proxy_cache_valid 200 10m; proxy_cache_valid 404 1m; server { : proxy_cache zone1; proxy_cache_key $proxy_scheme://$host$ $is_args$args; proxy_pass $proxy_scheme://${Origin Server}; } } OHJOYඪ४ͷOHY@IUUQ@QSPYZ@NPEVMFΛར༻

Slide 57

Slide 57 text

http { : proxy_cache_path /var/cache/nginx/cache levels=1:2 \ keys_zone=zone1:1024m inactive=10m; proxy_cache_valid 200 10m; proxy_cache_valid 404 1m; server { : proxy_cache zone1; proxy_cache_key $proxy_scheme://$host$request_uri$is_args$args; proxy_pass $proxy_scheme://${Origin Server}; } } OHJOYඪ४ͷOHY@IUUQ@QSPYZ@NPEVMFΛར༻ DBDIFͷอଘઌ΍αΠζɺ༗ޮظؒ ΩϟογϡϞʔυͷ࣮૷

Slide 58

Slide 58 text

http { : proxy_cache_path /var/cache/nginx/cache levels=1:2 \ keys_zone=zone1:1024m inactive=10m; proxy_cache_valid 200 10m; proxy_cache_valid 404 1m; server { : proxy_cache zone1; proxy_cache_key $proxy_scheme://$host$request_uri$is_args$args; proxy_pass $proxy_scheme://${Origin Server}; } } OHJOYඪ४ͷOHY@IUUQ@QSPYZ@NPEVMFΛར༻ εςʔλείʔυʹ ΑͬͯอଘظؒΛม͑Δ ΩϟογϡϞʔυͷ࣮૷

Slide 59

Slide 59 text

http { : proxy_cache_path /var/cache/nginx/cache levels=1:2 \ keys_zone=zone1:1024m inactive=10m; proxy_cache_valid 200 10m; proxy_cache_valid 404 1m; server { : proxy_cache zone1; proxy_cache_key $proxy_scheme://$host$request_uri$is_args$args; proxy_pass $proxy_scheme://${Origin Server}; } } OHJOYඪ४ͷOHY@IUUQ@QSPYZ@NPEVMFΛར༻ [POFΛ࢖ͬͯΩϟογϡ͢Δ ΩϟογϡϞʔυͷ࣮૷

Slide 60

Slide 60 text

http { : proxy_cache_path /var/cache/nginx/cache levels=1:2 \ keys_zone=zone1:1024m inactive=10m; proxy_cache_valid 200 10m; proxy_cache_valid 404 1m; server { : proxy_cache zone1; proxy_cache_key $proxy_scheme://$host$request_uri$is_args$args; proxy_pass $proxy_scheme://${Origin Server}; } } OHJOYඪ४ͷOHY@IUUQ@QSPYZ@NPEVMFΛར༻ Ωϟογϡͷอଘɾ୳ࡧͷΩʔ ΩϟογϡϞʔυͷ࣮૷

Slide 61

Slide 61 text

ΩϟογϡϞʔυͷ࣮૷ http { : proxy_cache_path /var/cache/nginx/cache levels=1:2 \ keys_zone=zone1:1024m inactive=10m; proxy_cache_valid 200 10m; proxy_cache_valid 404 1m; server { : proxy_cache zone1; proxy_cache_key $proxy_scheme://$host$request_uri$is_args$args; proxy_pass $proxy_scheme://${Origin Server}; } } OHJOYඪ४ͷOHY@IUUQ@QSPYZ@NPEVMFΛར༻ Ωϟογϡ͕ͳ͍৔߹ɾ༗ޮظݶ੾Εͷ৔߹ʹ ΞΫηε͢ΔΦϦδϯαʔό

Slide 62

Slide 62 text

ΩϟογϡϞʔυͷ࣮૷ http { : server { : location /login { proxy_no_cache 1; proxy_cache_bypass 1; } } } OHJOYඪ४ͷOHY@IUUQ@QSPYZ@NPEVMFΛར༻ Ωϟογϡ͠ͳ͍ ΩϟογϡΛ୳ࡧ͠ͳ͍

Slide 63

Slide 63 text

Ωϟογϡػೳ : location / { : set $do_not_cache 0; if ($http_cookie ~ '(wordpress_|comment_author|wp-postpass)') { set $do_not_cache 1; } proxy_no_cache $do_not_cache; proxy_cache_bypass $do_not_cache; proxy_cache zone1; proxy_cache_key "$proxy_scheme://$host$request_uri$is_args$args"; proxy_pass $proxy_scheme://${Origin Server}; } DPPLJFʹಛఆͷจࣈྻ͕ ͋Δ࣌͸Ωϟογϡ͠ͳ͍ 81Ωϟογϡػೳͷྫ Ұ෦ ɿ

Slide 64

Slide 64 text

஌ͬͯΔ͠ ͋Μ·໘ന͘ͳ͍Ͱ͢ΑͶʂ

Slide 65

Slide 65 text

Ҏ߱ͰɺϨϯαόʹ͓͚Δ ՝୊Λόʔϯͱղܾ͢Δ ιϑτ΢ΣΞͷ࿩Λ ͍͖ͯ͠·͢

Slide 66

Slide 66 text

υϝΠϯʹԠͨ͡ ػೳͷϋϯυϦϯάͷ࣮૷

Slide 67

Slide 67 text

΍Γ͍ͨ͜ͱ 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ $BDIF4FSWFS PS ίϯςϯπΩϟογϡػೳ͸ 0/ʁ0''ʁ ΩϟογϡͷϞʔυ͸ 81Ωϟογϡʁ ੩తΩϟογϡʁ

Slide 68

Slide 68 text

ͲͷΑ͏ʹ࣮૷͢Δ͔ʁ

Slide 69

Slide 69 text

طଘͷߏ੒Λ΋͏গ͠ৄ͘͠ 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ

Slide 70

Slide 70 text

3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ ਺ඦ୆ طଘͷߏ੒Λ΋͏গ͠ৄ͘͠

Slide 71

Slide 71 text

3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ ໿ສαΠτ طଘͷߏ੒Λ΋͏গ͠ৄ͘͠

Slide 72

Slide 72 text

3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ සൟʹ૿ݮ͢Δ طଘͷߏ੒Λ΋͏গ͠ৄ͘͠

Slide 73

Slide 73 text

Ϩϯλϧαʔόͷ৔߹ 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS 4JUF" 4JUF# 4JUF$ 4JUF% େྔͷ૿ݮ͢ΔυϝΠϯΛ ͲͷΑ͏ʹϓϩΩγ͍ͯ͠Δ͔ʁ

Slide 74

Slide 74 text

େྔυϝΠϯͷϓϩΩγ 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ ສαΠτҎ্ͷ ϓϩΩγͷઃఆΛ ॻ͘ͷ͸ݱ࣮తͰ͸ͳ͍

Slide 75

Slide 75 text

େྔυϝΠϯͷಈతͳϓϩΩγ 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ OHJOY OHY@NSVCZ

Slide 76

Slide 76 text

ฐࣾͷ!NBUTVNPUPSZ͕։ൃ͍ͯ͠Δ OHJOYʹ૊ΈࠐΉ͜ͱͰϓϩηεͷىಈ΍ ϦΫΤετͷλΠϛϯάͰNSVCZͷεΫϦ ϓτΛ࣮ߦͰ͖Δ NSVCZ૊ΈࠐΈ޲͚ͷܰྔ3VCZ࣮૷ OHY@NSVCZ

Slide 77

Slide 77 text

େྔυϝΠϯͷಈతͳϓϩΩγ 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ OHJOY OHY@NSVCZ

Slide 78

Slide 78 text

େྔυϝΠϯͷಈతͳϓϩΩγ 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ υϝΠϯͱ84FSWFSͷඥ͚ͮ σʔλϕʔε υϝΠϯTJUFBDPN αʔό84FSWFS OHJOY OHY@NSVCZ

Slide 79

Slide 79 text

େྔυϝΠϯͷಈతͳϓϩΩγ 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ υϝΠϯͱ84FSWFSͷඥ͚ͮ σʔλϕʔε υϝΠϯTJUFBDPN αʔό84FSWFS OHJOY OHY@NSVCZ NSVCZΛ࢖ͬͯ ίϯςϯπΩϟογϡػೳͷ ϋϯυϦϯάΛߦ͏ʂ

Slide 80

Slide 80 text

ػೳͷϋϯυϦϯά 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ $BDIF4FSWFS PS ίϯςϯπΩϟογϡػೳ͸ 0/ʁ0''ʁ ΩϟογϡͷϞʔυ͸ 81Ωϟογϡʁ ੩తΩϟογϡʁ ίϯςϯπΩϟογϡػೳ͸ 0/ʁ0''ʁ ΩϟογϡͷϞʔυ͸ 81Ωϟογϡʁ ੩తΩϟογϡʁ 3FWFSTF1SPYZ 84FSWFS $BDIF4FSWFS

Slide 81

Slide 81 text

ػೳͷϋϯυϦϯά 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ $BDIF4FSWFS σʔλϕʔε υϝΠϯTJUFBDPN αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81

Slide 82

Slide 82 text

ػೳͷϋϯυϦϯά 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ $BDIF4FSWFS σʔλϕʔε υϝΠϯTJUFBDPN αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81 ΩϟογϡͷϞʔυ͸ 81Ωϟογϡʁ ੩తΩϟογϡʁ ΩϟογϡͷϞʔυ͸ 81Ωϟογϡʁ ੩తΩϟογϡʁ

Slide 83

Slide 83 text

ػೳͷϋϯυϦϯά 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ $BDIF4FSWFS σʔλϕʔε ΩϟογϡͷϞʔυ 81PS੩త ʹΑͬͯڍಈΛม͍ͨ Ωϟογϡର৅֎΍ ظݶ੾Εͷ৔߹ʹ ΞΫηε͢Δ ΦϦδϯαʔόͷ৘ใ υϝΠϯTJUFBDPN αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81

Slide 84

Slide 84 text

ػೳͷϋϯυϦϯά 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ $BDIF4FSWFS σʔλϕʔε OHY@NSVCZ υϝΠϯTJUFBDPN αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81

Slide 85

Slide 85 text

ػೳͷϋϯυϦϯά 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ $BDIF4FSWFS σʔλϕʔε υϝΠϯTJUFBDPN αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81 OHY@NSVCZ OHY@NSVCZΛ࢖͑͹ ΋ͬͱεϚʔτʹͰ͖Δ

Slide 86

Slide 86 text

ػೳͷϋϯυϦϯά 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ $BDIF4FSWFS σʔλϕʔε OHY@NSVCZ υϝΠϯTJUFBDPN αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81 3FWFSTF1SPYZ σʔλϕʔε υϝΠϯTJUFBDPN αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81 %#͔Βऔಘͨ͠σʔλΛ

Slide 87

Slide 87 text

ػೳͷϋϯυϦϯά 3FWFSTF1SPYZ 84FSWFS *OUFSOFU 84FSWFS IUUQTTJUFBDPN 4JUF" 4JUF# 4JUF$ 4JUF% ͓٬༷ͷίϯςϯπ $BDIF4FSWFS σʔλϕʔε OHY@NSVCZ υϝΠϯTJUFBDPN αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81 σʔλϕʔε υϝΠϯTJUFBDPN αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81 3FWFSTF1SPYZ $BDIF4FSWFS %#͔Βऔಘͨ͠σʔλΛ NSVCZͰ IUUQϔομʹ ෇༩ͯ͠఻ൖ )551ϔομ

Slide 88

Slide 88 text

ػೳͷϋϯυϦϯά 3FWFSTF1SPYZ OHJOYOHY@NSVCZ 84FSWFS 84FSWFS 4JUF" 4JUF# 4JUF$ 4JUF% $BDIF4FSWFS IUUQTTJUFBDPN σʔλϕʔε αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81

Slide 89

Slide 89 text

ػೳͷϋϯυϦϯά 3FWFSTF1SPYZ OHJOYOHY@NSVCZ 84FSWFS 84FSWFS 4JUF" 4JUF# 4JUF$ 4JUF% $BDIF4FSWFS IUUQTTJUFBDPN σʔλϕʔε IUUQϔομΛ௥Ճ αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81 9-0-*10161453&".8FC4FSWFS 9-0-*101$"$)&5:1&81 h = Nginx::Headers_in.new h['X-LOLIPOP-UPSTREAM'] = 'Web Server1' h['X-LOLIPOP-CACHE-TYPE'] = 'WP' ࣮ࡍ͸%#͔Βऔಘͨ͠஋

Slide 90

Slide 90 text

ػೳͷϋϯυϦϯά 3FWFSTF1SPYZ OHJOYOHY@NSVCZ 84FSWFS 84FSWFS 4JUF" 4JUF# 4JUF$ 4JUF% $BDIF4FSWFS IUUQTTJUFBDPN σʔλϕʔε αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81 9-0-*10161453&".8FC4FSWFS 9-0-*101$"$)&5:1&81 if ($http_x_lolipop_cache_type = "WP") { # WPΩϟογϡػೳͷڍಈ : } IUUQϔομΛ௥Ճ IUUQϔομΛ΋ͱʹ ΩϟογϡػೳͷڍಈΛมߋ

Slide 91

Slide 91 text

ػೳͷϋϯυϦϯά 3FWFSTF1SPYZ OHJOYOHY@NSVCZ 84FSWFS 84FSWFS 4JUF" 4JUF# 4JUF$ 4JUF% $BDIF4FSWFS IUUQTTJUFBDPN σʔλϕʔε IUUQϔομΛ΋ͱʹϓϩΩγ αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81 9-0-*10161453&".8FC4FSWFS 9-0-*101$"$)&5:1&81 IUUQϔομΛ΋ͱʹ ΩϟογϡػೳͷڍಈΛมߋ proxy_pass $proxy_scheme://$http_x_lolipop_upstream; IUUQϔομΛ௥Ճ

Slide 92

Slide 92 text

ػೳͷϋϯυϦϯά 3FWFSTF1SPYZ OHJOYOHY@NSVCZ 84FSWFS 84FSWFS 4JUF" 4JUF# 4JUF$ 4JUF% $BDIF4FSWFS IUUQTTJUFBDPN σʔλϕʔε IUUQϦΫΤετϔομΛ௥Ճ IUUQϦΫΤετϔομΛ΋ͱʹϓϩΩγ αʔό84FSWFS ΩϟογϡPO ΩϟογϡλΠϓ81 9-0-*10161453&".8FC4FSWFS 9-0-*101$"$)&5:1&81 IUUQϦΫΤετϔομΛ΋ͱ ʹΩϟογϡػೳͷڍಈΛมߋ proxy_pass $proxy_scheme://$http_x_lolipop_upstream; NSVCZͰσʔλϕʔε͔Βऔಘͨ͠஋ΛIUUQ ϔομʹຒΊࠐΉ $BDIF4FSWFSଆ͸ຒΊࠐ·ΕͨIUUQϔομΛ ࢀর͚ͩͰυϝΠϯຖͷৼΔ෣͍ͷ੍ޚ͕Մೳ IUUQϔομʹΑΔ৘ใͷ఻೻ͳͷͰɺ$BDIF 4FSWFS͸௨ৗͷOHJOYͰΑ͍ͷͰγϯϓϧ

Slide 93

Slide 93 text

3FWFSTF1SPYZ OHJOYOHY@NSVCZ σʔλϕʔε ϦΫΤετ ύϑΥʔϚϯεେৎ෉ʁ

Slide 94

Slide 94 text

ύϑΥʔϚϯεྼԽΛ࠷খݶʹ ཈͑ΔςΫχοΫΛ͝঺հ͠·͢ʂ

Slide 95

Slide 95 text

Ωϟογϡͷಋೖ

Slide 96

Slide 96 text

Ωϟογϡͷಋೖ 3FWFSTF1SPYZ .Z42- ϦΫΤετ 3FEJT OHJOYOHY@NSVCZ

Slide 97

Slide 97 text

Ωϟογϡͷಋೖ 3FWFSTF1SPYZ .Z42- ϦΫΤετ 3FEJT OHJOYOHY@NSVCZ ᶃ ᶃ3FEJT͔Β৘ใΛऔಘ

Slide 98

Slide 98 text

Ωϟογϡͷಋೖ 3FWFSTF1SPYZ .Z42- ϦΫΤετ 3FEJT OHJOYOHY@NSVCZ ᶃ ᶄ ᶃ3FEJT͔Β৘ใΛऔಘ ᶄᶃͰଘࡏ͠ͳ͚Ε͹.Z42-͔Β৘ใΛऔಘ

Slide 99

Slide 99 text

Ωϟογϡͷಋೖ 3FWFSTF1SPYZ .Z42- ϦΫΤετ 3FEJT OHJOYOHY@NSVCZ ᶃ ᶅ ᶄ ᶃ3FEJT͔Β৘ใΛऔಘ ᶄᶃͰଘࡏ͠ͳ͚Ε͹.Z42-͔Β৘ใΛऔಘ ᶅᶄͰऔಘͨ͠৘ใΛ࣍ճϦΫΤετͷͨΊʹ 3FEJTʹॻ͖ࠐΈ

Slide 100

Slide 100 text

ϖύϘͰ͸ɺσʔλετΞΛ ֊૚Խͯ͠Λ͍͍ײ͡ʹ͢Δ NSCHFNΛެ։͍ͯ͠·͢ ֦ுػߏ 3VCZͰ͍͏HFN

Slide 101

Slide 101 text

NSVCZNTE MPDBMNFNDBDIF ΠϯϝϞϦ,74 3FEJT .Z42- ॲཧίετ͕௿͍ॱʹGFUDI ࣍ճҎ߱ͷGFUDIͷͨΊʹΩϟογϡ .VMUJ4UBHF%BUBTUPSF https://github.com/pepabo/mruby-msd NTE͕͍͍ײ͡ʹߴ଎ͳσʔλετΞ͔ΒGFUDI͢Δ

Slide 102

Slide 102 text

NSVCZNTE redis = Msd::Store::Redis.new mysql = Msd::Store::MySQL.new( 'SELECT host FROM table WHERE domain = ?', 'localhost', 'root', 'password', 'DBName' ) msd = Msd::Client.new msd.configure do |c| c.stores = [redis, mysql] end msd.fetch('site-a.com') # => "Web Server1"

Slide 103

Slide 103 text

NSVCZNTE redis = Msd::Store::Redis.new mysql = Msd::Store::MySQL.new( 'SELECT host FROM table WHERE domain = ?', 'localhost', 'root', 'password', 'DBName' ) msd = Msd::Client.new msd.configure do |c| c.stores = [redis, mysql] end msd.fetch('site-a.com') # => "Web Server1" ઀ଓ

Slide 104

Slide 104 text

NSVCZNTE redis = Msd::Store::Redis.new mysql = Msd::Store::MySQL.new( 'SELECT host FROM table WHERE domain = ?', 'localhost', 'root', 'password', 'DBName' ) msd = Msd::Client.new msd.configure do |c| c.stores = [redis, mysql] end msd.fetch('site-a.com') # => "Web Server1" ઀ଓ σʔλετΞΛొ࿥

Slide 105

Slide 105 text

NSVCZNTE redis = Msd::Store::Redis.new mysql = Msd::Store::MySQL.new( 'SELECT host FROM table WHERE domain = ?', 'localhost', 'root', 'password', 'DBName' ) msd = Msd::Client.new msd.configure do |c| c.stores = [redis, mysql] end msd.fetch('site-a.com') # => "Web Server1" ઀ଓ σʔλετΞΛొ࿥ σʔλΛΩϟογϡͭͭ͠GFUDI͢Δ

Slide 106

Slide 106 text

3FWFSTF1SPYZ OHJOYOHY@NSVCZ .Z42- 3FEJT ϦΫΤετ ϦΫΤετຖʹίωΫγϣϯΛ ுΔͷ͸ίετ͕ߴ͍ ίωΫγϣϯ

Slide 107

Slide 107 text

ίωΫγϣϯͷ࢖͍ճ͠

Slide 108

Slide 108 text

OHY@NSVCZʹ͸NSVCZͷϑοΫϙΠϯτ͕ଘࡏ͢Δ https://github.com/matsumotory/ngx_mruby/tree/master/docs/directives mruby_init_worker /path/to/init.rb; mruby_init_worker_code " # ίʔυ "; mruby_set $variable /path/to/variable.rb; mruby_access_handler /path/to/access.rb; mruby_access_handler /path/to/access.rb cache; nginx.conf # Workerϓϩηεىಈ࣌ # cacheΦϓγϣϯΛ͚ͭΔͱnginxىಈ࣌ʹmrubyΛόΠτίʔυ # _code ͷσΟϨΫςΟϒ͸ΠϯϥΠϯͰmrubyͷίʔυΛهड़Ͱ͖Δ # mrubyͷ࣮ߦ݁ՌΛnginxͷม਺ʹ֨ೲ͢Δ # ϦΫΤετ։࢝࣌ʹ࣮ߦ͞ΕΔ

Slide 109

Slide 109 text

OHY@NSVCZʹ͸NSVCZͷϑοΫϙΠϯτ͕ଘࡏ͢Δ https://github.com/matsumotory/ngx_mruby/tree/master/docs/directives mruby_init_worker /path/to/init.rb; mruby_init_worker_code " # ίʔυ "; mruby_set $variable /path/to/variable.rb; mruby_access_handler /path/to/access.rb; mruby_access_handler /path/to/access.rb cache; nginx.conf # Workerϓϩηεىಈ࣌ # cacheΦϓγϣϯΛ͚ͭΔͱnginxىಈ࣌ʹmrubyΛόΠτίʔυ # _code ͷσΟϨΫςΟϒ͸ΠϯϥΠϯͰmrubyͷίʔυΛهड़Ͱ͖Δ # mrubyͷ࣮ߦ݁ՌΛnginxͷม਺ʹ֨ೲ͢Δ # ϦΫΤετ։࢝࣌ʹ࣮ߦ͞ΕΔ

Slide 110

Slide 110 text

OHY@NSVCZʹ͸NSVCZͷϑοΫϙΠϯτ͕ଘࡏ͢Δ https://github.com/matsumotory/ngx_mruby/tree/master/docs/directives mruby_init_worker /path/to/init.rb; mruby_init_worker_code " # ίʔυ "; mruby_set $variable /path/to/variable.rb; mruby_access_handler /path/to/access.rb; mruby_access_handler /path/to/access.rb cache; nginx.conf # Workerϓϩηεىಈ࣌ # cacheΦϓγϣϯΛ͚ͭΔͱnginxىಈ࣌ʹmrubyΛόΠτίʔυ # _code ͷσΟϨΫςΟϒ͸ΠϯϥΠϯͰmrubyͷίʔυΛهड़Ͱ͖Δ # mrubyͷ࣮ߦ݁ՌΛnginxͷม਺ʹ֨ೲ͢Δ # ϦΫΤετ։࢝࣌ʹ࣮ߦ͞ΕΔ

Slide 111

Slide 111 text

OHY@NSVCZʹ͸NSVCZͷϑοΫϙΠϯτ͕ଘࡏ͢Δ https://github.com/matsumotory/ngx_mruby/tree/master/docs/directives mruby_init_worker /path/to/init.rb; mruby_init_worker_code " # ίʔυ "; mruby_set $variable /path/to/variable.rb; mruby_access_handler /path/to/access.rb; mruby_access_handler /path/to/access.rb cache; nginx.conf # Workerϓϩηεىಈ࣌ # cacheΦϓγϣϯΛ͚ͭΔͱnginxىಈ࣌ʹmrubyΛόΠτίʔυ # _code ͷσΟϨΫςΟϒ͸ΠϯϥΠϯͰmrubyͷίʔυΛهड़Ͱ͖Δ # mrubyͷ࣮ߦ݁ՌΛnginxͷม਺ʹ֨ೲ͢Δ # ϦΫΤετ։࢝࣌ʹ࣮ߦ͞ΕΔ

Slide 112

Slide 112 text

OHY@NSVCZʹ͸NSVCZͷϑοΫϙΠϯτ͕ଘࡏ͢Δ https://github.com/matsumotory/ngx_mruby/tree/master/docs/directives mruby_init_worker /path/to/init.rb; mruby_init_worker_code " # ίʔυ "; mruby_set $variable /path/to/variable.rb; mruby_access_handler /path/to/access.rb; mruby_access_handler /path/to/access.rb cache; nginx.conf # Workerϓϩηεىಈ࣌ # cacheΦϓγϣϯΛ͚ͭΔͱnginxىಈ࣌ʹmrubyΛόΠτίʔυ # _code ͷσΟϨΫςΟϒ͸ΠϯϥΠϯͰmrubyͷίʔυΛهड़Ͱ͖Δ # mrubyͷ࣮ߦ݁ՌΛnginxͷม਺ʹ֨ೲ͢Δ # ϦΫΤετ։࢝࣌ʹ࣮ߦ͞ΕΔ

Slide 113

Slide 113 text

ίωΫγϣϯΛ࢖͍ճ͢ https://github.com/matsumotory/ngx_mruby/tree/master/docs/directives mruby_init_worker /path/to/init.rb; mruby_init_worker_code " # ίʔυ "; mruby_set $variable /path/to/variable.rb; mruby_access_handler /path/to/access.rb; mruby_access_handler /path/to/access.rb cache; nginx.conf # Workerϓϩηεىಈ࣌ # cacheΦϓγϣϯΛ͚ͭΔͱnginxىಈ࣌ʹmrubyΛόΠτίʔυ # _code ͷσΟϨΫςΟϒ͸ΠϯϥΠϯͰmrubyͷίʔυΛهड़Ͱ͖Δ # mrubyͷ࣮ߦ݁ՌΛnginxͷม਺ʹ֨ೲ͢Δ # ϦΫΤετ։࢝࣌ʹ࣮ߦ͞ΕΔ mruby_init_worker /path/to/init.rb; # Workerϓϩηεىಈ࣌ # ϦΫΤετ։࢝࣌ʹ࣮ߦ͞ΕΔ mruby_access_handler /path/to/access.rb;

Slide 114

Slide 114 text

OHJOY 3FEJT 8PSLFSىಈ࣌ʹ3FEJTͱ઀ଓ͠ίωΫγϣϯΛอଘ͢Δ

Slide 115

Slide 115 text

OHJOY XPSLFS 3FEJT ίωΫγϣϯ 8PSLFSىಈ࣌ʹ3FEJTͱ઀ଓ͠ίωΫγϣϯΛอଘ͢Δ 8PSLFSϓϩηεͷ ىಈ

Slide 116

Slide 116 text

OHJOY XPSLFS 3FEJT mruby_init_worker_code " Userdata.new.redis = Redis.new('127.0.0.1', 6379) "; ίωΫγϣϯ 8PSLFSىಈ࣌ʹ3FEJTͱ઀ଓ͠ίωΫγϣϯΛอଘ͢Δ 8PSLFSϓϩηεͷ ىಈ NSVCZVTFSEBUBͱ͍͏NSCHFNΛ࢖ͬͯɺNSVCZεΫϦϓτ͔Β௚઀ࢀর Ͱ͖ͳ͍NSVCZͷάϩʔόϧม਺ʹ3FEJTͷίωΫγϣϯΛ֨ೲ ൺֱత҆શʹάϩʔόϧม਺ʹΦϒδΣΫτΛ֨ೲͰ͖Δ

Slide 117

Slide 117 text

OHJOY XPSLFS 3FEJT 8PSLFSىಈ࣌ʹ઀ଓͨ͠3FEJTͷίωΫγϣϯΛ࢖͏

Slide 118

Slide 118 text

OHJOY XPSLFS 3FEJT 8PSLFSىಈ࣌ʹ઀ଓͨ͠3FEJTͷίωΫγϣϯΛ࢖͏ ϦΫΤετ ΞΫηε mruby_access_handler_code " Userdata.new.redis.get('hoge') ";

Slide 119

Slide 119 text

OHJOY XPSLFS 3FEJT 8PSLFSىಈ࣌ʹ઀ଓͨ͠3FEJTͷίωΫγϣϯΛ࢖͏ ϦΫΤετ ΞΫηε mruby_access_handler_code " Userdata.new.redis.get('hoge') "; 8PSLFSىಈ࣌ʹ઀ଓͨ͠ίωΫγϣϯΛऔΓग़ͯ͠ɺར༻͢Δɻ NSVCZͷΠϯλϓϦλ͕8PSLFS಺Ͱ࢖͍ճ͞Ε͍ͯΔͨΊΞΫηε͕Մೳ ͦͷͨΊɺผͷ8PSLFS͔Β͸ผͷΠϯλϓϦλͳͷͰࢀরͰ͖ͳ͍

Slide 120

Slide 120 text

OHJOY XPSLFS 3FEJT 8PSLFSىಈ࣌ʹ઀ଓͨ͠3FEJTͷίωΫγϣϯΛ࢖͏ ϦΫΤετ ΞΫηε mruby_access_handler_code " Userdata.new.redis.get('hoge') "; ίωΫγϣϯΛுͬͨޙʹ3FEJT͕࠶ىಈ͞ΕΔͳͲɺ ίωΫγϣϯ͕੾அ͞ΕΔ͜ͱΛ૝ఆͯ͠࠶઀ଓॲཧͷ࣮૷͸ඞཁɻ NSVCZNTE͸࣮૷ࡁΈ

Slide 121

Slide 121 text

εέʔϥϏϦςΟ ߴՄ༻ੑ

Slide 122

Slide 122 text

εέʔϥϏϦςΟ ߴՄ༻ੑ ໘౗ͳखॱͳ͘؆୯ɺࣗಈʹ

Slide 123

Slide 123 text

3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS ϓϩΩγ͕ਖ਼ৗͳαʔόΛೝࣝͯ͠ ಈతʹϓϩΩγઌΛܾΊΔ

Slide 124

Slide 124 text

$POTVM OHY@NSVCZ CZ)BTIJ$PSQ

Slide 125

Slide 125 text

)BTIJ$PSQ͕։ൃ͍ͯ͠Διϑτ΢ΣΞ ػೳɿ αʔϏεσ ΟεΧόϦ ϔϧενΣοΫ ͳͲͳͲ DPOTVM

Slide 126

Slide 126 text

DPOTVMͷΠϕϯτʹൃՐͯ͠ɺ༧Ί༻ҙ͠ ͨςϯϓϨʔτΛ࢖ͬͯϑΝΠϧΛੜ੒Ͱ ͖Δɻ αʔόͷ૿ݮ ϔϧενΣοΫͷ݁Ռ DPOTVMUFNQMBUF

Slide 127

Slide 127 text

$POTVMΛ࢖͏ͱͲ͏ͳΔʁ

Slide 128

Slide 128 text

3FWFSTF1SPYZ DPOTVM DPOTVM DBDIFTFSWFS DPOTVM DBDIFTFSWFS $POTVMΛ࢖͏ͱͲ͏ͳΔʁ

Slide 129

Slide 129 text

3FWFSTF1SPYZ DPOTVM DPOTVM DBDIFTFSWFS DPOTVM DBDIFTFSWFS TFSWJDFDBDIFTFSWFS $POTVMͰTFSJWDFΛఆٛ ϔϧενΣοΫ TFSWJDFΛఆٛͯ͠ϔϧενΣοΫ͕Ͱ͖Δ { "service": { "name": "cache-server", "checks": [ { "script": "ϔϧενΣοΫίϚϯυ", } ] } }

Slide 130

Slide 130 text

3FWFSTF1SPYZ DPOTVM DPOTVM DBDIFTFSWFS DPOTVM DBDIFTFSWFS # curl -s http://localhost:8500/v1/health/service/ \ cache-server | jq '.[].Node.Node' "cache-server-1" "cache-server-2" TFSWJDFDBDIFTFSWFS ϔϧενΣοΫ DPOTVM"1*ʹΞΫηε͢ΔͱαʔϏεʹଐ͢Δ ϊʔυΛಘΔ͜ͱ͕Ͱ͖Δɻ ϔϧενΣοΫ݁Ռ΋ಘΔ͜ͱ͕Ͱ͖Δɻ αʔϏεʹଐ͢ΔϊʔυͷҰཡ΍ϔϧενΣοΫ݁ՌΛಘΒΕΔ

Slide 131

Slide 131 text

DPOTVMUFNQMBUFΛ࢖ͬͯɺ ಈతʹϑΝΠϧΛੜ੒͢Δ

Slide 132

Slide 132 text

3FWFSTF1SPYZ OHJOY XJUIOHY@NSVCZ DPOTVM DPOTVM DBDIFTFSWFS DPOTVM DBDIFTFSWFS TFSWJDFDBDIFTFSWFS DPOTVMUFNQMBUFΛ࢖ͬͯɺಈతʹϑΝΠϧΛੜ੒͢Δ DPOTVMUFNQMBUF

Slide 133

Slide 133 text

3FWFSTF1SPYZ OHJOY XJUIOHY@NSVCZ DPOTVM DPOTVM DBDIFTFSWFS DPOTVM DBDIFTFSWFS TFSWJDFDBDIFTFSWFS DPOTVMUFNQMBUF {{ range service "cache-server|passing" }} - {{ .Address }} {{ end }} servers.yml.ctmpl DPOTVMUFNQMBUFΛ࢖ͬͯɺಈతʹϑΝΠϧΛੜ੒͢Δ ϩʔυ ςϯϓϨʔτϑΝΠϧ

Slide 134

Slide 134 text

3FWFSTF1SPYZ OHJOY XJUIOHY@NSVCZ DPOTVM DPOTVM DBDIFTFSWFS DPOTVM DBDIFTFSWFS TFSWJDFDBDIFTFSWFS DPOTVMUFNQMBUF {{ range service "cache-server|passing" }} - {{ .Address }} {{ end }} servers.yml.ctmpl TFSWJDF ϔϧενΣοΫঢ়ଶ OPEFͷ*1ΞυϨε DPOTVMUFNQMBUFΛ࢖ͬͯɺಈతʹϑΝΠϧΛੜ੒͢Δ ϩʔυ ςϯϓϨʔτϑΝΠϧ

Slide 135

Slide 135 text

3FWFSTF1SPYZ OHJOY XJUIOHY@NSVCZ DPOTVM DPOTVM DBDIFTFSWFS DPOTVM DBDIFTFSWFS TFSWJDFDBDIFTFSWFS DPOTVMUFNQMBUF {{ range service "cache-server|passing" }} - {{ .Address }} {{ end }} - cache-server-1ͷIPΞυϨε - cache-server-2ͷIPΞυϨε servers.yml.ctmpl servers.yml DPOTVMUFNQMBUFΛ࢖ͬͯɺಈతʹϑΝΠϧΛੜ੒͢Δ ϩʔυ औಘ ੜ੒ ςϯϓϨʔτϑΝΠϧ

Slide 136

Slide 136 text

3FWFSTF1SPYZ OHJOY XJUIOHY@NSVCZ DPOTVM DPOTVM DBDIFTFSWFS DPOTVM DBDIFTFSWFS TFSWJDFDBDIFTFSWFS DPOTVMUFNQMBUF {{ range service "cache-server|passing" }} - {{ .Address }} {{ end }} - cache-server-1ͷIPΞυϨε - cache-server-2ͷIPΞυϨε - cache-server-3ͷIPΞυϨε servers.yml.ctmpl servers.yml αʔόΛ૿ઃͨ͠ͱ͖ DPOTVM DBDIFTFSWFS ςϯϓϨʔτϑΝΠϧ

Slide 137

Slide 137 text

3FWFSTF1SPYZ OHJOY XJUIOHY@NSVCZ DPOTVM DPOTVM DBDIFTFSWFS DPOTVM DBDIFTFSWFS TFSWJDFDBDIFTFSWFS DPOTVMUFNQMBUF {{ range service "cache-server|passing" }} - {{ .Address }} {{ end }} - cache-server-1ͷIPΞυϨε - cache-server-2ͷIPΞυϨε servers.yml.ctmpl servers.yml αʔό͕μ΢ϯͨ͠ͱ͖ ϔϧενΣοΫ ςϯϓϨʔτϑΝΠϧ

Slide 138

Slide 138 text

αʔόͷ૿ݮ࣌ʹ ਖ਼ৗͳαʔόҰཡΛ ಈతੜ੒͢Δ͜ͱ͕Ͱ͖ͨʂ

Slide 139

Slide 139 text

NSVCZΛ૊Έ߹ͤͯ ಈతʹઃఆΛಡΈࠐΉ

Slide 140

Slide 140 text

3FWFSTF1SPYZ OHJOY XJUIOHY@NSVCZ DPOTVM DPOTVM DBDIFTFSWFS DPOTVM DBDIFTFSWFS TFSWJDFDBDIFTFSWFS NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ DPOTVMUFNQMBUF mruby_init_worker_code " servers = YAML.load( File.open('servers.yml').read ) Userdata.new.servers = servers "; nginx.conf DPOTVM DBDIFTFSWFS

Slide 141

Slide 141 text

3FWFSTF1SPYZ OHJOY XJUIOHY@NSVCZ DPOTVM DPOTVM DBDIFTFSWFS DPOTVM DBDIFTFSWFS TFSWJDFDBDIFTFSWFS DPOTVMUFNQMBUF mruby_init_worker_code " servers = YAML.load( File.open('servers.yml').read ) Userdata.new.servers = servers "; nginx.conf DPOTVM DBDIFTFSWFS XPSLFSϓϩηεىಈ࣌ʹ ੜ੒͞Εͨ:".-Λϩʔυ *1ΞυϨεͷ഑ྻΛอଘ NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ

Slide 142

Slide 142 text

3FWFSTF1SPYZ OHJOY XJUIOHY@NSVCZ DPOTVM DPOTVM DBDIFTFSWFS DPOTVM DBDIFTFSWFS TFSWJDFDBDIFTFSWFS DPOTVMUFNQMBUF mruby_init_worker_code " servers = YAML.load( File.open('servers.yml').read ) Userdata.new.servers = servers "; nginx.conf DPOTVM DBDIFTFSWFS XPSLFSϓϩηεىಈ࣌ʹ ੜ੒͞Εͨ:".-Λϩʔυ *1ΞυϨεͷ഑ྻΛอଘ DPOTVMUFNQMBUFͰϑΝΠϧੜ੒ޙʹOHJOYSFMPBEΛ࣮ࢪͯ͠ϩʔυ͢Δʂ OHJOY SFMPBE NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ

Slide 143

Slide 143 text

NSVCZͷੈքʹϓϩΩγઌͷ αʔόҰཡΛ౉͢͜ͱ͕Ͱ͖ͨʂ

Slide 144

Slide 144 text

NSVCZͰಈతʹ6QTUSFBNΛ ܾఆ͢Δ

Slide 145

Slide 145 text

NSVCZͰಈతʹ6QTUSFBNΛܾఆ͢Δ 3FWFSTF1SPYZ DBDIFTFSWFS DBDIFTFSWFS DBDIFTFSWFS 8FC4FSWFS ίϯςϯπΩϟογϡػೳແޮ࣌

Slide 146

Slide 146 text

NSVCZͰಈతʹ6QTUSFBNΛܾఆ͢Δ 3FWFSTF1SPYZ DBDIFTFSWFS DBDIFTFSWFS DBDIFTFSWFS 8FC4FSWFS ίϯςϯπΩϟογϡػೳ༗ޮ࣌ ͲΕ͔̍୆

Slide 147

Slide 147 text

NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ upstream dynamic_cache_server { server 127.0.0.1:80; mruby_upstream_keepalive 64; } mruby_set_code $upstream " : if result.enable_contents_cache? servers = Userdata.new.servers port = Nginx::Connection.new.local_port index = SecureRandom.random_number(servers.size) upstream = Nginx::Upstream.new("dynamic_cache_server") upstream.server = "#{servers[index]}:#{port}" "dynamic_cache_server" else result.upstream end "; proxy_pass $upstream; # DB͔Βऔಘͨ͠ίϯςϯπΩϟογϡػೳͷར༻༗ແ # DB͔Βऔಘͨ͠υϝΠϯʹඥͮ͘Web Server nginx.conf

Slide 148

Slide 148 text

NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ upstream dynamic_cache_server { server 127.0.0.1:80; mruby_upstream_keepalive 64; } mruby_set_code $upstream " : if result.enable_contents_cache? servers = Userdata.new.servers port = Nginx::Connection.new.local_port index = SecureRandom.random_number(servers.size) upstream = Nginx::Upstream.new("dynamic_cache_server") upstream.server = "#{servers[index]}:#{port}" "dynamic_cache_server" else result.upstream end "; proxy_pass $upstream; # DB͔Βऔಘͨ͠ίϯςϯπΩϟογϡػೳͷར༻༗ແ # DB͔Βऔಘͨ͠υϝΠϯʹඥͮ͘Web Server μϛʔͷ6QTUSFBN OHY@NSVCZͰॻ͖׵͑Δ nginx.conf

Slide 149

Slide 149 text

NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ upstream dynamic_cache_server { server 127.0.0.1:80; mruby_upstream_keepalive 64; } mruby_set_code $upstream " : if result.enable_contents_cache? servers = Userdata.new.servers port = Nginx::Connection.new.local_port index = SecureRandom.random_number(servers.size) upstream = Nginx::Upstream.new("dynamic_cache_server") upstream.server = "#{servers[index]}:#{port}" "dynamic_cache_server" else result.upstream end "; proxy_pass $upstream; # DB͔Βऔಘͨ͠ίϯςϯπΩϟογϡػೳͷར༻༗ແ # DB͔Βऔಘͨ͠υϝΠϯʹඥͮ͘Web Server OHJOYͷม਺ʹNSVCZͷ࣮ߦ݁ՌΛ֨ೲ͢Δ nginx.conf

Slide 150

Slide 150 text

NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ upstream dynamic_cache_server { server 127.0.0.1:80; mruby_upstream_keepalive 64; } mruby_set_code $upstream " : if result.enable_contents_cache? servers = Userdata.new.servers port = Nginx::Connection.new.local_port index = SecureRandom.random_number(servers.size) upstream = Nginx::Upstream.new("dynamic_cache_server") upstream.server = "#{servers[index]}:#{port}" "dynamic_cache_server" else result.upstream end "; proxy_pass $upstream; # DB͔Βऔಘͨ͠ίϯςϯπΩϟογϡػೳͷར༻༗ແ # DB͔Βऔಘͨ͠υϝΠϯʹඥͮ͘Web Server mruby_init_worker_code " servers = YAML.load( File.open('servers.yml').read ) Userdata.new.servers = servers "; ىಈ࣌ʹऔಘͨ͠$BDIF4FSWFSҰཡ nginx.conf

Slide 151

Slide 151 text

NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ upstream dynamic_cache_server { server 127.0.0.1:80; mruby_upstream_keepalive 64; } mruby_set_code $upstream " : if result.enable_contents_cache? servers = Userdata.new.servers port = Nginx::Connection.new.local_port index = SecureRandom.random_number(servers.size) upstream = Nginx::Upstream.new("dynamic_cache_server") upstream.server = "#{servers[index]}:#{port}" "dynamic_cache_server" else result.upstream end "; proxy_pass $upstream; # DB͔Βऔಘͨ͠ίϯςϯπΩϟογϡػೳͷར༻༗ແ # DB͔Βऔಘͨ͠υϝΠϯʹඥͮ͘Web Server ઀ଓઌͷϙʔτ൪߸ nginx.conf

Slide 152

Slide 152 text

NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ upstream dynamic_cache_server { server 127.0.0.1:80; mruby_upstream_keepalive 64; } mruby_set_code $upstream " : if result.enable_contents_cache? servers = Userdata.new.servers port = Nginx::Connection.new.local_port index = SecureRandom.random_number(servers.size) upstream = Nginx::Upstream.new("dynamic_cache_server") upstream.server = "#{servers[index]}:#{port}" "dynamic_cache_server" else result.upstream end "; proxy_pass $upstream; # DB͔Βऔಘͨ͠ίϯςϯπΩϟογϡػೳͷར༻༗ແ # DB͔Βऔಘͨ͠υϝΠϯʹඥͮ͘Web Server μϛʔͰఆٛͨ͠6QTUSFBN nginx.conf

Slide 153

Slide 153 text

NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ upstream dynamic_cache_server { server 127.0.0.1:80; mruby_upstream_keepalive 64; } mruby_set_code $upstream " : if result.enable_contents_cache? servers = Userdata.new.servers port = Nginx::Connection.new.local_port index = SecureRandom.random_number(servers.size) upstream = Nginx::Upstream.new("dynamic_cache_server") upstream.server = "#{servers[index]}:#{port}" "dynamic_cache_server" else result.upstream end "; proxy_pass $upstream; # DB͔Βऔಘͨ͠ίϯςϯπΩϟογϡػೳͷར༻༗ແ # DB͔Βऔಘͨ͠υϝΠϯʹඥͮ͘Web Server 6QTUSFBNͷαʔόΛॻ͖׵͑Δ nginx.conf

Slide 154

Slide 154 text

NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ upstream dynamic_cache_server { server 127.0.0.1:80; mruby_upstream_keepalive 64; } mruby_set_code $upstream " : if result.enable_contents_cache? servers = Userdata.new.servers port = Nginx::Connection.new.local_port index = SecureRandom.random_number(servers.size) upstream = Nginx::Upstream.new("dynamic_cache_server") upstream.server = "#{servers[index]}:#{port}" "dynamic_cache_server" else result.upstream end "; proxy_pass $upstream; # DB͔Βऔಘͨ͠ίϯςϯπΩϟογϡػೳͷར༻༗ແ # DB͔Βऔಘͨ͠υϝΠϯʹඥͮ͘Web Server 6QTUSFBNͷαʔόΛॻ͖׵͑Δ ϥϯμϜʹΩϟογϡαʔόΛ1୆ฦ͢ nginx.conf

Slide 155

Slide 155 text

NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ upstream dynamic_cache_server { server 127.0.0.1:80; mruby_upstream_keepalive 64; } mruby_set_code $upstream " : if result.enable_contents_cache? servers = Userdata.new.servers port = Nginx::Connection.new.local_port index = SecureRandom.random_number(servers.size) upstream = Nginx::Upstream.new("dynamic_cache_server") upstream.server = "#{servers[index]}:#{port}" "dynamic_cache_server" else result.upstream end "; proxy_pass $upstream; # DB͔Βऔಘͨ͠ίϯςϯπΩϟογϡػೳͷར༻༗ແ # DB͔Βऔಘͨ͠υϝΠϯʹඥͮ͘Web Server ࠷ޙʹࢀরͨ͠΋ͷ͕ม਺ʹ֨ೲ͞ΕΔ nginx.conf

Slide 156

Slide 156 text

NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ upstream dynamic_cache_server { server 127.0.0.1:80; mruby_upstream_keepalive 64; } mruby_set_code $upstream " : if result.enable_contents_cache? servers = Userdata.new.servers port = Nginx::Connection.new.local_port index = SecureRandom.random_number(servers.size) upstream = Nginx::Upstream.new("dynamic_cache_server") upstream.server = "#{servers[index]}:#{port}" "dynamic_cache_server" else result.upstream end "; proxy_pass $upstream; # DB͔Βऔಘͨ͠ίϯςϯπΩϟογϡػೳͷར༻༗ແ # DB͔Βऔಘͨ͠υϝΠϯʹඥͮ͘Web Server ࠷ޙʹࢀরͨ͠΋ͷ͕ม਺ʹ֨ೲ͞ΕΔ ϓϩΩγ͢Δ nginx.conf

Slide 157

Slide 157 text

NSVCZΛ૊Έ߹ͤͯಈతʹઃఆΛಡΈࠐΉ upstream dynamic_cache_server { server 127.0.0.1:80; mruby_upstream_keepalive 64; } mruby_set_code $upstream " : if result.enable_contents_cache? servers = Userdata.new.servers port = Nginx::Connection.new.local_port index = SecureRandom.random_number(servers.size) upstream = Nginx::Upstream.new("dynamic_cache_server") upstream.server = "#{servers[index]}:#{port}" "dynamic_cache_server" else result.upstream end "; proxy_pass $upstream; # DB͔Βऔಘͨ͠ίϯςϯπΩϟογϡػೳͷར༻༗ແ # DB͔Βऔಘͨ͠υϝΠϯʹඥͮ͘Web Server ίϯςϯπΩϟογϡػೳ͕ແޮͷ৔߹͸ %#͔Βऔಘͨ͠8FC4FSWFSΛฦ͢ nginx.conf

Slide 158

Slide 158 text

DPOTVMͱOHY@NSVCZͷ૊Έ߹ͤͰ αʔόͷ૿ݮʹ߹Θͤͯࣗಈతʹ ϓϩΩγઌΛܾఆ͢Δ࢓૊Έ͕Ͱ͖ͨ

Slide 159

Slide 159 text

ޮ཰తͳΩϟογϡ

Slide 160

Slide 160 text

ޮ཰తͳΩϟογϡ ୯७ʹ$BDIF4FSWFSΛฒ΂ͯ෼ࢄ͢Δͱ 3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS 84FSWFS Ωϟογϡώοτ཰௿Լ σΟεΫྖҬͷফඅ FYBNQMFDPN FYBNQMFDPN

Slide 161

Slide 161 text

ޮ཰తͳΩϟογϡ υϝΠϯຖʹॲཧ͢Δ$BDIF4FSWFSΛݶఆ͍ͨ͠ 3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS 84FSWFS Ωϟογϡώοτ཰޲্ σΟεΫྖҬͷઅ໿ FYBNQMFDPN FYBNQMFDPN

Slide 162

Slide 162 text

υϝΠϯຖʹΩϟογϡαʔόΛ ݶఆ͍͚ͨͩ͠Ͱͳ͘ ʴ αʔόͷεέʔϧʹࣗಈରԠ͍ͨ͠ ʴ Մ༻ੑΛҡ͍࣋ͨ͠

Slide 163

Slide 163 text

NSVCZͰ؆୯ͳΞϧΰϦζϜΛ࣮૷

Slide 164

Slide 164 text

3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS FYBNQMFDPN

Slide 165

Slide 165 text

3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS FYBNQMFDPN F Y B N Q M F D P N υϝΠϯͷઌ಄͔Β̑จࣈநग़

Slide 166

Slide 166 text

3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS FYBNQMFDPN F Y B N Q M F D P N ਐ਺ͷ"4$**ίʔυΛऔಘ υϝΠϯͷઌ಄͔Β̑จࣈநग़

Slide 167

Slide 167 text

3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS FYBNQMFDPN F Y B N Q M F D P N ਐ਺ͷ"4$**ίʔυΛ଍͢ υϝΠϯͷઌ಄͔Β̑จࣈநग़

Slide 168

Slide 168 text

3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS FYBNQMFDPN F Y B N Q M F D P N <> <> <> <> <> <> "SSBZ DPOTVMUFNQMBUFʹΑΔ:".-ੜ੒ˠ:".-MPBE ˠ"SSBZ

Slide 169

Slide 169 text

3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS FYBNQMFDPN F Y B N Q M F D P N <> <> <> <> <> <> "SSBZ MFOHUI

Slide 170

Slide 170 text

3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS FYBNQMFDPN F Y B N Q M F D P N <> <> <> <> <> <> "SSBZ

Slide 171

Slide 171 text

αʔόͷ૿ݮ͕ൃੜͨ͠৔߹

Slide 172

Slide 172 text

3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS FYBNQMFDPN F Y B N Q M F D P N <> <> <> <> <> <> "SSBZ

Slide 173

Slide 173 text

3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS FYBNQMFDPN F Y B N Q M F D P N <> <> <> <> <> <> "SSBZ MFOHUI DPOTVMUFNQMBUFͰઃఆϑΝΠϧ͕࠶ੜ੒ OHJOYSFMPBE

Slide 174

Slide 174 text

3FWFSTF1SPYZ $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS $BDIF 4FSWFS FYBNQMFDPN F Y B N Q M F D P N <> <> <> <> <> <> "SSBZ

Slide 175

Slide 175 text

NSVCZΛ࢖ͬͨ؆୯ͳΞϧΰϦζϜͷ ࣮૷ʹΑͬͯ ޮ཰తͳΩϟογϡΛ࣮ݱͨ͠ʂ

Slide 176

Slide 176 text

·ͱΊ

Slide 177

Slide 177 text

·ͱΊ ίϯςϯπΩϟογϡػೳΛϦϦʔεͨ͠ ໢಺ંฦ͠Ͱߴ଎ɾઃఆ؆୯ NSVCZΛ׆༻ͯ͠େن໛Ϩϯαό؀ڥʹඞཁͳཁ݅ Λຬͨͨ͠ NSVCZNTE NSVCZVTFSEBUBΛ༻͍ͨύϑΥʔϚ ϯε޲্5JQTΛ঺հͨ͠ DPOTVMͱNSVCZΛ૊Έ߹ͤͯɺαʔόͷঢ়ଶʹ߹ ΘͤͯಈతʹมԽ͢ΔΠϯϑϥΞʔΩςΫνϟΛ ࣮ݱͨ͠

Slide 178

Slide 178 text

܅΋ϖύϘͰಇ͔ͳ͍͔ʁ ࠷৽ͷ࠾༻৘ใΛνΣοΫˠ !QC@SFDSVJU

Slide 179

Slide 179 text

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