Slide 1

Slide 1 text

FastContainerΞʔΩςΫνϟʹΑΔԾ૝Խج൫ͷߋͳΔ৴པੑ޲্ʹ޲͚ͯ দຊ྄հɼాதྒհɼ܀ྛ ݈ଠ࿠ / Pepabo R&D Institute, GMO Pepabo, Inc. 2018.05.12 ୈ2ճ Web System Architecture ݚڀձ HTTPϦΫΤετ୯ҐͰίϯςφΛ࠶഑ஔ͢Δ Ծ૝Խج൫ͷߴ଎ͳεέδϡʔϦϯάख๏

Slide 2

Slide 2 text

1. എܠͱ໨త 2. ؔ࿈ݚڀͷ՝୊ 3. ఏҊख๏ 4. ࣮ݧͱߟ࡯ 5. ·ͱΊͱࠓޙͷల๬ 2 ໨࣍

Slide 3

Slide 3 text

1. എܠͱ໨త

Slide 4

Slide 4 text

• ݸਓ͕౰ͨΓલʹଟछଟ༷ͳWebαΠτΛ࣋ͭ࣌୅ • Ϋϥ΢υɾVPSͷΑ͏ͳࣗ༝౓ͱִ཭؀ڥʢΠϯελϯεʣʹର͢Δཁٻ • SNSΛհͯ͠ݸਓͷίϯςϯπΛ֦ࢄ͠΍͍࣌͢୅ • ݸਓͷWebαΠτ΁ͷΞΫηεूத͢Δػձͷ૿େ • ݸਓαΠτͰ΋ΞΫηεूத΍ো֐ʹڧ͍৴པੑͷ͋Δج൫͕ඞཁ 4 ݸਓͷWebαΠτ΁ͷΞΫηεूத΍৴པੑ

Slide 5

Slide 5 text

1. Πϯελϯε௥Ճॲཧ͕௿଎Ͱ͋Δ͜ͱΛղܾ • Πϯελϯεͷঢ়ଶͷఀࢭɾىಈɾεέʔϦϯάΛߴ଎ʹ॥؀ • ϦΫΤετ୯ҐͰঢ়ଶΛܾఆ 2. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰ͷ௿͞Λղܾ • ϦΫΤετ͕ແ͍Πϯελϯε͸Ұఆظؒىಈޙʹఀࢭ ΠϯελϯεΛߴूੵʹऩ༰ՄೳͰมԽʹڧ͍Ծ૝Խج൫ͷఏҊ 5 Πϯελϯε͕॥؀͢ΔมԽʹڧ͍ج൫ͷఏҊ※1 ˞দຊ྄հ ۙ౻Ӊஐ࿕ ࡾ୐༔հ ྗ෢݈࣍ ܀ྛ݈ଠ࿠ 'BTU$POUBJOFS࣮ߦ؀ڥͷมԽʹૉૣ͘దԠͰ͖Δ߃ৗੑΛ࣋ ͭγεςϜΞʔΩςΫνϟ Πϯλʔωοτͱӡ༻ٕज़γϯϙδ΢Ϝ࿦จूɼɼʢʣ /PW

Slide 6

Slide 6 text

• ෳ਺ΠϯελϯεՔಇͤ͞Δ͜ͱʹΑΔίετͷ૿େ • ෳ਺ͷऩ༰αʔόʹΠϯελϯεΛͦΕͧΕՔಇͤ͞Δ͜ͱͰՄ༻ੑΛ୲อ • ߴूੵʹΠϯελϯεऩ༰͢Δ؍఺͔ΒͰ͖Δ͚ͩϦιʔεΛઅ໿͍ͨ͠ • ࣮ӡ༻࣌ͷՄ༻ੑ໨తͱෛՙ෼ࢄ໨తͷࠞࡏʹΑΔෳࡶ͞ • Մ༻ੑ໨తͷΠϯελϯεΛίετΛཧ༝ʹෛՙ෼ࢄʹ΋࢖ͬͯ͠·͏ • ஌Β͵ؒʹऩ༰αʔόো֐࣌ʹ͸ੑೳ΋ॖୀঢ়ଶʹͳΓೋ࣍ো֐΋ 6 FastContainer͓Αͼؔ࿈ݚڀͷՄ༻ੑͷ՝୊

