$30 off During Our Annual Pro Sale. View Details »

FastContainer:実行環境の変化に素早く適応できる恒常性を持つシステムアーキテクチャ

 FastContainer:実行環境の変化に素早く適応できる恒常性を持つシステムアーキテクチャ

FastContainer:実行環境の変化に素早く適応できる恒常性を持つシステムアーキテクチャ

システムの要素を循環させることによって可用性を実現する基盤技術

松本亮介、近藤宇智朗、三宅悠介、力武健次*、栗林健太郎 / ペパボ研究所 / *力武健次技術士事務所
2017.12.08 第10回インターネットと運用技術シンポジウム IOTS2017

MATSUMOTO Ryosuke
PRO

December 08, 2017
Tweet

More Decks by MATSUMOTO Ryosuke

Other Decks in Technology

Transcript

  1. γεςϜͷཁૉΛ॥؀ͤ͞Δ͜ͱʹΑͬͯՄ༻ੑΛ࣮ݱ͢Δج൫ٕज़
    দຊ྄հɺۙ౻Ӊஐ࿕ɺࡾ୐༔հɺྗ෢݈࣍*ɺ܀ྛ݈ଠ࿠ / ϖύϘݚڀॴ / *ྗ෢݈ٕ࣍ज़࢜ࣄ຿ॴ
    2017.12.08 ୈ10ճΠϯλʔωοτͱӡ༻ٕज़γϯϙδ΢Ϝ IOTS2017
    FastContainer:࣮ߦ؀ڥͷมԽʹૉૣ͘దԠͰ͖Δ
    ߃ৗੑΛ࣋ͭγεςϜΞʔΩςΫνϟ

    View Slide

  2. 1. എܠͱ໨త
    2. Ծ૝Խج൫ͷεέʔϦϯάͱӡ༻ٕज़ͷ՝୊
    3. FastContainerΞʔΩςΫνϟ
    4. ࣮ݧͱߟ࡯
    5. ·ͱΊ
    2
    ໨࣍

    View Slide

  3. 1.
    എܠͱ໨త

    View Slide

  4. • ݸਓ͕౰ͨΓલʹଟछଟ༷ͳWebαΠτΛ࣋ͭ࣌୅
    • VPSͷΑ͏ͳࣗ༝౓ͱִ཭؀ڥ΋ٻΊΒΕ͖͍ͯͯΔ
    • SNSΛհͯ͠ݸਓͷίϯςϯπΛ֦ࢄ͠΍͍࣌͢୅
    • ݸਓͷWebαΠτ΁ͷΞΫηεूத͢Δػձͷ૿େ
    • ݸਓαΠτͰ΋ਝ଎ʹΦʔτεέʔϧͰ͖Δج൫͕ඞཁ
    4
    ݸਓͷWebαΠτ΁ͷΞΫηεूத΁ͷରԠ

    View Slide

  5. 1. Πϯελϯε௥Ճॲཧ͕௿଎Ͱ͋Δ͜ͱ
    2. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰ͷ௿͞
    3. εέʔϦϯά͢΂͖ঢ়گݕ஌ͷϦΞϧλΠϜੑͷ௿͞
    4. ۭ͖Ϧιʔε֬ೝͷͨΊͷεέδϡʔϦϯάॲཧͷ஗Ԇ
    5
    ҰൠతͳԾ૝Խج൫ͷΦʔτεέʔϧͷ՝୊
    ͦ΋ͦ΋ΦʔτεέʔϧΛݸਓͷαΠτʹద༻͢Δͷ΋೉͍͠…

    View Slide

  6. 1. Πϯελϯε௥Ճॲཧ͕௿଎Ͱ͋Δ͜ͱ
    2. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰ͷ௿͞
    3. εέʔϦϯά͢΂͖ঢ়گݕ஌ͷϦΞϧλΠϜੑͷ௿͞
    4. ۭ͖Ϧιʔε֬ೝͷͨΊͷεέδϡʔϦϯάॲཧͷ஗Ԇ
    6
    ҰൠతͳԾ૝Խج൫ͷΦʔτεέʔϧͷ՝୊
    ຊൃදͰ͸1.ͱ2.ͷ՝୊ΛղܾͰ͖ΔΞʔΩςΫνϟͷఏҊ
    → ݸਓ͕ҙࣝͤͣͱ΋࢖͑ΔαʔϏε΁ͷ࣮૷Λ໨ࢦ͢

    View Slide

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

    View Slide

  8. • ϗετ͕॥؀͢ΔͷͰϥΠϒϥϦ͕ࣗવʹߋ৽͞Ε͍ͯ͘
    • ऩ༰ઌ৘ใΛม͑Δ͚ͩͰࣗવʹऩ༰αʔόؒΛҠಈՄೳ
    • WordPress౳ͷҰൠతͳCMSΛ഑ஔɾΦʔτεέʔϧՄೳ
    • Ϋϥ΢υϓϩόΠμࢦఆͷίʔσΟϯάͷඞཁ΋ͳ͍
    • ྫɿAWS lambdaʹྨ͢ΔServerless Architecture౳
    8
    ηΩϡϦςΟ΍ӡ༻ٕज़ͷ՝୊΋ಉ࣌ʹղܾ

    View Slide

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

    View Slide

  10. 1. Πϯελϯε௥Ճॲཧ͕௿଎Ͱ͋Δ͜ͱ
    2. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰ͷ௿͞
    3. εέʔϦϯά͢΂͖ঢ়گݕ஌ͷϦΞϧλΠϜੑͷ௿͞
    4. ۭ͖Ϧιʔε֬ೝͷͨΊͷεέδϡʔϦϯάॲཧͷ஗Ԇ
    10
    ҰൠతͳԾ૝Խج൫ͷΦʔτεέʔϧͷ՝୊
    ຊൃදͰ͸1.ͱ2.ͷ՝୊Λείʔϓͱ͢Δ

    View Slide

  11. • VMͷ৔߹ɺݕ஌͔ΒͷΠϯελϯεىಈʹ͕͔͔࣌ؒΔ
    • ಥൃతͳΞΫηε࣌ʹεέʔϧॲཧ͕ؒʹ߹Θͳ͍
    • εέʔϧΞοϓʢׂΓ౰ͯϦιʔε૿ڧʣ΋؆୯ʹͰ͖ͳ͍
    11
    1. Πϯελϯεͷ௥Ճॲཧ͕௿଎Ͱ͋Δ͜ͱ

    View Slide

  12. • Πϯελϯε͕جຊతʹىಈ͠ϦιʔεΛ઎༗͠ଓ͚Δ
    • Πϯελϯε͕VMͷ৔߹ʹ࢖༻͢ΔϦιʔεྔ΋ଟ͍
    • Ұൠతʹ͸ৗ࣌Πϯελϯε͕ىಈ͠ଓ͚Δํࣜ
    • ىಈΠϯελϯεͷ਺͚ͩৗ࣌ϦιʔεΛ઎༗͢Δ
    • ϝϞϦϦʔΫ͢ΔϓϩηεͷӨڹ΋ड͚΍͍͢
    12
    2. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰ͷ௿͞

    View Slide

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

    View Slide

  14. 3.
    FastContainerΞʔΩςΫνϟ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. ίϯςφ࣌୅ͷWebαʔϏεج൫Ϟσϧ
    18
    ΦʔέετϨʔγϣϯ૚
    (,& &$4 .BSBUIPO LT %PDLFS4XBSN /)).4UBDL
    ετϥςδʔ૚
    3BODIFS 'BTU$POUBJOFS
    αʔϏε૚
    ίϯςφʹ৐Δ۩ମతͳ8FCΞϓϦ΍αʔϏε
    ΠϯϑϥετϥΫνϟ૚
    ($1 "[VSF "84 0QFO4UBDL .FTPT #BSF.FUBM -JOVY,JU /ZBI
    ίϯςφϥϯλΠϜ૚
    %PDLFS .PCZ DPOUBJOFSE -9$ SLU )BDPOJXB
    $POUBJOFS3VOUJNF*OUFSGBDF $3*

    ຊΞʔΩςΫνϟͷείʔϓ
    FastContainer͸ཧ૝తʹ͸
    ΦʔέετϨʔγϣϯ૚ҎԼͷ
    πʔϧ܈Ͱ࣮૷ՄೳͰ͋Δ

    View Slide

  19. HTTP FastContainerͷϑϩʔ
    19
    8FC1SPYZ
    ʢOHY@NSVCZ

    $.%#
    ʴ
    "1*
    -PDBM8FC1SPYZ
    OHY@NSVCZ

    $MJFOU ίϯςφ
    ίϯςφ
    ίϯςφ
    w )551ϦΫΤετͷ)PTUOBNF
    ΛΩʔʹɺ$.%# ߏ੒؅ཧ%#

    ͔Βίϯςφͷ৘ใΛऔಘ
    )551 4

    ϦΫΤετ
    w ίϯςφͷ*1ͱϙʔτʹج͍
    ͯίϯςφʹϓϩΩγ
    w ίϯςφ͕-JTUFO͍ͯ͠ͳ͍
    ৔߹͸$.%#͔Βίϯςφ
    ৘ใΛಘͯىಈ
    $POUBJOFS&OHJOF
    IBDPOJXB

    View Slide

  20. ΦʔτεέʔϦϯάݕ஌ͷΞʔΩςΫνϟ
    20

    View Slide

  21. • ϦΫΤετ୯ҐͰߴ଎ʹεέʔϧΞοϓɾεέʔϧΞ΢τՄೳ
    • ίϯςφʹ߃ৗੑΛ࣋ͨͤΔ͜ͱͰϦιʔεͷޮ཰Խ
    • ίϯςφΛ࢖͍ࣺͯՄೳʹ → immutability
    • Ұఆ࣌ؒىಈ͢Δ͜ͱͰ౎౓ىಈΑΓߴ଎Խ → mortality
    • ߟ͑ํʹΑͬͯ͸ϝϞϦϦʔΫ͢Διϑτ΢ΣΞΛ΋ڐ༰
    21
    FastContainerΞʔΩςΫνϟͷ·ͱΊ

    View Slide

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

    View Slide

  23. 4.
    ࣮ݧͱߟ࡯

    View Slide

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

    View Slide

  25. 25
    ࣮ݧ؀ڥ ߲໨ ࢓༷
    $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ສϦΫΤετ͔Βεέʔϧॲ
    ཧΛߦ͍ɺॲཧ͕٧·Δ͜ͱͳ͘ෛՙ
    ෼ࢄग़དྷ͍ͯΔ͔Λ֬ೝɻ

    View Slide

  26. 26
    335ඵ࣌఺ͰεέʔϧΞ΢τΛ࣮ࢪ͠ɺ
    340ඵ࣌఺Ͱෛՙ෼ࢄ͕։࢝͞Ε͍ͯΔɻ
    5ສϦΫΤετҎ߱͸2ίϯ
    ςφʹεέʔϧΞ΢τ͞Εͨ
    ͨΊɺϨεϙϯελΠϜ͕൒
    ෼ҎԼͱͳͬͯ࢒Γͷ5ສϦ
    ΫΤετ୹࣌ؒͰॲཧ͍ͯ͠
    Δ͜ͱ͕෼͔Δɻ

    View Slide

  27. 27
    301ඵ࣌఺ͰCPU2ഒͷεέʔϧΞο
    ϓΛ࣮ࢪ͠ɺ302ඵ͔ΒϨεϙϯε
    λΠϜ͕ঃʑʹૣ͘ͳΓ304ඵͰ൒
    ෼ͷϨεϙϯελΠϜʹͳ͍ͬͯΔɻ
    5ສϦΫΤετҎ߱͸CPU͕
    ݩͷ2ഒʹڧԽ͞ΕͨͨΊɺ
    ϨεϙϯελΠϜ͕໿൒෼ͱ
    ͳͬͯ࢒Γͷ5ສϦΫΤετ
    ୹࣌ؒͰॲཧ͍ͯ͠Δ͜ͱ͕
    ෼͔Δɻ

    View Slide

  28. 5.
    ·ͱΊ

    View Slide

  29. • ΦʔτεέʔϧͷॲཧίετͱϦιʔεޮ཰Խͷ՝୊ʹண໨
    • ෆมੑΛ൐͏ج൫ͷηΩϡϦςΟͱӡ༻ٕज़ͷ՝୊ʹண໨
    • Πϯελϯε͕॥؀͠มԽʹڧ͍Ծ૝Խج൫ٕज़ͷఏҊ
    • ϩϦϙοϓʂϚωʔδυΫϥ΢υͱͯ͠αʔϏε΋ϦϦʔε
    • ຊΞʔΩςΫνϟͱࣗ࡞ίϯςφΤϯδϯΛ࣮૷࣮ͯ͠ݱ
    29
    ·ͱΊ

    View Slide

  30. • αʔϏεͱ࣮ͯ͠૷࣮͠ӡ༻্ͷޮՌΛଌఆத
    • ॳճىಈ࣌ؒͱىಈܧଓ࣌ؒͱΞΫηε਺ͷؔ܎Λߟ࡯
    • ϢʔβମݧΛଛͳΘͳ͍ىಈܧଓ࣌ؒͷదԠతܾఆ͕Մೳ͔
    • CRIUʹΑΓίϯςφ಺ͷΞϓϦΛΠϝʔδԽͯ͠ߴ଎ىಈ
    • ߃ৗੑʹΑΔϦιʔεޮ཰ԽΛ۝भେֶͱڞಉͰ࣮ূ࣮ݧத
    30
    ࠓޙͷ՝୊

    View Slide

  31. 1. Πϯελϯε௥Ճॲཧ͕௿଎Ͱ͋Δ͜ͱ
    2. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰ͷ௿͞
    3. εέʔϦϯά͢΂͖ঢ়گݕ஌ͷϦΞϧλΠϜੑͷ௿͞
    4. ۭ͖Ϧιʔε֬ೝͷͨΊͷεέδϡʔϦϯάॲཧͷ஗Ԇ
    31
    ҰൠతͳԾ૝Խج൫ͷΦʔτεέʔϧͷ՝୊
    ਐḿ

    View Slide

  32. • σʔλऩूࣗମ͸਺ेඵ୯Ґ
    • εέʔϦϯάͷτϦΨʔݕ஌͸࠷େ3෼ඞཁ
    • ޡݕ஌ΛݮΒ͠ͳ͕Βૉૣ͘εέʔϦϯάΛݕ஌Ͱ͖Δ͔
    • εέʔϧΞ΢τɾΠϯ͕ແବʹසൃ͠ͳ͍Α͏ͳϧʔϧઃܭ
    • ΦϯϥΠϯʹదͨ͠มԽ఺ݕग़ͷΑ͏ͳ౷ܭతख๏ʹ΋ؼண
    32
    εέʔϦϯά͢΂͖ঢ়گͷݕ஌ʹؔ͢Δ՝୊

    View Slide