Slide 1

Slide 1 text

γεςϜͷཁૉΛ॥؀ͤ͞Δ͜ͱʹΑͬͯՄ༻ੑΛ࣮ݱ͢Δج൫ٕज़ দຊ྄հɺۙ౻Ӊஐ࿕*ɺࡾ୐༔հɺྗ෢݈࣍**ɺ܀ྛ݈ଠ࿠ / ϖύϘݚڀॴ / *GMOϖύϘ / **ྗ෢݈ٕ࣍ज़࢜ࣄ຿ॴ 2017.06.24 ୈ38ճ ৘ใॲཧֶձ Πϯλʔωοτͱӡ༻ٕज़ݚڀձ FastContainer: WebΞϓϦέʔγϣϯίϯςφͷঢ়ଶ ΛϦΞΫςΟϒʹܾఆ͢Δίϯςφ؅ཧΞʔΩςΫνϟ

Slide 2

Slide 2 text

1. എܠͱ໨త 2. Ծ૝Խج൫ͷεέʔϦϯάͱӡ༻ٕज़ͷ՝୊ 3. FastContainerΞʔΩςΫνϟ 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. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰ͷ௿͞ 3. ۭ͖Ϧιʔε֬ೝͷͨΊͷεέδϡʔϦϯάॲཧͷ஗Ԇ 5 ҰൠతͳԾ૝Խج൫ͷΦʔτεέʔϧͷ՝୊ 1.ͱ2.ͷ՝୊ΛղܾͰ͖ΔΞʔΩςΫνϟͷఏҊ

Slide 6

Slide 6 text

1. Πϯελϯε௥Ճॲཧ͕௿଎Ͱ͋Δ͜ͱΛղܾ • ΠϯελϯεͷఀࢭɾىಈΛߴ଎ʹ॥؀ • Πϯελϯε͕ࣗ਎ͷϦιʔεมԽΛ؂ࢹɾݕ஌ɾࢦࣔ 2. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰ͷ௿͞Λղܾ • ϦΫΤετ͕ແ͍Πϯελϯε͸Ұఆظؒىಈޙʹఀࢭ ϦΫΤετ୯ҐͰΠϯελϯεͷঢ়ଶΛܾఆ͢Δख๏ͷఏҊ 6 Πϯελϯε͕॥؀͢ΔมԽʹڧ͍ج൫ͷఏҊ

Slide 7

Slide 7 text

ηΩϡϦςΟ΍ӡ༻ٕज़ͷ՝୊΋ಉ࣌ʹղܾ • ϗετ͕॥؀͢ΔͷͰϥΠϒϥϦ͕ࣗવʹߋ৽͞Ε͍ͯ͘ • ऩ༰ઌ৘ใΛม͑Δ͚ͩͰࣗવʹऩ༰αʔόؒΛҠಈՄೳ • ϝϯςφϯε΍ো֐ରԠ͕༰қ 7 Πϯελϯε͕॥؀͢ΔมԽʹڧ͍ج൫ͷఏҊ

Slide 8

Slide 8 text

2. Ծ૝Խج൫ͷεέʔϦϯάͱ ӡ༻ٕज़ͷ՝୊

Slide 9

Slide 9 text

1. Πϯελϯε௥Ճॲཧ͕௿଎Ͱ͋Δ͜ͱ 2. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰ͷ௿͞ 3. ۭ͖Ϧιʔε֬ೝͷͨΊͷεέδϡʔϦϯάॲཧͷ஗Ԇ 9 ಥൃతͳΞΫηεूதʹର͢Δෛՙ෼ࢄ͕ࠔ೉ ຊൃදͰ͸1.ͱ2.ͷ՝୊Λείʔϓͱ͢Δ

Slide 10

Slide 10 text

• Φʔτεέʔϧ࣌ͷݕ஌͔Βεέʔϧࢦࣔͷཻ౓͕ૈ͍ • ֎෦͔ΒͷఆظతͳϦιʔε؂ࢹʹΑΔݕ஌ͱ௥Ճࢦࣔ • ؂ࢹର৅ͷ૿Ճʹ൐͍؂ࢹִؒ΍؂ࢹޮ཰͕௿Լ • VMͷ৔߹ɺݕ஌͔ΒͷΠϯελϯεىಈʹ͕͔͔࣌ؒΔ • ಥൃతͳΞΫηε࣌ʹεέʔϧॲཧ͕ؒʹ߹Θͳ͍ 10 1. Πϯελϯεͷ௥Ճॲཧ͕௿଎Ͱ͋Δ͜ͱ

Slide 11

Slide 11 text