Slide 7

Slide 7 text

1. Πϯελϯε্ͰWordPressͷΑ͏ͳҰൠతͳWebΞϓϦ͕ಈ࡞Մೳ 2. ୯ҰΠϯελϯεͰ΋ऩ༰αʔόো֐࣌ʹ͸ผαʔό΁ࣗಈతʹ࠶഑ஔՄೳ 3. Πϯελϯεͷ࠶഑ஔͷ࣮ߦ࣌Ͱ͋ͬͯ΋਺ඵͷ஗ԆͰHTTPλΠϜΞ΢τ͢ Δ͜ͱͳ͘ΦϯϥΠϯͰϨεϙϯεΛૹ৴Մೳ ߴूੵʢݸਓ޲͚ͷ௿Ձ֨Խʣͱ৴པੑ΍ੑೳͷόϥϯεΛͱΔͨΊͷख๏ 7 ݚڀͷ໨త: ϦΫΤετ୯Ґ ͰͷΠϯελϯε࠶഑ஔ

Slide 8

Slide 8 text

2. ؔ࿈ݚڀͷ՝୊

Slide 9

Slide 9 text

• FastContainer ※1͸HTTPϦΫΤετʹԠͯ͡൓Ԡత͔ͭߴ଎ʹΠϯελϯε ͷঢ়ଶʢىಈɺఀࢭɺҠಈɺෳ੡ɺϦιʔε૿ݮ౳ʣΛܾఆ • ΞΫηε਺ʹԠͨ͡ϦΞΫςΟϒͳεέʔϦϯάॲཧ͕Մೳ • Ϋϥ΢υαʔϏεج൫͸༧ΊΠϯελϯεΛىಈͤͯ͞ϦΫΤετΛॲཧ • ΞΫηεूத࣌͸༧ଌత͔ͭϓϩΞΫςΟϒͳεέʔϦϯάॲཧ͕ඞཁ 9 FastContainerͱΫϥ΢υαʔϏεج൫ͷಛ௃ ˞দຊ྄հ ۙ౻Ӊஐ࿕ ࡾ୐༔հ ྗ෢݈࣍ ܀ྛ݈ଠ࿠ 'BTU$POUBJOFS࣮ߦ؀ڥͷมԽʹૉૣ͘దԠͰ͖ Δ߃ৗੑΛ࣋ͭγεςϜΞʔΩςΫνϟ Πϯλʔωοτͱӡ༻ٕज़γϯϙδ΢Ϝ࿦จूɼɼ ʢʣ ೥݄

Slide 10

Slide 10 text

1. WordPressͷΑ͏ͳҰൠతͳWebΞϓϦέʔγϣϯΛར༻Մೳ 2. Πϯελϯεͷऩ༰αʔόͷো֐࣌ʹHTTPλΠϜΞ΢τ͕ੜ͡ͳ͍ϨϕϧͰ αʔϏεΛܧଓͰ͖Δఔ౓ͷՄ༻ੑΛ૝ఆ ௿Ձ֨WebϗεςΟϯάج൫ɺΫϥ΢υج൫ɺFastContainerج൫Ͱ੔ཧ 10 ຊݚڀʹ͓͚ΔԾ૝Խج൫ͱՄ༻ੑͷલఏ

Slide 11

Slide 11 text

