Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

masayoshi

May 18, 2018
Tweet

More Decks by masayoshi

Other Decks in Technology

Transcript

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

    ϩʔϧ෼ׂΞʔΩςΫνϟ • ݕ౼ͨ͠ΠϯϑϥΞʔΩςΫνϟ • ιϑτ΢ΣΞΞʔΩςΫνϟͷมભ • ϨΠϠʔυΞʔΩςΫνϟ • ΠϯϑϥΦχΦϯΞʔΩςΫνϟ • ࠓޙͷํ਑ͱ·ͱΊ
  2. ݚڀςʔϚ ~ݱঢ়ͷΠϯϑϥઃܭ~ • ͜͏͍͏WebαʔϏεΛ࣮૷ͯ͠ɺಈ͔͍ͨ͠Μ͚ͩͲ… • ͦΕͳΒσʔλετΞ͸͜͏͍͏ܗࣜͰอଘ͕ྑͯ͘… • Write͕ଟ͍͔ΒɺεέʔϥϏϦςΟΛߟ͑Δͱ… • ͩͱ͢Δͱར༻͢Δϛυϧ΢ΣΞ͸…

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

    ΞʔΩςΫνϟ# ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ෼ྨЌ ΞʔΩςΫνϟ$ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ΞʔΩςΫνϟ% ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ
  4. WebαʔϏεʹؔ࿈͢ΔطଘͷΞʔΩςΫνϟྫ • 3૚ΞʔΩςΫνϟ • ϚΠΫϩαʔϏεΞʔΩςΫνϟ • αʔόϨεΞʔΩςΫνϟ • FastContainerΞʔΩςΫνϟ •

    TimeFuzeΞʔΩςΫνϟ • ʮTimeFuzeΞʔΩςΫνϟߏ૝ - ॲཧͱσʔλͱλΠϚʔΛҰମԽͨ͠ఆظσʔλύΠϓϥΠϯʯ • ࣮ߦ؀ڥͷมԽʹૉૣ͘దԠͰ͖Δ߃ৗੑΛ࣋ͭγεςϜΞʔΩςΫνϟ
  5. ΞʔΩςΫνϟબ୒ͷΠϝʔδ • ෼ྨຖʹΞʔΩςΫνϟΛબ୒͠ɺ࠾༻ͯ͠૊Έ߹ΘͤΔ • ྫ͑͹ɺηϯαʔσʔλΛऩूɺूܭͯ͠ɺWebͰՄࢹԽ • ηϯαʔσʔλऩूϚΠΫϩαʔϏεͱՄࢹԽͷϚΠΫϩαʔϏε • ՄࢹԽ͸σʔλΛදࣔ͢Δ͚ͩͷγϯϓϧͳ΋ͷͳͷͰ FastContainerͰαʔόӡ༻Λ͠ͳ͍

    • ηϯαʔσʔλ͸ऩू͢ΔϚΠΫϩαʔϏε͸σʔλΛՃ޻ͯ֨͠ ೲ͠ɺ࣌ܥྻͷσʔλΛఆظతʹूܭͰ͖ΔΑ͏ʹɺTimeFuseͰʂ • ͡Ό͋ɺLOLIPOP! ϚωʔδυΫϥ΢υͱAWSΛ࢖͓͏ʂ https://mc.lolipop.jp/ https://aws.amazon.com/
  6. ࣮ߦ؀ڥͷଟ༷Խ ~αʔόԾ૝Խٕज़~ • αʔόͷ༻ҙɺߏங͕༰қʹͳͬͨ • ϛυϧ΢ΣΞຖ(ϩʔϧຖ)ʹαʔόͷ෼཭͕༰қʹͳͬͨ • αʔόͷΦʔτεέʔϧͳͲ΋Մೳʹͳͬͨ • αʔό୆਺ͷ૿Ճ΍ΦʔτεέʔϧԽʹΑΓɺϓϩϏδϣχϯ

    άπʔϧͷधཁ͕ߴ·ͬͨ • ༷ʑͳΫϥ΢υαʔϏε͕஀ੜʹͭͳ͕Δ • αʔόͷ෼཭ͳͲ͸ਐΜ͕ͩɺαʔό্ʹOS͕ଘࡏ͠ɺͦͷ্ Ͱϛυϧ΢ΣΞ͕ಈ࡞͢Δ͜ͱʹมΘΓ͸ͳ͔ͬͨ
  7. ࣮ߦ؀ڥͷଟ༷Խ ~Ϋϥ΢υαʔϏε~ • ༷ʑͳϛυϧ΢ΣΞͷϚωʔδυαʔϏε΍ɺଟ༷ͳΫϥ΢υ ϓϥοτϑΥʔϜ͕ొ৔͢ΔΑ͏ʹͳͬͨ • Ϋϥ΢υϓϥοτϑΥʔϜຖʹݻ༗ͷϓϩϏδϣχϯάπʔϧ ΍ϞχλϦϯάख๏͕ొ৔͢ΔΑ͏ʹͳͬͨ • OS্Ͱϛυϧ΢ΣΞΛ࣮ߦ͢ΔͷͰ͸ͳ͘ɺϛυϧ΢ΣΞΛ

    αʔϏεͱͯ͠ར༻͢Δܗଶ͕ొ৔ͨ͠ • ݩͷϛυϧ΢ΣΞ͕ಉ͡Ͱ΋ɺ੍໿΍ػೳͳͲ͕ͦΕͧΕͷϚ ωʔδυαʔϏεɺݩͷϛυϧ΢ΣΞͰҟͳΔΑ͏ʹͳͬͨ • αʔόϨεͳͲɺ΄΅αʔϏεར༻લఏͷΞʔΩςΫνϟͳͲ
  8. ࣮ߦ؀ڥͷଟ༷Խ ~ίϯςφٕज़~ • αʔό΍OS୯ҐͰ͸ͳ͘ɺΞϓϦέʔγϣϯ୯ҐͰͷ෼཭͕༰ қʹͳͬͨ • FaaSɺαʔόϨεͳͲɺΫϥ΢υαʔϏεͳͲʹ΋େ͖ͳӨڹ Λ༩͑ͨ • ίϯςφ্Ͱϛυϧ΢ΣΞΛ࣮ߦ͢Δܗଶ͕஀ੜͨ͠

    • DockerͳͲίϯςφΤϯδϯຖʹ࣮ߦܗଶ͕ҟͳΓɺϓϩϏ δϣχϯάͳͲ΋ҟͳΔΑ͏ʹͳͬͨ • γεςϜίϯςφ΍ΞϓϦέʔγϣϯίϯςφͳͲίϯςφࣗ ମͷ࣮ߦܗଶ΋ίϯςφΤϯδϯຖʹଟ༷Խ
  9. 3૚ΞʔΩςΫνϟ • αʔόΫϥΠΞϯτϞσϧͷγεςϜΞʔΩςΫνϟ • ࠷ॳظͷWebΞϓϦέʔγϣϯͷιϑτ΢ΣΞΞʔΩς ΫνϟͰ΋͋Δ • αʔόԾ૝Խٕज़ͷීٴҎલ͔Βଘࡏ • ݱࡏ͸ɺ3૚ΞʔΩςΫνϟΛجຊʹෳࡶԽ

    • Webαʔόͷલ΍ޙΖʹΩϟογϡαʔό • ॲཧ͕ҟͳΔෳ਺ͷΞϓϦέʔγϣϯαʔό • DBαʔόͱͯ͠RDBͱKVSͷซ༻ • ͜ͷෳࡶԽͨ͠΋ͷΛϩʔϧ෼ׂΞʔΩςΫνϟͱ͢Δ
  10. ιϑτ΢ΣΞΞʔΩςΫνϟͱͦͷมભ • ࣗಈςετ΍֎෦ϓϩάϥϜɺαʔϏεͷར༻ • ϢʔβΠϯλʔϑΣʔεͱϏδωεϩδοΫͷ෼཭ • DBͳͲΠϯϑϥετϥΫνϟʔͷ෼཭ • ϨΠϠʔυΞʔΩςΫνϟʹΑΔվળ •

    ϨΠϠʔͷ௥Ճ΍ϨΠϠʔ੹೚ൣғͷ࠶ఆٛ • UI -> Application -> Domain -> infrastructure • UI͚ͩͰ͸ͳ͘Infrastructure͔Β΋෼཭͕ඞཁ • Infrastructure͕૿͑Δ͜ͱ΁ͷରԠ(MySQL,PostgreSQL) • ಺ଆ(application, Domain)ͱ֎ଆ(UI,Infrastructure)ͷ෼཭
  11. ιϑτ΢ΣΞΞʔΩςΫνϟͱͦͷมભ • ΑΓૄ݁߹ͳΞʔΩςΫνϟ΁มԽ͍ͯͬͨ͠ • ଟ༷ͳαʔϏεɺιϑτ΢ΣΞಉ࢜ͷ࿈ܞ΁ͷରԠ • ࣗಈςετɺCIͳͲ΁ͷରԠ • ্هରԠͷͨΊͷ։ൃ޻਺ͷ࡟ݮ •

    ϨΠϠʔߏ଄͔Βಉ৺ԁঢ়ͷߏ଄΁มԽ͍ͯͬͨ͠ • ্͔ΒԼͰ͸ͳ͘ɺ಺͔Β֎΁ • σʔλͷྲྀΕ΍ॲཧͷྲྀΕɺར༻͢Δ͞ΕΔͰ͸ͳ ͘ɺࣗ෼͔ଞਓ͔
  12. ϨΠϠʔυΞʔΩςΫνϟ • UI -> Middleware -> Infrastructure • UI •

    MySQLϓϩτίϧ • Middleware • MySQL, RDS, Aurora • Infrastructure • OS, ίϯςφ, AWS
  13. ΠϯϑϥΦχΦϯΞʔΩςΫνϟ • Infrastructure, UI, MiddlewareService • ࣮ߦ؀ڥͷଟ༷ԽΛΧόʔ • MiddlewareɺDomain •

    ϛυϧ΢ΣΞ࣮૷ • WebαʔϏεͷཁ݅ • “಺”Ͱ͋ΔDomain,Middlewareͷબ୒ • ࣮ߦ؀ڥଟ༷ԽͱϓϩϏδϣχϯάπʔϧ • ”֎”ͱͷ઀ଓͱෳࡶ͞ͷදݱ
  14. ٞ࿦಺༰ • ΞʔΩςΫνϟͱ͍͏ΑΓ͸ͲͪΒ͔ͱ͍͏ͱUMLͷΑ͏ͳ΋ͷʹ ͍͔ۙ΋? ◦ ґଘͷՄࢹԽΛߦͳ͍ɺબ୒Λ༰қʹ͢Δͱ͍͏؍఺Ͱ΋UMLͷ ΄͏͕͍ۙؾ΋͢Δɻ ◦ ࣮ࡍʹ࣮૷͢ΔΘ͚Ͱ͸ͳ͍ͷͰ͜ͷล͸ͦͷ··ΞʔΩςΫ νϟͱͯ࣋ͬͯ͘͠Δͱҧ࿨ײ͕͋Δ͔΋

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