• Πϯελϯε͕جຊతʹىಈ͠ϦιʔεΛ઎༗͠ଓ͚Δ • Πϯελϯε͕VMͷ৔߹ʹ࢖༻͢ΔϦιʔεྔ΋ଟ͍ • HTTPϦΫΤετ୯Ґʹىಈ͢Δʹ͸ىಈίετ͕ߴ͍ • Ұൠతʹ͸ৗ࣌Πϯελϯε͕ىಈ͠ଓ͚Δํࣜ • ϝϞϦϦʔΫ͢ΔΑ͏ͳιϑτ΢ΣΞͷ৔߹େม 11 2. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰ͷ௿͞

Slide 12

Slide 12 text

• ੬ऑੑରԠ΍όʔδϣϯΞοϓͷίετ͕ߴ͍ • αʔϏεͷఀࢭˠόʔδϣϯΞοϓˠىಈͳͲ • ϝϯςφϯε࣌ͷௐ੔ͷίετ͕ߴ͍ • ऩ༰αʔόͷҠಈͷίετ • αʔϏεఀࢭ࣌ؒͷௐ੔ͳͲߴ͍ස౓Ͱͷ࣮ࢪ͕ࠔ೉ 12 ͦͷଞͷӡ༻ٕज़΍ηΩϡϦςΟͷ՝୊

Slide 13

Slide 13 text

• ಥൃతͳΞΫηε͚࣌ͩεέʔϧ͢Δͷ͸ͳͥ೉͍͠ͷ͔ʁ • γεςϜ͕ෆมੑΛ࣋ͭͱมԽ΁͸େ͖ͳίετ͕൐͏ • γεςϜͷߏ੒ཁૉ΋ෆมੑΛ࣋ͪঢ়ଶมԽͷίετ͕ߴ͍ • ෆมੑΛҡ࣋͢Δ͜ͱ͕γεςϜ؅ཧͷ໨తͰ͋Δ • ૝ఆͷൣғ಺Ͱ඼࣭Λ࠷େԽ͢Δ͜ͱΛ໨తͱ͍ͯ͠Δ • ૝ఆͰ͖ͳ͍ΞΫηεूத΍໰୊͕ଟൃ͢Δ࣌୅ʹ͸ෆ޲͖ 13 ෆมੑΛ൐͏γεςϜͷ՝୊

Slide 14

Slide 14 text

3. FastContainerΞʔΩςΫνϟ

Slide 15

Slide 15 text

• ঢ়ଶͷมԽΛߴ଎ʹߦ͑ͯ൓Ԡతʹಈ࡞Ͱ͖Δ͜ͱΛॏࢹ • γεςϜͷཁૉͷఀࢭ͔Βىಈॲཧͷޮ཰Խʹண໨ • γεςϜͷཁૉͷఀࢭঢ়ଶΛڐ༰͢ΔγεςϜ • ৗʹఀࢭͱىಈ͕॥؀Մೳͳ߃ৗੑΛ࣋ͭγεςϜΛ໨ࢦ͢ • ॥؀Մೳ = Մ༻ੑ͕ߴ͘ৗʹมԽՄೳͳج൫͕࣮ݱͰ͖Δ 15 Մ༻ੑߴ͘มԽʹڧ͍ج൫Λઃܭ͢Δʹ͸ʁ

Slide 16

Slide 16 text

มԽ͠ଓ͚Δ͜ͱ͔ΒಘΒΕΔ҆ఆੑ 16 ϗετ" ϗετ" ϗετ" ϗετ" ϗετ" Πϯλʔωοτ ϗετ" ϗετ" ϗετ" ΍͕ͯఀࢭ ൓Ԡతʹىಈ ൓Ԡతʹ εέʔϧΞοϓ ऩ༰αʔόA ऩ༰αʔόB HTTPϦΫΤετ ൓Ԡతʹ εέʔϧΞ΢τ • ϗετͷىಈͱఀࢭΛ॥؀ • ৗʹ॥؀͠ଓ͚ΔΞʔΩςΫνϟ • มԽ͠ଓ͚Δ͜ͱʹΑΔ҆ఆੑ • ॥؀ͷ଎౓վળΛ௥ٻ ৗʹมԽՄೳͰ͋ΔͨΊಥൃతͳΞ ΫηεूதͷΑ͏ͳมԽʹ΋଱ੑͷ ͋ΔΞʔΩςΫνϟΛ࣮ݱՄೳ

Slide 17

Slide 17 text

