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

マイクロサービスとクライアントとコンテキスト境界 / 20181030 #microserv

takasek
October 30, 2018

マイクロサービスとクライアントとコンテキスト境界 / 20181030 #microserv

Microservices Meetup vol.9 (FiNC App & Frontend) - connpass
https://microservices-meetup.connpass.com/event/105174/
の発表資料です。

「クライアント・サーバ間のコンテキスト境界をどこに置くか」
という話を、ドメイン駆動設計の概念などを引きながら検討しました。

takasek

October 30, 2018
Tweet

More Decks by takasek

Other Decks in Technology

Transcript

  1. !3 • ʮJ04ΞϓϦઃܭύλʔϯೖ໳ʯ ڞஶ  • 1&",4ΑΓ݄ϦϦʔε༧ఆʂ IUUQTQFBLTDDJ04@BSDIJUFDUVSF .7$ .71

    .77. 'MVY 3FEVY $MFBO"SDIJUFDUVSF  ϞόΠϧಛ༗ͷىಈܦ࿏ɾը໘ભҠͷ੔ཧ·Ͱ໢ཏʂ ؔ͸ɺʮઃܭͱ͸Կ͔ʯͱ͍͏େ͖ͳओޠͰষ΄Ͳʂ ೥ .7$ ʙ͔Β࿈໖ͱଓ͘ ΞʔΩςΫνϟύλʔϯͷྺ࢙ͷ੔ཧʂ ϚαΧϦඞࢸͷϏοάΠγϡʔʹՌ׶ʹ௅Έ·ͨ͠ʂ એ఻
  2. !7 BFF BFF (Backends For Frontends) micro- services Repository UseCase

    Domain ViewModel View Server side Client side
  3. !16 ViewModel, View BFF (Backends For Frontends) micro- services Repository

    UseCase Domain ViewModel View Server side Client side
  4. !23 ෼ࢄίϯϐϡʔςΟϯάͷݪଇ • ωοτϫʔΫ͸৴པͰ͖ͳ͍ • ʢ࣌ʹ͸͔ͳΓͷʣ஗Ԇ͕ৗʹൃੜ͢Δ • ଳҬ෯ʹ͸ݶΓ͕͋Δ • ωοτϫʔΫ͸ηΩϡΞͰ͸ͳ͍

    • ؅ཧऀ͸ෳ਺Ͱ͋Δ • సૹίετ͸θϩͰ͸ͳ͍ • ωοτϫʔΫ͸Ұ༷Ͱ͸ͳ͍ - ࣮ફυϝΠϯۦಈઃܭ ΑΓ
  5. !33 ViewΛม׵૚ͱͯ͠ݟͳ͢ • ϝϦοτ • 7JFXϚΠΫϩαʔϏεͷ୯Ґͱݟͳ͢ • σϝϦοτ • ΞϓϦͷ৔߹ʹ͸ɺ


    7JFX͸ϚΠΫϩαʔϏεʢಠཱͯ͠ϏϧυՄೳͳ୯ҐʣͰ͸ͳ͍ • ΍͸Γը໘ίϯϙʔωϯτؒͷ੔߹ੑΛؾʹ͠ͳ͚Ε͹ͳΒͳ͍ • ͦΕ͸7JFXͷ੹຿ͩΖ͏͔ʁ
  6. !34 ΫϥΠΞϯτ͕୲อ͢΂͖੔߹ੑ • .PEFMͱ7JFXͷؒͷ੔߹ੑ • 6*ૢ࡞Λ.PEFMʹ఻ୡ • .PEFMͷঢ়ଶมߋΛ7JFXʹ൓ө • ڞ௨͢Δ.PEFMʹؔ৺ͷ͋Δ͢΂ͯͷ7JFXʹมߋ͕ಉظ͞ΕΔ

    • .PEFMͱ.PEFMͷ੔߹ੑ • αʔϏε"͔ΒͷϨεϙϯεͱ
 αʔϏε#͔ΒͷϨεϙϯεΛͻͱͭͷ.PEFMʹ݁߹͢Δ • αʔϏε"Λߋ৽ͨ͠ΒɺαʔϏε#ʹ΋มԽ͕ੜ͍ͯ͡Δ͔΋͠Εͳ͍
  7. !35 Q.ʮModelͱModelͷ੔߹ੑʯ͸ΫϥΠΞϯτ͕୲อ͢΂͖΋ͷʁ ʮαʔϏε"͕มΘͬͨΒαʔϏε#ʹ΋มߋ͕͋Δʯ͸αʔόͰ୲อ͢΂͖Ͱ͸ʁ " ʢΫϥΠΞϯτ͕"1*Λೳಈతʹୟ͍ͯߋ৽Λऔಘ͢Δੈք؍Ͱ͸ʣͦΕ͸ݪཧతʹແཧ • ʮαʔϏε"ͷߋ৽͕ɺαʔϏε#ʹ൓ө͞ΕΔʯͱͯ͠ʜ • ΫϥΠΞϯτ͸ɺαʔϏε"ͷߋ৽"1*Λୟ͍ͨ͋ͱɺ
 ໌ࣔతʹαʔϏε#ͷऔಘ"1*Λୟ͘ඞཁ͕͋Δ

    • αʔϏε͕ؒ݁Ռ੔߹ੑΛલఏʹ͍ͯ͠Δ৔߹ɺ
 ͞ΒʹʮͲͷ͘Β͍Ͱ൓ө͞Ε͏Δ͔ʯʮϦτϥΠΛͲ͏͢Δ͔ʯ΋ߟྀ • ΫϥΠΞϯτ͕࣋ͭαʔϏε#ͷঢ়ଶ͸εφοϓγϣοτͰ͔͠ͳ͍ • ΫϥΠΞϯτ͸ϚΠΫϩαʔϏεؒͷؔ܎ੑʹ͍ͭͯͷ஌ࣝΛ࣋ͨ͟ΔΛಘͳ͍
  8. !36 ໰୊ͷয఺ • αʔόϨεϙϯεͷ੔ܗ 6*ૢ࡞ͷαʔό΁ͷ఻ୡʁ • αʔϏεؒͷϋϒͱͯ͠ɺදࣔ಺༰ͷ੔߹ੑΛҡ࣋͢Δʁ • ෼ࢄίϯϐϡʔςΟϯάΛආ͚ΔͨΊͷϩʔΧϧͳΠϯλϑΣʔεʁ •

    ෳ਺ͷը໘ؒͰͷ੔߹ੑͷҡ࣋ʁ • ΫϥΠΞϯτͱαʔόͷίϯςΩετ͕Ͳ͜·Ͱ౷߹Մೳ͔͸ɺ
 ʮϏδωεϩδοΫʯͷް͞ͰมΘΓ͏Δ ΫϥΠΞϯτʹ͓͚ΔʮϏδωεϩδοΫʯͱ͸Կ͔