• ҰൠతͳWebΞϓϦέʔγϣϯ͕ར༻Մೳ • ௿Ձ֨Λ࣮ݱ͢ΔͨΊߴूੵʹϗετΛऩ༰ՄೳͳԾ૝ϗετํ͕ࣜҰൠత • ྫɿ୯ҰͷApacheͰ਺ສυϝΠϯͷԾ૝ϗετΛॲཧ • ਺ສυϝΠϯΛॲཧ͢ΔApacheΛෳ਺αʔόʹෳ਺഑ஔͯ͠Մ༻ੑΛ୲อ※1 • ෳ਺Webαʔόϓϩηεͷىಈ͕લఏͱͳΓϦιʔε઎༗ͷίετ͕૿େ 11 ௿Ձ֨WebϗεςΟϯάج൫ͷՄ༻ੑ ˞দຊ྄հ ઒ݪক࢘ দԬً෉ େن໛ڞ༗ܕ8FCόʔνϟϧϗεςΟϯάج൫ͷηΩϡϦςΟͱӡ༻ٕज़ͷ վળ ৘ใॲཧֶձ࿦จࢽ 7PM /P QQ .BS

Slide 12

Slide 12 text

• ༷ʑͳWebΞϓϦέʔγϣϯʢϗεςΟϯάΑΓࣗ༝౓͕ߴ͍ʣ͕ར༻Մೳ • IaaS΍PaaSΛར༻ͨ͠Πϯελϯε୯ҐͰͷߏங͓ΑͼՄ༻ੑ୲อ͕Ұൠత • ຊݚڀͷՄ༻ੑ͕લఏͷ৔߹ɺෳ਺ऩ༰αʔόʹͦΕͧΕΠϯελϯεΛϗο τελϯόΠํࣜʢىಈࡁΈͷ଴ػΠϯελϯεʣͰ଴ػ͢Δ͜ͱͰ࣮ݱ • ऩ༰αʔόఀࢭ࣌ʹ΋ଈ࣌αʔϏεΛܧଓ͢ΔͨΊ • ෳ਺Πϯελϯεͷىಈ͕લఏͱͳΓϦιʔε઎༗ͷίετ͕૿େ 12 FastContainer΍Ϋϥ΢υج൫ͷՄ༻ੑ

Slide 13

Slide 13 text

13 $MJFOU 4FSWFS "QBDIF ʢWIPTU܈ʣ 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS JOTUBODF" 4UPSBHF 4FSWFS "QBDIF ʢWIPTU܈ʣ ௿Ձ֨8FCϗεςΟϯάج൫ͷՄ༻ੑ 'BTU$POUBJOFS΍Ϋϥ΢υج൫ͷՄ༻ੑ )551ϦΫΤετ )551ϦΫΤετ

Slide 14

Slide 14 text

14 $MJFOU 4FSWFS "QBDIF ʢWIPTU܈ʣ 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS JOTUBODF" 4UPSBHF 4FSWFS "QBDIF ʢWIPTU܈ʣ ௿Ձ֨8FCϗεςΟϯάج൫ͷՄ༻ੑ 'BTU$POUBJOFS΍Ϋϥ΢υج൫ͷՄ༻ੑ )551ϦΫΤετ )551ϦΫΤετ ✗ ✗

Slide 15

Slide 15 text

• ݶΒΕͨίετʹ͓͚ΔՄ༻ੑͱෛՙ෼ࢄͷཱ͕྆ট͘ো֐࣌ͷॖୀ໰୊ • ϗοτελϯόΠͷίετΛ༗ޮ׆༻͢ΔͨΊʹෛՙ෼ࢄʹ΋׆༻ • ӡ༻ܧଓ͢ΔதͰՄ༻ੑͱෛՙ෼ࢄͷ໨త͕ࠞࡏ͠ɺো֐࣌ʹॖୀঢ়ଶ΁ • ॖୀঢ়ଶͰॲཧ͕௥͍͔ͭͣ෮چલʹαʔϏεఀࢭΛট͘͜ͱ΋ 15 ͦͷଞෳ਺୆ߏ੒ʹΑΔՄ༻ੑ୲อͷ՝୊