• ϗετͷىಈɾෳ੡ɾఀࢭɾ૿ڧॲཧͷޮ཰ԽΛॏࢹ • ֤छॲཧΛHTTPϦΫΤετ࣌ʹϦΞΫςΟϒʹ࣮ࢪ • ϗετʹ͸ίϯςφܕԾ૝ԽΛ࠾༻ͯ͠ىಈΛߴ଎ʹ࣮ݱ • ίϯςφͷϞχλϦϯά͸ίϯςφࣗ਎͕࣮ࢪͯ͠ݕ஌ • ϦΫΤετʹج͍ͯϦΞΫςΟϒʹίϯςφͷঢ়ଶΛܾఆ 17 FastContainerΞʔΩςΫνϟͱ໋໊

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

HTTPϦΫΤετܖػͰͷ௥Ճɾఀࢭॲཧ 19 -PDBM 8FC1SPYZ $.%# ʴ "1* ίϯςφ ίϯςφ w ϦΫΤετॲཧ࣌ʹίϯςφͷϦιʔε࢖༻ྔ͕ߴ ͘ͳͬͨ͜ͱΛݕ஌ͨ͠Β"1*ʹίϯςφͷ௥Ճࢦ ࣔʢ௿͘ͳͬͨΒ࡟আࢦࣔʣ w $.%#ʹίϯςφͷ৘ใ͕͋Ε͹ىಈͯ͠ϦΫΤετ Λసૹ w ىಈॲཧத͸ىಈࡁΈͷίϯςφʹҰ୴ϦΫΤετΛ సૹͯ͠ىಈޙʹৼΓ෼͚։࢝ 8FC1SPYZ w Ϋʔϧμ΢ϯλΠϜͱ͍͏֓೦Λઃ͚ɺසൟʹ௥Ճɾ ఀࢭॲཧ͕ൃੜ͠ͳ͍Α͏ʹࢦࣔڐՄ࣌ؒΛઃఆ ऩ༰αʔό ؂ࢹɾݕ஌

Slide 20

Slide 20 text

• ϦΫΤετ୯ҐͰߴ଎ʹεέʔϧΞοϓɾεέʔϧΞ΢τՄೳ • εέʔϧՄ൱ͷݕ஌΋ϦΫΤετ୯ҐͰ࣮ࢪ • Ұఆ࣌ؒܦա͔ͭϦΫΤετॲཧ͕ͳ͔ͬͨΒίϯςφఀࢭ • ίϯςφΛ࢖͍ࣺͯՄೳʹ → immutability • Ұఆ࣌ؒىಈ͢Δ͜ͱͰ౎౓ىಈΑΓߴ଎Խ → mortality • ίϯςφ͕ϦΫΤετΛॲཧ͍ͯ͠Δ࣌ؒͷΈ՝ۚ౳͕Մೳ 20 FastContainerΞʔΩςΫνϟͷ·ͱΊ

Slide 21

Slide 21 text

• ίϯςφ͕॥؀͢ΔͷͰϥΠϒϥϦ͕ࣗવʹߋ৽͞Ε͍ͯ͘ • ར༻ऀʹͱͬͯ͸ηΩϡϦςΟ޲্ • ఏڙଆʹͱͬͯ͸੬ऑੑରԠ΍όʔδϣϯΞοϓͷޮ཰Խ • CMDBͷऩ༰ઌ৘ใΛม͑Δ͚ͩͰࣗવʹऩ༰αʔόΛҠಈ • ϝϯςφϯε΍ো֐ରԠ࣌ͷແఀࢭରԠ͕༰қʹͳΔ • ߟ͑ํʹΑͬͯ͸ϝϞϦϦʔΫ͢Διϑτ΢ΣΞΛ΋ڐ༰ 21 FastContainerΞʔΩςΫνϟͷ·ͱΊ

Slide 22

Slide 22 text

4. ࣮ݧͱߟ࡯

Slide 23

Slide 23 text

ݱࡏ࣮૷தͷFastContainerΞʔΩςΫνϟ 23 CMDBʹߏ੒΍ίϯςφͷঢ় ଶ͕શͯอଘ͞Ε͍ͯΔɻ UserProxyͱCompute͕Ϧ ΫΤετʹج͍ͯCoreAPIܦ ༝ͰCMDB͔Βঢ়ଶΛऔಘɾ มߋ͠ߏ੒ΛมԽͤ͞Δɻ Compute͸ෳ਺୆Ͱ DataPoolΛڞ༗͠ɺίϯς φΛHTTPϦΫΤετ͔ΒϦ ΞΫςΟϒʹىಈ͢Δɻ

Slide 24

Slide 24 text

