ミドルウェア実行環境の多様化を考慮したインフラアーキテクチャの一検討/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૚ΞʔΩςΫνϟ •

    ϩʔϧ෼ׂΞʔΩςΫνϟ • ݕ౼ͨ͠ΠϯϑϥΞʔΩςΫνϟ • ιϑτ΢ΣΞΞʔΩςΫνϟͷมભ • ϨΠϠʔυΞʔΩςΫνϟ • ΠϯϑϥΦχΦϯΞʔΩςΫνϟ • ࠓޙͷํ਑ͱ·ͱΊ
  3. ຊൃදͱݚڀͷҐஔ͚ͮ

  4. ݚڀςʔϚ • ݚڀ಺༰ • WebαʔϏεʹ͓͚ΔΠϯϑϥΞʔΩςΫνϟͷମܥԽ • ΠϯϑϥΞʔΩςΫνϟͷબ୒ࣗಈԽ • લճͷൃදͰ͸ɺݚڀ՝୊ͷ੔ཧΛߦͬͨ WebαʔϏεʹ͓͚ΔΠϯϑϥΞʔΩςΫνϟͷମܥԽͱΠϯϑϥΞʔΩςΫνϟͷબ୒ࣗಈԽͷݚڀ՝୊ʹ͍ͭͯͷ੔ཧͱߟ࡯

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

    • ࣄྫʹΑΔͱ͋ͷϛυϧ΢ΣΞ͸ҙ֎ͱӡ༻͕େมΒͯ͘͠… • ӡ༻޻਺Λߟ͑ΔͱϚωʔδυαʔϏεΛར༻ͯ͠… • Ͱ΋ɺඅ༻ͱػೳΛߟྀ͢Δͱ… • ։ൃ͸ίϯςφΛ࢖͍͍͔ͨΒɺԾ૝ج൫͸… • ͕ͩɺσʔλετΞ͸͋ͷϚωʔδυαʔϏεΛ࢖͍͍͔ͨΒ… • Քಇ·Ͱʹߏங͢Δʹ͸… • ӡ༻ͷͨΊͷ؂ࢹ͸…
  6. ݚڀςʔϚ ~ݱঢ়ͷΠϯϑϥઃܭ~ ৭ʑߟྀ͢Δͱ ͜ͷߏ੒͕(ܦݧ΍࣮੷ɺଞࣾࣄྫͳͲ͔Β͓ͦΒ͘) Ұ൪όϥϯε͕ྑ͍ͱࢥ͍·͢ʂ

  7. ݚڀςʔϚ • ͦ͜Ͱɺ • WebαʔϏεʹ͓͚ΔΠϯϑϥΞʔΩςΫνϟͷମܥԽ • ΠϯϑϥΞʔΩςΫνϟͷબ୒ࣗಈԽ

  8. ݚڀςʔϚ ~ΠϯϑϥΞʔΩςΫνϟͷબ୒ࣗಈԽ~ Πϯϑϥ ΞʔΩςΫνϟ" Πϯϑϥ ΞʔΩςΫνϟ# Πϯϑϥ ΞʔΩςΫνϟ$ Πϯϑϥ ΞʔΩςΫνϟ

    ܾఆ܅ 8FCαʔϏε Πϯϑϥ ΞʔΩςΫνϟ%
  9. αʔϏεͱΠϯϑϥͷϞσϧԽͱཁૉͷඥ෇͚ • αʔϏεɺΠϯϑϥڞʹϞσϧԽ͕ඞཁ • ཁૉΛઃఆ͠ɺͦΕʹԠͯ͡ಛੑ͕͋Γɺ͍ۙ΋ͷΛબ୒ 8FCαʔϏε ཁૉ ཁૉ ཁૉ ཁૉ

    ΞʔΩςΫνϟ" ཁૉ ཁૉ ཁૉ ཁૉ ΞʔΩςΫνϟ# ཁૉ ཁ ૉ ཁૉ ཁૉ
  10. ݚڀ՝୊ͷ੔ཧ • બ୒ࣗಈԽͷͨΊͷείΞϦϯάख๏ͷཱ֬ • WebαʔϏεͷཁૉચ͍ग़͠ͱϞσϧԽ • طଘͷWebαʔϏεͷௐࠪͱ෼ྨ • ΠϯϑϥΞʔΩςΫνϟͷཁૉͷચ͍ग़͠ͱϞσϧԽ •

    طଘͷΠϯϑϥΞʔΩςΫνϟͷௐࠪͱ෼ྨ
  11. ݚڀςʔϚ ~ΠϯϑϥΞʔΩςΫνϟͷཁૉͱ෼ྨ~ ෼ྨЋ ΞʔΩςΫνϟ" ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ

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

    TimeFuzeΞʔΩςΫνϟ • ʮTimeFuzeΞʔΩςΫνϟߏ૝ - ॲཧͱσʔλͱλΠϚʔΛҰମԽͨ͠ఆظσʔλύΠϓϥΠϯʯ • ࣮ߦ؀ڥͷมԽʹૉૣ͘దԠͰ͖Δ߃ৗੑΛ࣋ͭγεςϜΞʔΩςΫνϟ
  13. ΞϓϦέʔγϣϯͷ࣮૷ ΞʔΩςΫνϟͷ෼ྨΠϝʔδ? શମͷߏ੒ ૚ΞʔΩςΫνϟ ϛυϧ΢ΣΞͷར༻ख๏ 5JNF'V[F ΞϓϦέʔγϣϯ࣮ߦ؀ڥ αʔόϨε ϚΠΫϩαʔϏε ϞϊϦγοΫαʔϏε

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

    • ηϯαʔσʔλ͸ऩू͢ΔϚΠΫϩαʔϏε͸σʔλΛՃ޻ͯ֨͠ ೲ͠ɺ࣌ܥྻͷσʔλΛఆظతʹूܭͰ͖ΔΑ͏ʹɺTimeFuseͰʂ • ͡Ό͋ɺLOLIPOP! ϚωʔδυΫϥ΢υͱAWSΛ࢖͓͏ʂ https://mc.lolipop.jp/ https://aws.amazon.com/
  15. ݒ೦఺ • ͋ΔΞʔΩςΫνϟͱΞʔΩςΫνϟΛબ୒ͨ͠ࡍʹɺಉ࣮͡ߦ؀ڥ(αʔ Ϗε΍ϛυϧ΢ΣΞ)Ͱ࣮ݱͰ͖Δ͔? • ࣮ߦ؀ڥɺར༻αʔϏε͕ෳ਺ʹͳͬͨ৔߹ͷߏஙɺӡ༻໘͸ߟྀ͞Εͯ ͍Δ͔? • WebαʔϏεͷػೳཁ͚݅ͩͰΞʔΩςΫνϟͷબ୒͸ग़དྷͳ͍ͷͰ͸ͳ ͍͔?

    • ΞʔΩςΫνϟΛ૊Έ߹ΘͤΔ৔߹ɺར༻͢Δ্Ͱͷલఏ৚݅ͷߟྀ͕Α Γඞཁʹͳ͖ͬͯͦ͏
  16. ํ਑ • ࡢࠓͷΠϯϑϥΞʔΩςΫνϟ͸ɺલఏͱ͍ͯ͠Δ࣮ߦ؀ ڥ(ϛυϧ΢ΣΞ΍αʔϏε,ίϯςφ্ͳͲ)͕ଟ༷Խͯ͠ ͍Δ • બ୒ͨ͠ΞʔΩςΫνϟͷ࣮ߦ؀ڥͱߏஙɺӡ༻ίετΛ ߟྀͨ͠શମͷΞʔΩςΫνϟΛݕ౼͍ͯ͘͠ඞཁ͕͋Δ • ಛʹϛυϧ΢ΣΞ͸ɺछྨ΍αʔϏεɺ࣮ߦ؀ڥ͕ଟ༷Խ

    ͓ͯ͠Γ੍໿΋ଟ͍
  17. Ξϓϩʔν • ͍͖ͳΓશମͷΞʔΩςΫνϟΛߟ͑Δͷ͸ࠔ೉ͳͷͰɺ ϛυϧ΢ΣΞʹண໨͠ݕ౼ • ϛυϧ΢ΣΞͷ࣮ߦ؀ڥͷଟ༷ԽͱɺͦΕʹΑΔߏஙπʔ ϧͷؔ܎Λιϑτ΢ΣΞ։ൃख๏ͷߟ͑ํΛಋೖ͠ɺΞʔ ΩςΫνϟਤͰදݱ͢Δ • ຊൃදͱٞ࿦ʹΑΓɺࠓޙͷΞϓϩʔνͷ࢓ํΛݕ౼͢Δ

  18. ࣮ߦ؀ڥͷଟ༷ԽͱӨڹ

  19. ࣮ߦ؀ڥͷଟ༷Խ • αʔόԾ૝Խٕज़(2005~) • Ϋϥ΢υαʔϏεͱϚωʔδυαʔϏε(2010~) • ίϯςφٕज़(2015~) ()಺͸ීٴظͷ໨҆

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

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

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

    • DockerͳͲίϯςφΤϯδϯຖʹ࣮ߦܗଶ͕ҟͳΓɺϓϩϏ δϣχϯάͳͲ΋ҟͳΔΑ͏ʹͳͬͨ • γεςϜίϯςφ΍ΞϓϦέʔγϣϯίϯςφͳͲίϯςφࣗ ମͷ࣮ߦܗଶ΋ίϯςφΤϯδϯຖʹଟ༷Խ
  23. ࣮ߦ؀ڥͷଟ༷Խ • OS্Ͱϛυϧ΢ΣΞ͕ಈ͘ͷ͕͋ͨΓ·͔͑Β • OS্Ͱಈ͔͢ɺίϯςφ্Ͱಈ͔͢ɺޓ׵ͷΫϥ΢υαʔ ϏεΛར༻͢ΔͳͲଟ༷Խ • WebΞϓϦέʔγϣϯɺϓϩϏδϣχϯάɺϞχλϦϯά ͳͲ΋ɺࣄ߲ܗଶͷଟ༷ԽʹΑΓมԽ •

    ΠϯϑϥΞʔΩςΫνϟ΋͜ͷଟ༷ԽΛແࢹ͢Δ͜ͱ͸Ͱ ͖ͳ͍
  24. طଘͷΠϯϑϥΞʔΩςΫνϟ

  25. 3૚ΞʔΩςΫνϟ

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

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

  28. ϩʔϧ෼ׂΞʔΩςΫνϟ • αʔόԾ૝Խٕज़΍ϛυϧ΢ΣΞͷछྨ͕ଟ༷Խ • ϛυϧ΢ΣΞ΍ΞϓϦέʔγϣϯ͝ͱʹαʔόΛ෼཭ ͠ɺͦΕͧΕΛ࿈ܞͤ͞Δ • ͦΕͧΕͷϩʔϧʹΑͬͯ෼ׂ͢Δ • αʔό୆਺΍ϛυϧ΢ΣΞͷ૿ՃʹΑΓɺϓϩϏδϣχ

    ϯάπʔϧ΍ϞχλϦϯάπʔϧͷॏཁੑ͕૿Ճ αʔόԾ૝ԽʹΑΔΦʔτεέʔϦϯάٕज़΋ؔ࿈
  29. ϩʔϧ෼ׂΞʔΩςΫνϟͷྫ

  30. ϩʔϧ෼ׂΞʔΩςΫνϟͱ࣮ߦ؀ڥͷଟ༷Խ • ϛυϧ΢ΣΞ΍ΞϓϦέʔγϣϯͷ࣮ߦ؀ڥ͸ඞͣ͠΋ࣗ෼ ͕ͨͪ؅ཧ͍ͯ͠ΔαʔόͰ͸ͳ͘ͳͬͨ • ౰࣌ͷϓϩϏδϣχϯάπʔϧ΍ϞχλϦϯάπʔϧ͸αʔ ό্Ͱಈ࡞͢ΔSSHͳͲΛར༻͢Δ͜ͱ͕ଟ͔ͬͨ • ϚωʔδυαʔϏεͰ͸ఏڙ͞ΕͨAPI΍αʔϏεͷར༻ •

    CloudformationͳͲ • ίϯςφͰ͸ίϯςφΤϯδϯ͕༻ҙͨ͠πʔϧͷར༻ • DockerfileͳͲ
  31. ϩʔϧ෼ׂΞʔΩςΫνϟͱ࣮ߦ؀ڥͷଟ༷Խ • WebαʔϏεʹඞཁͳϛυϧ΢ΣΞΛચ͍ग़͠ɺͦΕ ͧΕผͷαʔόʹ͢Δ • ͦΕΒͷαʔόͷӡ༻ɺ؅ཧख๏͸ผʹݕ౼͢Δ • ඞཁͳϛυϧ΢ΣΞɺαʔϏεΛWebαʔϏεͷཁ ݅ɺ࣮ߦ؀ڥʹΑΔӡ༻ɺ؅ཧख๏ͷ੍໿΋ߟྀͭ͠ ͭόϥϯεྑ͘બ୒͢Δ

  32. ϩʔϧ෼ׂΞʔΩςΫνϟͱ࣮ߦ؀ڥͷଟ༷Խ

  33. ݱࡏͷϩʔϧ෼ׂΞʔΩςΫνϟͷྫ http://hb.matsumoto-r.jp/draft/-fgEmqKH1dnuQR79TLBXmUfWeIE

  34. ଟ༷Խ΁ͷରԠ • WebαʔϏεͷཁ݅Λຬͨ͢ϛυϧ΢ΣΞΛࣗ༝ʹ૊Έ߹Θͤ ͯ࢖͍͍ͨ • ͔͠͠ɺ࣮ߦ؀ڥͷଟ༷Խɺར༻ܗଶͷଟ༷ԽʹΑΓɺαʔό ΍αʔϏεɺϛυϧ΢ΣΞΛԣஅ͢Δ(ྫ͑͹ɺϓϩϏδϣχ ϯάख๏)ͳͲͷߟྀࣄ߲͕ΑΓ૿Ճ • ͳΜ͔ιϑτ΢ΣΞΞʔΩςΫνϟͱࣅͨΑ͏ͳ໰୊Ͱ͸ͳ͍

    ͷ͔? • ͦͷ··ద༻Ͱ͖ͳ͍ʹͯ͠΋ιϑτ΢ΣΞΞʔΩςΫνϟ͕ ࢀߟʹͳΔͷͰ͸?
  35. ιϑτ΢ΣΞΞʔΩςΫνϟͱͦͷมભ

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

    ϨΠϠʔͷ௥Ճ΍ϨΠϠʔ੹೚ൣғͷ࠶ఆٛ • UI -> Application -> Domain -> infrastructure • UI͚ͩͰ͸ͳ͘Infrastructure͔Β΋෼཭͕ඞཁ • Infrastructure͕૿͑Δ͜ͱ΁ͷରԠ(MySQL,PostgreSQL) • ಺ଆ(application, Domain)ͱ֎ଆ(UI,Infrastructure)ͷ෼཭
  37. ϔΩαΰφϧΞʔΩςΫνϟ(2005) http://alistair.cockburn.us/Hexagonal+architecture

  38. ΦχΦϯΞʔΩςΫνϟ(2008) http://jeffreypalermo.com/blog/the-onion-architecture- part-1/

  39. ΫϦʔϯΞʔΩςΫνϟ(2012) https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean- architecture.html

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

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

  42. ΠϯϑϥΞʔΩςΫνϟ΁ͷԠ༻ • ϛυϧ΢ΣΞ࣮ߦ؀ڥͷଟ༷Խ • Infrastructure͔Βͷ෼཭ • ϛυϧ΢ΣΞଟ༷Խ • ଟ༷ͳαʔϏεɺιϑτ΢ΣΞಉ࢜ͷ࿈ܞ΁ͷରԠ •

    ϓϩϏδϣχϯάπʔϧɺϞχλϦϯά΁ͷରԠ • ࣗಈςετɺCIͳͲ΁ͷରԠ
  43. ϨΠϠʔυΞʔΩςΫνϟ • UI -> Middleware -> Infrastructure • UI •

    MySQLϓϩτίϧ • Middleware • MySQL, RDS, Aurora • Infrastructure • OS, ίϯςφ, AWS
  44. ϨΠϠʔυΞʔΩςΫνϟ ϓϩϏδϣχϯάπʔϧ͸Infrastructure΁ͷ઀ଓ WebΞϓϦέʔγϣϯ͸UI΁ͷ઀ଓ

  45. ΦχΦϯΞʔΩςΫνϟ

  46. ΠϯϑϥΦχΦϯΞʔΩςΫνϟ

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

    ϛυϧ΢ΣΞ࣮૷ • WebαʔϏεͷཁ݅ • “಺”Ͱ͋ΔDomain,Middlewareͷબ୒ • ࣮ߦ؀ڥଟ༷ԽͱϓϩϏδϣχϯάπʔϧ • ”֎”ͱͷ઀ଓͱෳࡶ͞ͷදݱ
  48. ΠϯϑϥΦχΦϯΞʔΩςΫνϟͷྫ

  49. ΠϯϑϥΦχΦϯΞʔΩςΫνϟͷྫ

  50. ΠϯϑϥΦχΦϯΞʔΩςΫνϟͷྫ

  51. ΠϯϑϥΦχΦϯΞʔΩςΫνϟ • ϛυϧ΢ΣΞͷ࣮ߦ؀ڥଟ༷ԽͱɺϓϩϏδϣχϯάπʔ ϧͱͷؔ܎ʹண໨͠ɺιϑτ΢ΣΞΞʔΩςΫνϟΛԠ༻ ͨ͠෺Λߟ͑ͨ • ࠓޙ͸ߋʹɺιϑτ΢ΣΞͷςετͷΑ͏ʹΠϯϑϥCI΍ ϞχλϦϯάͳͲ΋௥Ճ͍ͨ͠ • ιϑτ΢ΣΞΞʔΩςΫνϟͱ͸ҟͳΔͱ͜Ζ΋݁ߏ͋Δ

    ͷͰ͕ͦ͜Ͳ͏ͳΔ͔ • ϛυϧ΢ΣΞ୯ମͰ͸ͳͦ͘ΕΒΛ૊Έ߹ΘͤͨΠϯϑϥΞʔ ΩςΫνϟʹ·ͰԠ༻Λ޿͍͛ͨ
  52. ·ͱΊ

  53. ·ͱΊͱࠓޙͷํ਑ • WebαʔϏεͷશମߏ੒ͷΠϯϑϥΞʔΩςΫνϟ • ϛυϧ΢ΣΞɺAppͳͲͷ࣮ߦ؀ڥͷଟ༷Խʹద༻ • WebΞϓϦέʔγϣϯཁ͚݅ͩͰ͸ͳ͘ɺϓϩϏδϣχ ϯάɺϞχλϦϯάͳͲ΋ߟྀ͢Δඞཁ͋Γ • طଘͷιϑτ΢ΣΞΞʔΩςΫνϟΛར༻ͯ͠ɺΠϯϑϥΞʔ

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

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