Slide 16

Slide 16 text

3. ఏҊख๏

Slide 17

Slide 17 text

1. Πϯελϯε্ͰWordPressͷΑ͏ͳҰൠతͳWebΞϓϦ͕ಈ࡞Մೳ 2. ୯ҰΠϯελϯεͰ΋ऩ༰αʔόো֐࣌ʹ͸ผαʔό΁ࣗಈతʹ࠶഑ஔՄೳ 3. Πϯελϯεͷ࠶഑ஔͷ࣮ߦ࣌Ͱ͋ͬͯ΋਺ඵͷ஗ԆͰHTTPλΠϜΞ΢τ͢ Δ͜ͱͳ͘ΦϯϥΠϯͰϨεϙϯεΛૹ৴Մೳ ͞ΒʹFastContainerʹΑΓɺ࠶഑ஔ࣌ʹΞΫηε͕ूதͨ͠৔߹͸ىಈ͍ͯ͠ Δαʔό্ͰϦΞΫςΟϒʹεέʔϦϯά΋Մೳʢॖୀ໰୊͕ى͖ͳ͍ʣ 17 ఏҊख๏: ϦΫΤετ୯Ґ ͰͷΠϯελϯε࠶഑ஔ

Slide 18

Slide 18 text

18 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS JOTUBODF" 'BTU$POUBJOFS΍Ϋϥ΢υج൫ͷՄ༻ੑ 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS ఏҊख๏ʴ'BTU$POUBJOFSͷՄ༻ੑ ఏҊख๏ )551ϦΫΤετ )551ϦΫΤετ

Slide 19

Slide 19 text

19 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS JOTUBODF" 'BTU$POUBJOFS΍Ϋϥ΢υج൫ͷՄ༻ੑ 4UPSBHF $MJFOU 4FSWFS JOTUBODF" JOTUBODF# JOTUBODF$ 4FSWFS ఏҊख๏ʴ'BTU$POUBJOFSͷՄ༻ੑ ఏҊख๏ )551ϦΫΤετ )551ϦΫΤετ JOTUBODF" ✗൓Ԡతʹ ࠶഑ஔ ✗

Slide 20

Slide 20 text

HTTP FastContainerͷجຊϑϩʔ 20 8FC1SPYZ ʢOHY@NSVCZ $.%# ʴ "1* 8FC%JTQBUDIFS OHY@NSVCZ $MJFOU ίϯςφ ίϯςφ ίϯςφ w )551ϦΫΤετͷ)PTUOBNF ΛΩʔʹɺ$.%# ߏ੒؅ཧ%# ͔Βίϯςφͷ৘ใΛऔಘ )551 4 ϦΫΤετ w ίϯςφͷ*1ͱϙʔτʹج͍ ͯίϯςφʹϓϩΩγ w ίϯςφ͕-JTUFO͍ͯ͠ͳ͍ ৔߹͸$.%#͔Βίϯςφ ৘ใΛಘͯىಈ $POUBJOFS&OHJOF IBDPOJXB ऩ༰ϗετ"

Slide 21

Slide 21 text

1. Web Proxy͔Βऩ༰αʔόʹICMPͰ1ύέοτͷԠ౴଎౓Λଌఆ 2. Ԡ౴଎౓͕ᮢ஋Λ௒͍͑ͯͨΒผͷऩ༰αʔό΁࠶഑ஔ → ඇৗʹγϯϓϧͳํࣜͰ࣮ݱՄೳ 21 ߴ଎ͳऩ༰ϗετͷࢮ׆؂ࢹͱ࠶഑ஔ

Slide 22

Slide 22 text

)PTU04 8FC1SPYZ $.%#"1* $POUBJOFS %JTQBUDIFS $POUBJOFS )PTU04 $POUBJOFS %JTQBUDIFS $POUBJOFS $MJFOU )551 *$.1 *$.1 )551 )551 )551