24 ࣮ݧ؀ڥ ߲໨ ࢓༷ $PNQVUF $16 .FNPSZ /*$ 04 *OUFM9FPO&()[DPSF (CZUF (CQT 6CVOUV,FSOFM 6TFS1SPYZ $16 .FNPSZ /*$ 04 *OUFM9FPO&()[DPSF (CZUF (CQT 6CVOUV,FSOFM $PSF"1* $16 .FNPSZ /*$ 04 *OUFM9FPO&()[DPSF (CZUF (CQT 6CVOUV,FSOFM $.%# $16 .FNPSZ /*$ 04 *OUFM9FPO&()[DPSF (CZUF (CQT 6CVOUV,FSOFM %BUB1PPM $16 .FNPSZ /*$ 04 *OUFM9FPO&()[DPSF (CZUF (CQT 6CVOUV,FSOFM OpenStackͰߏங͞ΕͨԾ૝ج൫্ Ͱ֤ίϯϙʔωϯτΛVM্Ͱ࣮૷ ͠ɺ࣮ݧΛ࣮ࢪɻ ίϯςφ͸phpinfo()͕ಈ࡞͢Δ mod_phpΛ૊ΈࠐΜͩApache࣮ߦ ؀ڥɻઃఆ͸σϑΥϧτɻCPU1ίΞ ͷ30%ɺϝϞϦ512MBΛׂΓ౰ͯɻ εέʔϧΞ΢τͱεέʔϧΞοϓͷਝ ଎ੑΛධՁ͢ΔͨΊʹɺ10ສϦΫΤ ετͷ5ສϦΫΤετ͔Βεέʔϧॲ ཧΛߦ͍ɺॲཧ͕٧·Δ͜ͱͳ͘ෛՙ ෼ࢄग़དྷ͍ͯΔ͔Λ֬ೝɻ

Slide 25

Slide 25 text

25 10ສϦΫΤετதɺ5ສϦΫΤετ͔Β εέʔϧΞ΢τΛߦ͍ɺϨεϙϯεʹӨ ڹΛ༩͑Δ͜ͱͳ͘ॠ࣌ʹෛՙ෼ࢄ͕Ͱ ͖͍ͯΔɻ 5ສϦΫΤετҎ߱͸2ίϯ ςφʹεέʔϧΞ΢τ͞Εͨ ͨΊɺϨεϙϯελΠϜ͕൒ ෼ҎԼͱͳͬͯ࢒Γͷ5ສϦ ΫΤετ୹࣌ؒͰॲཧ͍ͯ͠ Δ͜ͱ͕෼͔Δɻ

Slide 26

Slide 26 text

26 10ສϦΫΤετதɺ5ສϦΫΤετ ͔ΒCPU2ഒͷεέʔϧΞοϓΛߦ ͍ɺϨεϙϯεʹӨڹΛ༩͑Δ͜ͱ ͳ͘ॠ࣌ʹෛՙ෼ࢄ͕Ͱ͖͍ͯΔɻ 5ສϦΫΤετҎ߱͸CPU͕ ݩͷ2ഒʹڧԽ͞ΕͨͨΊɺ ϨεϙϯελΠϜ͕໿൒෼ͱ ͳͬͯ࢒Γͷ5ສϦΫΤετ ୹࣌ؒͰॲཧ͍ͯ͠Δ͜ͱ͕ ෼͔Δɻ

Slide 27

Slide 27 text

5. ·ͱΊ

Slide 28

Slide 28 text

• ΦʔτεέʔϧͷॲཧίετͱϦιʔεޮ཰Խͷ՝୊ʹண໨ • ෆมੑΛ൐͏ج൫ͷηΩϡϦςΟͱӡ༻ٕज़ͷ՝୊ʹண໨ • Πϯελϯε͕॥؀͠มԽʹڧ͍Ծ૝Խج൫ٕज़ͷఏҊ • immutabilityɺmortalityɺreactivity͕ಛ௃ • Πϯελϯεͷঢ়ଶมԽͷίετޮ཰Խʹண໨ 28 ·ͱΊ

Slide 29

Slide 29 text

• ϓϩμΫτͱͯ͠ϦϦʔε࣮͠ӡ༻্ͷޮՌΛଌఆ • Πϯελϯεͷ॥؀ʹGCͷΑ͏ͳϞσϧΛద༻ͯ͠ޮ཰Խ • CRIUʹΑΓ൓ԠతىಈΛαεϖϯυతىಈʹରԠ • ىಈͷ஗͍ίϯςφ(JVMͳͲ)ʹ΋ରԠՄೳ͔ݕূ • ະղܾͷϋʔυ΢ΣΞεέδϡʔϦϯάͷ՝୊ͷରԠ 29 ࠓޙͷ՝୊

Slide 30

Slide 30 text

ݚڀһɺੵۃతʹืूதʂ http://rand.pepabo.com/