ミドルウェア実行環境の多様化を考慮したインフラアーキテクチャの一検討/study on web system architecture #2

ミドルウェア実行環境の多様化を考慮したインフラアーキテクチャの一検討/study on web system architecture #2

第2回WSA研での発表資料です

5e811ea39e141c433cdd961bbaa03122?s=128

masayoshi

May 18, 2018
Tweet

Transcript

  1. 2.

    ΞδΣϯμ • ຊൃදͱݚڀͷҐஔ͚ͮ • ϛυϧ΢ΣΞ࣮ߦ؀ڥͷଟ༷ԽͱӨڹ • طଘͷΠϯϑϥΞʔΩςΫνϟ • 3૚ΞʔΩςΫνϟ •

    ϩʔϧ෼ׂΞʔΩςΫνϟ • ݕ౼ͨ͠ΠϯϑϥΞʔΩςΫνϟ • ιϑτ΢ΣΞΞʔΩςΫνϟͷมભ • ϨΠϠʔυΞʔΩςΫνϟ • ΠϯϑϥΦχΦϯΞʔΩςΫνϟ • ࠓޙͷํ਑ͱ·ͱΊ
  2. 5.

    ݚڀςʔϚ ~ݱঢ়ͷΠϯϑϥઃܭ~ • ͜͏͍͏WebαʔϏεΛ࣮૷ͯ͠ɺಈ͔͍ͨ͠Μ͚ͩͲ… • ͦΕͳΒσʔλετΞ͸͜͏͍͏ܗࣜͰอଘ͕ྑͯ͘… • Write͕ଟ͍͔ΒɺεέʔϥϏϦςΟΛߟ͑Δͱ… • ͩͱ͢Δͱར༻͢Δϛυϧ΢ΣΞ͸…

    • ࣄྫʹΑΔͱ͋ͷϛυϧ΢ΣΞ͸ҙ֎ͱӡ༻͕େมΒͯ͘͠… • ӡ༻޻਺Λߟ͑ΔͱϚωʔδυαʔϏεΛར༻ͯ͠… • Ͱ΋ɺඅ༻ͱػೳΛߟྀ͢Δͱ… • ։ൃ͸ίϯςφΛ࢖͍͍͔ͨΒɺԾ૝ج൫͸… • ͕ͩɺσʔλετΞ͸͋ͷϚωʔδυαʔϏεΛ࢖͍͍͔ͨΒ… • Քಇ·Ͱʹߏங͢Δʹ͸… • ӡ༻ͷͨΊͷ؂ࢹ͸…
  3. 11.

    ݚڀςʔϚ ~ΠϯϑϥΞʔΩςΫνϟͷཁૉͱ෼ྨ~ ෼ྨЋ ΞʔΩςΫνϟ" ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ

    ΞʔΩςΫνϟ# ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ෼ྨЌ ΞʔΩςΫνϟ$ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ΞʔΩςΫνϟ% ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ
  4. 12.

    WebαʔϏεʹؔ࿈͢ΔطଘͷΞʔΩςΫνϟྫ • 3૚ΞʔΩςΫνϟ • ϚΠΫϩαʔϏεΞʔΩςΫνϟ • αʔόϨεΞʔΩςΫνϟ • FastContainerΞʔΩςΫνϟ •

    TimeFuzeΞʔΩςΫνϟ • ʮTimeFuzeΞʔΩςΫνϟߏ૝ - ॲཧͱσʔλͱλΠϚʔΛҰମԽͨ͠ఆظσʔλύΠϓϥΠϯʯ • ࣮ߦ؀ڥͷมԽʹૉૣ͘దԠͰ͖Δ߃ৗੑΛ࣋ͭγεςϜΞʔΩςΫνϟ
  5. 14.

    ΞʔΩςΫνϟબ୒ͷΠϝʔδ • ෼ྨຖʹΞʔΩςΫνϟΛબ୒͠ɺ࠾༻ͯ͠૊Έ߹ΘͤΔ • ྫ͑͹ɺηϯαʔσʔλΛऩूɺूܭͯ͠ɺWebͰՄࢹԽ • ηϯαʔσʔλऩूϚΠΫϩαʔϏεͱՄࢹԽͷϚΠΫϩαʔϏε • ՄࢹԽ͸σʔλΛදࣔ͢Δ͚ͩͷγϯϓϧͳ΋ͷͳͷͰ FastContainerͰαʔόӡ༻Λ͠ͳ͍

    • ηϯαʔσʔλ͸ऩू͢ΔϚΠΫϩαʔϏε͸σʔλΛՃ޻ͯ֨͠ ೲ͠ɺ࣌ܥྻͷσʔλΛఆظతʹूܭͰ͖ΔΑ͏ʹɺTimeFuseͰʂ • ͡Ό͋ɺLOLIPOP! ϚωʔδυΫϥ΢υͱAWSΛ࢖͓͏ʂ https://mc.lolipop.jp/ https://aws.amazon.com/
  6. 20.

    ࣮ߦ؀ڥͷଟ༷Խ ~αʔόԾ૝Խٕज़~ • αʔόͷ༻ҙɺߏங͕༰қʹͳͬͨ • ϛυϧ΢ΣΞຖ(ϩʔϧຖ)ʹαʔόͷ෼཭͕༰қʹͳͬͨ • αʔόͷΦʔτεέʔϧͳͲ΋Մೳʹͳͬͨ • αʔό୆਺ͷ૿Ճ΍ΦʔτεέʔϧԽʹΑΓɺϓϩϏδϣχϯ

    άπʔϧͷधཁ͕ߴ·ͬͨ • ༷ʑͳΫϥ΢υαʔϏε͕஀ੜʹͭͳ͕Δ • αʔόͷ෼཭ͳͲ͸ਐΜ͕ͩɺαʔό্ʹOS͕ଘࡏ͠ɺͦͷ্ Ͱϛυϧ΢ΣΞ͕ಈ࡞͢Δ͜ͱʹมΘΓ͸ͳ͔ͬͨ
  7. 21.

    ࣮ߦ؀ڥͷଟ༷Խ ~Ϋϥ΢υαʔϏε~ • ༷ʑͳϛυϧ΢ΣΞͷϚωʔδυαʔϏε΍ɺଟ༷ͳΫϥ΢υ ϓϥοτϑΥʔϜ͕ొ৔͢ΔΑ͏ʹͳͬͨ • Ϋϥ΢υϓϥοτϑΥʔϜຖʹݻ༗ͷϓϩϏδϣχϯάπʔϧ ΍ϞχλϦϯάख๏͕ొ৔͢ΔΑ͏ʹͳͬͨ • OS্Ͱϛυϧ΢ΣΞΛ࣮ߦ͢ΔͷͰ͸ͳ͘ɺϛυϧ΢ΣΞΛ

    αʔϏεͱͯ͠ར༻͢Δܗଶ͕ొ৔ͨ͠ • ݩͷϛυϧ΢ΣΞ͕ಉ͡Ͱ΋ɺ੍໿΍ػೳͳͲ͕ͦΕͧΕͷϚ ωʔδυαʔϏεɺݩͷϛυϧ΢ΣΞͰҟͳΔΑ͏ʹͳͬͨ • αʔόϨεͳͲɺ΄΅αʔϏεར༻લఏͷΞʔΩςΫνϟͳͲ
  8. 22.

    ࣮ߦ؀ڥͷଟ༷Խ ~ίϯςφٕज़~ • αʔό΍OS୯ҐͰ͸ͳ͘ɺΞϓϦέʔγϣϯ୯ҐͰͷ෼཭͕༰ қʹͳͬͨ • FaaSɺαʔόϨεͳͲɺΫϥ΢υαʔϏεͳͲʹ΋େ͖ͳӨڹ Λ༩͑ͨ • ίϯςφ্Ͱϛυϧ΢ΣΞΛ࣮ߦ͢Δܗଶ͕஀ੜͨ͠

    • DockerͳͲίϯςφΤϯδϯຖʹ࣮ߦܗଶ͕ҟͳΓɺϓϩϏ δϣχϯάͳͲ΋ҟͳΔΑ͏ʹͳͬͨ • γεςϜίϯςφ΍ΞϓϦέʔγϣϯίϯςφͳͲίϯςφࣗ ମͷ࣮ߦܗଶ΋ίϯςφΤϯδϯຖʹଟ༷Խ
  9. 26.

    3૚ΞʔΩςΫνϟ • αʔόΫϥΠΞϯτϞσϧͷγεςϜΞʔΩςΫνϟ • ࠷ॳظͷWebΞϓϦέʔγϣϯͷιϑτ΢ΣΞΞʔΩς ΫνϟͰ΋͋Δ • αʔόԾ૝Խٕज़ͷීٴҎલ͔Βଘࡏ • ݱࡏ͸ɺ3૚ΞʔΩςΫνϟΛجຊʹෳࡶԽ

    • Webαʔόͷલ΍ޙΖʹΩϟογϡαʔό • ॲཧ͕ҟͳΔෳ਺ͷΞϓϦέʔγϣϯαʔό • DBαʔόͱͯ͠RDBͱKVSͷซ༻ • ͜ͷෳࡶԽͨ͠΋ͷΛϩʔϧ෼ׂΞʔΩςΫνϟͱ͢Δ
  10. 36.

    ιϑτ΢ΣΞΞʔΩςΫνϟͱͦͷมભ • ࣗಈςετ΍֎෦ϓϩάϥϜɺαʔϏεͷར༻ • ϢʔβΠϯλʔϑΣʔεͱϏδωεϩδοΫͷ෼཭ • DBͳͲΠϯϑϥετϥΫνϟʔͷ෼཭ • ϨΠϠʔυΞʔΩςΫνϟʹΑΔվળ •

    ϨΠϠʔͷ௥Ճ΍ϨΠϠʔ੹೚ൣғͷ࠶ఆٛ • UI -> Application -> Domain -> infrastructure • UI͚ͩͰ͸ͳ͘Infrastructure͔Β΋෼཭͕ඞཁ • Infrastructure͕૿͑Δ͜ͱ΁ͷରԠ(MySQL,PostgreSQL) • ಺ଆ(application, Domain)ͱ֎ଆ(UI,Infrastructure)ͷ෼཭
  11. 40.

    ιϑτ΢ΣΞΞʔΩςΫνϟͱͦͷมભ • ΑΓૄ݁߹ͳΞʔΩςΫνϟ΁มԽ͍ͯͬͨ͠ • ଟ༷ͳαʔϏεɺιϑτ΢ΣΞಉ࢜ͷ࿈ܞ΁ͷରԠ • ࣗಈςετɺCIͳͲ΁ͷରԠ • ্هରԠͷͨΊͷ։ൃ޻਺ͷ࡟ݮ •

    ϨΠϠʔߏ଄͔Βಉ৺ԁঢ়ͷߏ଄΁มԽ͍ͯͬͨ͠ • ্͔ΒԼͰ͸ͳ͘ɺ಺͔Β֎΁ • σʔλͷྲྀΕ΍ॲཧͷྲྀΕɺར༻͢Δ͞ΕΔͰ͸ͳ ͘ɺࣗ෼͔ଞਓ͔
  12. 43.

    ϨΠϠʔυΞʔΩςΫνϟ • UI -> Middleware -> Infrastructure • UI •

    MySQLϓϩτίϧ • Middleware • MySQL, RDS, Aurora • Infrastructure • OS, ίϯςφ, AWS
  13. 47.

    ΠϯϑϥΦχΦϯΞʔΩςΫνϟ • Infrastructure, UI, MiddlewareService • ࣮ߦ؀ڥͷଟ༷ԽΛΧόʔ • MiddlewareɺDomain •

    ϛυϧ΢ΣΞ࣮૷ • WebαʔϏεͷཁ݅ • “಺”Ͱ͋ΔDomain,Middlewareͷબ୒ • ࣮ߦ؀ڥଟ༷ԽͱϓϩϏδϣχϯάπʔϧ • ”֎”ͱͷ઀ଓͱෳࡶ͞ͷදݱ
  14. 52.
  15. 54.

    ٞ࿦಺༰ • ΞʔΩςΫνϟͱ͍͏ΑΓ͸ͲͪΒ͔ͱ͍͏ͱUMLͷΑ͏ͳ΋ͷʹ ͍͔ۙ΋? ◦ ґଘͷՄࢹԽΛߦͳ͍ɺબ୒Λ༰қʹ͢Δͱ͍͏؍఺Ͱ΋UMLͷ ΄͏͕͍ۙؾ΋͢Δɻ ◦ ࣮ࡍʹ࣮૷͢ΔΘ͚Ͱ͸ͳ͍ͷͰ͜ͷล͸ͦͷ··ΞʔΩςΫ νϟͱͯ࣋ͬͯ͘͠Δͱҧ࿨ײ͕͋Δ͔΋

    • ϓϩϏδϣχϯάπʔϧͷΑ͏ͳӡ༻؅ཧπʔϧ͸ϛυϧ΢ΣΞͱ͸ গ͠ҧ͏ಉ৺ԁঢ়͔΋? • ϓϩϏδϣχϯά͚ͩͰ͸ͳ͘ϞχλϦϯά΋ೖΕ͍ͨ ◦ ݱঢ়্ख͍ܗ͕ݟ͔ͭΒͣ΋͏গ͠੔ཧ͕ඞཁͦ͏ ◦ ͳʹ͔͍͍Ҋ͕ແ͍ͩΖ͏͔ • ΋͏গ͠੔ཧ͞ΕΔͱ໘നͦ͏Ͱ৽نੑ΍༗༻ੑ΋ݟ͑ͯ͘Δؾ͕͠ ͍ͯΔ