Slide 23

Slide 23 text

)PTU04 8FC1SPYZ $.%#"1* $POUBJOFS %JTQBUDIFS $POUBJOFS )PTU04 $POUBJOFS %JTQBUDIFS $POUBJOFS $MJFOU )551 *$.1 *$.1 )551 )551 )551 ✗ ࠷ॳͷ࠶഑ஔ࣌͸ίϯςφͷىಈ͕ඞཁͰ͋Δ͕ɺ ىಈޙ͸Ұఆظؒىಈ͠ଓ͚Δɻ

Slide 24

Slide 24 text

• ICMPͰᮢ஋νΣοΫ͕Ұ࣌తʹޡݕ஌ͯ͠΋Өڹ͕গͳ͍ • FastContainerͳͷͰޡݕ஌ͷ࠶഑ஔ͕ੜͯ͡΋αʔϏε͕ܧଓ͞ΕΔ • ޡݕ஌Ͱଞαʔόʹىಈͯ͠͠·ͬͯ΋Ұఆ࣌ؒىಈͨ͠Βఀࢭ͢Δ • ݩαʔόʹ࠶഑ஔ͞ΕͯCMDB্͸ݩαʔόͷΈʹϦΫΤετ͕ྲྀΕΔ • Ԡ౴࣌ؒͷᮢ஋΍λΠϜΞ΢τΛΪϦΪϦ·ͰνϡʔχϯάՄೳ 24 ఏҊख๏ͷϙΠϯτʢICMP؂ࢹͱFastContainerʣ

Slide 25

Slide 25 text

• ୯ҰͷΠϯελϯεͰ͋ͬͯ΋ProxyʹΑͬͯࣗ཯తʹՄ༻ੑ͕อͨΕΔ • ෛՙ෼ࢄͷΈʹෳ਺Πϯελϯε༻ҙ͢Δɺͱ໨తΛݶఆͰ͖Δ • ݪཧతʹॖୀ໰୊͕ൃੜ͠ͳ͍ 25 ఏҊख๏ͷϙΠϯτʢॖୀ໰୊ͷղܾʣ

Slide 26

Slide 26 text

4. ࣮ݧͱߟ࡯

Slide 27

Slide 27 text

FastContainerͷγεςϜߏ੒ 27

Slide 28

Slide 28 text

28

Slide 29

Slide 29 text

• Web Proxyͱίϯςφऩ༰ϗετؒͷ ICMPԠ౴࣌ؒ • 1ύέοτ1500byteͷԠ౴଎౓Λ1000ճ ଌఆ 29 ༧උ࣮ݧ1ʢICMPͷԠ౴࣌ؒʣ

Slide 30

Slide 30 text

• 40byteͷHTMLΛฦ͢ Apache+mod_phpͷίϯςφ • ϦΫΤετΛૹ৴ޙɺ൓Ԡతʹ ىಈͯ͠ϨεϙϯεΛฦ͢·Ͱ ͷ࣌ؒΛ500ճଌఆ 30 ༧උ࣮ݧ1ʢίϯςφͷىಈ࣌ؒʣ

Slide 31

Slide 31 text

• 40όΠτͷHTMLΛฦ͢ίϯςφʢCPUίΞ1ɺϝϞϦ512MBʣ • ಉ࣌઀ଓ਺10૯઀ଓ਺10ສͷϕϯνϚʔΫɺICMPͷᮢ஋10msec • WordPressͷτοϓϖʔδΛฦ͢ίϯςφʢCPUίΞ4ɺϝϞϦ512MBʣ • ಉ࣌઀ଓ਺10૯઀ଓ਺5ઍͷϕϯνϚʔΫɺICMPͷᮢ஋100msec • ϕϯνϚʔΫͷ൒෼ͷ͕࣌ؒܦաͨ͠ஈ֊Ͱऩ༰αʔόΛiptableͰૄ௨੾அ 31 ຊ࣮ݧ

Slide 32

Slide 32 text

40όΠτͷindex.htmlΛฦ͢ίϯςφ 32

Slide 33

Slide 33 text

WordPressͷτοϓϖʔδΛฦ͢ίϯςφ 33

Slide 34

Slide 34 text

• ICMP؂ࢹͷᮢ஋νϡʔχϯάʹΑΓߴ଎ͳ࠶഑ஔΛ࣮ݱ • ίϯςφͷىಈ͕࣌ؒࢧ഑త • ίϯςφͷىಈ࣌ؒΛ਺ඦɾ਺ेmsecҎԼʹͰ͖Ε͹WordPressʹ͓͍ͯ ͸Φʔόʔϔου͕ΞϓϦέʔγϣϯ΁ • ݱ࣌఺Ͱ΋Ұ࣌తͳ஗ԆͰ͋ΔͨΊSLA࣍ୈͰ࣮༻Խ΋Մೳ 34 ߟ࡯

Slide 35

Slide 35 text

• ProxyͱDispatcherؒͷॲཧதʹϗετ͕ఀࢭͨ͠৔߹͸ϦΫΤετΛऔΓ͜ ΅͢໰୊͸͋Δ • ͜Ε͸ैདྷͷෳ਺ΠϯελϯεͰ΋ಉ༷ 35 ߟ࡯ 8FC1SPYZ ʢOHY@NSVCZ $.%# ʴ "1* 8FC%JTQBUDIFS OHY@NSVCZ $MJFOU ίϯςφ ίϯςφ $POUBJOFS&OHJOF IBDPOJXB ໭ΓΛ·ͨͣʹ ऩ༰αʔόμ΢ϯ

Slide 36

Slide 36 text

5. ·ͱΊͱࠓޙͷల๬

Slide 37

Slide 37 text

• ୯ҰΠϯελϯεͰՄ༻ੑΛ୲อ͢Δߴ଎ͳεέδϡʔϦϯάख๏ΛఏҊ • ෳ਺ΠϯελϯεΛඞཁͱ͠ͳ͍ͨΊϦιʔείετ͕௿͍ • ࣮ݧ͔Βݱ࣌఺Ͱ΋࣮༻ՄೳͳϨϕϧͷ࠶഑ஔͷੑೳ͕ಘΒΕͨ • ར༻ऀ͸ෳ਺ͷΠϯελϯεར༻Λෛՙ෼ࢄ༻్ʹूதͰ͖ΔΑ͏ʹͳΔ 37 ·ͱΊ

Slide 38

Slide 38 text

• ࠶഑ஔͷॲཧ࣌ؒʹ͓͍ͯίϯςφ಺ͷWebαʔόͷىಈ͕࣌ؒࢧ഑త • WebαʔόΛ਺ेmsecͰىಈ͢Δ൚༻తͳىಈ࣌ؒ୹ॖख๏Λݕূத • IOT42Ͱൃද༧ఆ • ຊݚڀͷεέδϡʔϦϯάख๏ΛԠ༻ͯࣗ͠཯తͳෛՙ෼ࢄͷͨΊͷϋʔυ΢Σ ΞεέδϡʔϦϯάख๏΁ൃల͍͖͍ͤͯͨ͞ 38 ࠓޙͷల๬

Slide 39

Slide 39 text

Containerͷதͷϛυϧ΢ΣΞͷىಈߴ଎ԽPoC 39 SFGl04ϨΠϠͰ8FCαʔό͕ىಈ࣌ʹ࣮ߦ͢ΔγεςϜίʔϧΛ؂ࢹ͠ىಈ׬ྃ௚લͷϓϩηεΛΠϝʔδԽ͢ΔlIUUQ ICNBUTVNPUPSKQFOUSZ