Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ミドルウェア実行環境の多様化を考慮したインフラアーキテクチャの一検討/study on web...
Search
masayoshi
May 18, 2018
Technology
0
3.4k
ミドルウェア実行環境の多様化を考慮したインフラアーキテクチャの一検討/study on web system architecture #2
第2回WSA研での発表資料です
masayoshi
May 18, 2018
Tweet
Share
More Decks by masayoshi
See All by masayoshi
メトリクス、ログ、トレースをうまく使い分けて可観測性を高めよう!
masayoshi
9
8.4k
Developers Summit 2021 summer
masayoshi
15
28k
2021-06-cloud-native-reg-event
masayoshi
8
2.4k
SRE_Culture_Organization
masayoshi
17
9.8k
cloudnative-kansai-2019
masayoshi
1
650
Webサービスにおけるインフラアーキテクチャの体系化と選択自動化の研究/study on web system architecture #1
masayoshi
0
2.7k
はてなのインフラストラクチャ設計構想 / The Concept of Hatena Infrastructure
masayoshi
1
5.3k
chroot-network-uts-container
masayoshi
6
750
はてなのインフラ環境を自宅で再現する
masayoshi
7
12k
Other Decks in Technology
See All in Technology
Lexical Analysis
shigashiyama
1
150
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
890
日経電子版のStoreKit2フルリニューアル
shimastripe
1
140
Introduction to Works of ML Engineer in LY Corporation
lycorp_recruit_jp
0
140
OS 標準のデザインシステムを超えて - より柔軟な Flutter テーマ管理 | FlutterKaigi 2024
ronnnnn
0
210
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
760
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
120
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
130
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
210
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
459
33k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Become a Pro
speakerdeck
PRO
25
5k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Code Reviewing Like a Champion
maltzj
520
39k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
RailsConf 2023
tenderlove
29
900
Documentation Writing (for coders)
carmenintech
65
4.4k
Thoughts on Productivity
jonyablonski
67
4.3k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
4 Signs Your Business is Dying
shpigford
180
21k
Transcript
ϛυϧΣΞ࣮ߦڥͷଟ༷Խ Λߟྀͨ͠ΠϯϑϥΞʔΩςΫ νϟͷҰݕ౼
ΞδΣϯμ • ຊൃදͱݚڀͷҐஔ͚ͮ • ϛυϧΣΞ࣮ߦڥͷଟ༷ԽͱӨڹ • طଘͷΠϯϑϥΞʔΩςΫνϟ • 3ΞʔΩςΫνϟ •
ϩʔϧׂΞʔΩςΫνϟ • ݕ౼ͨ͠ΠϯϑϥΞʔΩςΫνϟ • ιϑτΣΞΞʔΩςΫνϟͷมભ • ϨΠϠʔυΞʔΩςΫνϟ • ΠϯϑϥΦχΦϯΞʔΩςΫνϟ • ࠓޙͷํͱ·ͱΊ
ຊൃදͱݚڀͷҐஔ͚ͮ
ݚڀςʔϚ • ݚڀ༰ • WebαʔϏεʹ͓͚ΔΠϯϑϥΞʔΩςΫνϟͷମܥԽ • ΠϯϑϥΞʔΩςΫνϟͷબࣗಈԽ • લճͷൃදͰɺݚڀ՝ͷཧΛߦͬͨ WebαʔϏεʹ͓͚ΔΠϯϑϥΞʔΩςΫνϟͷମܥԽͱΠϯϑϥΞʔΩςΫνϟͷબࣗಈԽͷݚڀ՝ʹ͍ͭͯͷཧͱߟ
http://masayoshi.hatenablog.jp/entry/2017/12/27/235456
ݚڀςʔϚ ~ݱঢ়ͷΠϯϑϥઃܭ~ • ͜͏͍͏WebαʔϏεΛ࣮ͯ͠ɺಈ͔͍ͨ͠Μ͚ͩͲ… • ͦΕͳΒσʔλετΞ͜͏͍͏ܗࣜͰอଘ͕ྑͯ͘… • Write͕ଟ͍͔ΒɺεέʔϥϏϦςΟΛߟ͑Δͱ… • ͩͱ͢Δͱར༻͢ΔϛυϧΣΞ…
• ࣄྫʹΑΔͱ͋ͷϛυϧΣΞҙ֎ͱӡ༻͕େมΒͯ͘͠… • ӡ༻Λߟ͑ΔͱϚωʔδυαʔϏεΛར༻ͯ͠… • Ͱɺඅ༻ͱػೳΛߟྀ͢Δͱ… • ։ൃίϯςφΛ͍͍͔ͨΒɺԾج൫… • ͕ͩɺσʔλετΞ͋ͷϚωʔδυαʔϏεΛ͍͍͔ͨΒ… • Քಇ·Ͱʹߏங͢Δʹ… • ӡ༻ͷͨΊͷࢹ…
ݚڀςʔϚ ~ݱঢ়ͷΠϯϑϥઃܭ~ ৭ʑߟྀ͢Δͱ ͜ͷߏ͕(ܦݧ࣮ɺଞࣾࣄྫͳͲ͔Β͓ͦΒ͘) Ұ൪όϥϯε͕ྑ͍ͱࢥ͍·͢ʂ
ݚڀςʔϚ • ͦ͜Ͱɺ • WebαʔϏεʹ͓͚ΔΠϯϑϥΞʔΩςΫνϟͷମܥԽ • ΠϯϑϥΞʔΩςΫνϟͷબࣗಈԽ
ݚڀςʔϚ ~ΠϯϑϥΞʔΩςΫνϟͷબࣗಈԽ~ Πϯϑϥ ΞʔΩςΫνϟ" Πϯϑϥ ΞʔΩςΫνϟ# Πϯϑϥ ΞʔΩςΫνϟ$ Πϯϑϥ ΞʔΩςΫνϟ
ܾఆ܅ 8FCαʔϏε Πϯϑϥ ΞʔΩςΫνϟ%
αʔϏεͱΠϯϑϥͷϞσϧԽͱཁૉͷඥ͚ • αʔϏεɺΠϯϑϥڞʹϞσϧԽ͕ඞཁ • ཁૉΛઃఆ͠ɺͦΕʹԠͯ͡ಛੑ͕͋Γɺ͍ۙͷΛબ 8FCαʔϏε ཁૉ ཁૉ ཁૉ ཁૉ
ΞʔΩςΫνϟ" ཁૉ ཁૉ ཁૉ ཁૉ ΞʔΩςΫνϟ# ཁૉ ཁ ૉ ཁૉ ཁૉ
ݚڀ՝ͷཧ • બࣗಈԽͷͨΊͷείΞϦϯάख๏ͷཱ֬ • WebαʔϏεͷཁૉચ͍ग़͠ͱϞσϧԽ • طଘͷWebαʔϏεͷௐࠪͱྨ • ΠϯϑϥΞʔΩςΫνϟͷཁૉͷચ͍ग़͠ͱϞσϧԽ •
طଘͷΠϯϑϥΞʔΩςΫνϟͷௐࠪͱྨ
ݚڀςʔϚ ~ΠϯϑϥΞʔΩςΫνϟͷཁૉͱྨ~ ྨЋ ΞʔΩςΫνϟ" ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ
ΞʔΩςΫνϟ# ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ྨЌ ΞʔΩςΫνϟ$ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ΞʔΩςΫνϟ% ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ ཁૉ
WebαʔϏεʹؔ࿈͢ΔطଘͷΞʔΩςΫνϟྫ • 3ΞʔΩςΫνϟ • ϚΠΫϩαʔϏεΞʔΩςΫνϟ • αʔόϨεΞʔΩςΫνϟ • FastContainerΞʔΩςΫνϟ •
TimeFuzeΞʔΩςΫνϟ • ʮTimeFuzeΞʔΩςΫνϟߏ - ॲཧͱσʔλͱλΠϚʔΛҰମԽͨ͠ఆظσʔλύΠϓϥΠϯʯ • ࣮ߦڥͷมԽʹૉૣ͘దԠͰ͖Δ߃ৗੑΛ࣋ͭγεςϜΞʔΩςΫνϟ
ΞϓϦέʔγϣϯͷ࣮ ΞʔΩςΫνϟͷྨΠϝʔδ? શମͷߏ ΞʔΩςΫνϟ ϛυϧΣΞͷར༻ख๏ 5JNF'V[F ΞϓϦέʔγϣϯ࣮ߦڥ αʔόϨε ϚΠΫϩαʔϏε ϞϊϦγοΫαʔϏε
'BTU$POUBJOFS ·ͩ໌֬ʹྨͰ͖͍ͯͳ͍
ΞʔΩςΫνϟબͷΠϝʔδ • ྨຖʹΞʔΩςΫνϟΛબ͠ɺ࠾༻ͯ͠Έ߹ΘͤΔ • ྫ͑ɺηϯαʔσʔλΛऩूɺूܭͯ͠ɺWebͰՄࢹԽ • ηϯαʔσʔλऩूϚΠΫϩαʔϏεͱՄࢹԽͷϚΠΫϩαʔϏε • ՄࢹԽσʔλΛදࣔ͢Δ͚ͩͷγϯϓϧͳͷͳͷͰ FastContainerͰαʔόӡ༻Λ͠ͳ͍
• ηϯαʔσʔλऩू͢ΔϚΠΫϩαʔϏεσʔλΛՃͯ֨͠ ೲ͠ɺ࣌ܥྻͷσʔλΛఆظతʹूܭͰ͖ΔΑ͏ʹɺTimeFuseͰʂ • ͡Ό͋ɺLOLIPOP! ϚωʔδυΫϥυͱAWSΛ͓͏ʂ https://mc.lolipop.jp/ https://aws.amazon.com/
ݒ೦ • ͋ΔΞʔΩςΫνϟͱΞʔΩςΫνϟΛબͨ͠ࡍʹɺಉ࣮͡ߦڥ(αʔ ϏεϛυϧΣΞ)Ͱ࣮ݱͰ͖Δ͔? • ࣮ߦڥɺར༻αʔϏε͕ෳʹͳͬͨ߹ͷߏஙɺӡ༻໘ߟྀ͞Εͯ ͍Δ͔? • WebαʔϏεͷػೳཁ͚݅ͩͰΞʔΩςΫνϟͷબग़དྷͳ͍ͷͰͳ ͍͔?
• ΞʔΩςΫνϟΛΈ߹ΘͤΔ߹ɺར༻͢Δ্Ͱͷલఏ݅ͷߟྀ͕Α Γඞཁʹͳ͖ͬͯͦ͏
ํ • ࡢࠓͷΠϯϑϥΞʔΩςΫνϟɺલఏͱ͍ͯ͠Δ࣮ߦ ڥ(ϛυϧΣΞαʔϏε,ίϯςφ্ͳͲ)͕ଟ༷Խͯ͠ ͍Δ • બͨ͠ΞʔΩςΫνϟͷ࣮ߦڥͱߏஙɺӡ༻ίετΛ ߟྀͨ͠શମͷΞʔΩςΫνϟΛݕ౼͍ͯ͘͠ඞཁ͕͋Δ • ಛʹϛυϧΣΞɺछྨαʔϏεɺ࣮ߦڥ͕ଟ༷Խ
͓ͯ͠Γ੍ଟ͍
Ξϓϩʔν • ͍͖ͳΓશମͷΞʔΩςΫνϟΛߟ͑ΔͷࠔͳͷͰɺ ϛυϧΣΞʹண͠ݕ౼ • ϛυϧΣΞͷ࣮ߦڥͷଟ༷ԽͱɺͦΕʹΑΔߏஙπʔ ϧͷؔΛιϑτΣΞ։ൃख๏ͷߟ͑ํΛಋೖ͠ɺΞʔ ΩςΫνϟਤͰදݱ͢Δ • ຊൃදͱٞʹΑΓɺࠓޙͷΞϓϩʔνͷํΛݕ౼͢Δ
࣮ߦڥͷଟ༷ԽͱӨڹ
࣮ߦڥͷଟ༷Խ • αʔόԾԽٕज़(2005~) • ΫϥυαʔϏεͱϚωʔδυαʔϏε(2010~) • ίϯςφٕज़(2015~) ()ීٴظͷ҆
࣮ߦڥͷଟ༷Խ ~αʔόԾԽٕज़~ • αʔόͷ༻ҙɺߏங͕༰қʹͳͬͨ • ϛυϧΣΞຖ(ϩʔϧຖ)ʹαʔόͷ͕༰қʹͳͬͨ • αʔόͷΦʔτεέʔϧͳͲՄೳʹͳͬͨ • αʔόͷ૿ՃΦʔτεέʔϧԽʹΑΓɺϓϩϏδϣχϯ
άπʔϧͷधཁ͕ߴ·ͬͨ • ༷ʑͳΫϥυαʔϏε͕ੜʹͭͳ͕Δ • αʔόͷͳͲਐΜ͕ͩɺαʔό্ʹOS͕ଘࡏ͠ɺͦͷ্ ͰϛυϧΣΞ͕ಈ࡞͢Δ͜ͱʹมΘΓͳ͔ͬͨ
࣮ߦڥͷଟ༷Խ ~ΫϥυαʔϏε~ • ༷ʑͳϛυϧΣΞͷϚωʔδυαʔϏεɺଟ༷ͳΫϥυ ϓϥοτϑΥʔϜ͕ొ͢ΔΑ͏ʹͳͬͨ • ΫϥυϓϥοτϑΥʔϜຖʹݻ༗ͷϓϩϏδϣχϯάπʔϧ ϞχλϦϯάख๏͕ొ͢ΔΑ͏ʹͳͬͨ • OS্ͰϛυϧΣΞΛ࣮ߦ͢ΔͷͰͳ͘ɺϛυϧΣΞΛ
αʔϏεͱͯ͠ར༻͢Δܗଶ͕ొͨ͠ • ݩͷϛυϧΣΞ͕ಉ͡Ͱɺ੍ػೳͳͲ͕ͦΕͧΕͷϚ ωʔδυαʔϏεɺݩͷϛυϧΣΞͰҟͳΔΑ͏ʹͳͬͨ • αʔόϨεͳͲɺ΄΅αʔϏεར༻લఏͷΞʔΩςΫνϟͳͲ
࣮ߦڥͷଟ༷Խ ~ίϯςφٕज़~ • αʔόOS୯ҐͰͳ͘ɺΞϓϦέʔγϣϯ୯ҐͰͷ͕༰ қʹͳͬͨ • FaaSɺαʔόϨεͳͲɺΫϥυαʔϏεͳͲʹେ͖ͳӨڹ Λ༩͑ͨ • ίϯςφ্ͰϛυϧΣΞΛ࣮ߦ͢Δܗଶ͕ੜͨ͠
• DockerͳͲίϯςφΤϯδϯຖʹ࣮ߦܗଶ͕ҟͳΓɺϓϩϏ δϣχϯάͳͲҟͳΔΑ͏ʹͳͬͨ • γεςϜίϯςφΞϓϦέʔγϣϯίϯςφͳͲίϯςφࣗ ମͷ࣮ߦܗଶίϯςφΤϯδϯຖʹଟ༷Խ
࣮ߦڥͷଟ༷Խ • OS্ͰϛυϧΣΞ͕ಈ͘ͷ͕͋ͨΓ·͔͑Β • OS্Ͱಈ͔͢ɺίϯςφ্Ͱಈ͔͢ɺޓͷΫϥυαʔ ϏεΛར༻͢ΔͳͲଟ༷Խ • WebΞϓϦέʔγϣϯɺϓϩϏδϣχϯάɺϞχλϦϯά ͳͲɺࣄ߲ܗଶͷଟ༷ԽʹΑΓมԽ •
ΠϯϑϥΞʔΩςΫνϟ͜ͷଟ༷ԽΛແࢹ͢Δ͜ͱͰ ͖ͳ͍
طଘͷΠϯϑϥΞʔΩςΫνϟ
3ΞʔΩςΫνϟ
3ΞʔΩςΫνϟ • αʔόΫϥΠΞϯτϞσϧͷγεςϜΞʔΩςΫνϟ • ࠷ॳظͷWebΞϓϦέʔγϣϯͷιϑτΣΞΞʔΩς ΫνϟͰ͋Δ • αʔόԾԽٕज़ͷීٴҎલ͔Βଘࡏ • ݱࡏɺ3ΞʔΩςΫνϟΛجຊʹෳࡶԽ
• WebαʔόͷલޙΖʹΩϟογϡαʔό • ॲཧ͕ҟͳΔෳͷΞϓϦέʔγϣϯαʔό • DBαʔόͱͯ͠RDBͱKVSͷซ༻ • ͜ͷෳࡶԽͨ͠ͷΛϩʔϧׂΞʔΩςΫνϟͱ͢Δ
ϩʔϧׂΞʔΩςΫνϟ
ϩʔϧׂΞʔΩςΫνϟ • αʔόԾԽٕज़ϛυϧΣΞͷछྨ͕ଟ༷Խ • ϛυϧΣΞΞϓϦέʔγϣϯ͝ͱʹαʔόΛ ͠ɺͦΕͧΕΛ࿈ܞͤ͞Δ • ͦΕͧΕͷϩʔϧʹΑׂͬͯ͢Δ • αʔόϛυϧΣΞͷ૿ՃʹΑΓɺϓϩϏδϣχ
ϯάπʔϧϞχλϦϯάπʔϧͷॏཁੑ͕૿Ճ αʔόԾԽʹΑΔΦʔτεέʔϦϯάٕज़ؔ࿈
ϩʔϧׂΞʔΩςΫνϟͷྫ
ϩʔϧׂΞʔΩςΫνϟͱ࣮ߦڥͷଟ༷Խ • ϛυϧΣΞΞϓϦέʔγϣϯͷ࣮ߦڥඞͣࣗ͠ ͕ͨͪཧ͍ͯ͠ΔαʔόͰͳ͘ͳͬͨ • ࣌ͷϓϩϏδϣχϯάπʔϧϞχλϦϯάπʔϧαʔ ό্Ͱಈ࡞͢ΔSSHͳͲΛར༻͢Δ͜ͱ͕ଟ͔ͬͨ • ϚωʔδυαʔϏεͰఏڙ͞ΕͨAPIαʔϏεͷར༻ •
CloudformationͳͲ • ίϯςφͰίϯςφΤϯδϯ͕༻ҙͨ͠πʔϧͷར༻ • DockerfileͳͲ
ϩʔϧׂΞʔΩςΫνϟͱ࣮ߦڥͷଟ༷Խ • WebαʔϏεʹඞཁͳϛυϧΣΞΛચ͍ग़͠ɺͦΕ ͧΕผͷαʔόʹ͢Δ • ͦΕΒͷαʔόͷӡ༻ɺཧख๏ผʹݕ౼͢Δ • ඞཁͳϛυϧΣΞɺαʔϏεΛWebαʔϏεͷཁ ݅ɺ࣮ߦڥʹΑΔӡ༻ɺཧख๏ͷ੍ߟྀͭ͠ ͭόϥϯεྑ͘બ͢Δ
ϩʔϧׂΞʔΩςΫνϟͱ࣮ߦڥͷଟ༷Խ
ݱࡏͷϩʔϧׂΞʔΩςΫνϟͷྫ http://hb.matsumoto-r.jp/draft/-fgEmqKH1dnuQR79TLBXmUfWeIE
ଟ༷ԽͷରԠ • WebαʔϏεͷཁ݅Λຬͨ͢ϛυϧΣΞΛࣗ༝ʹΈ߹Θͤ ͍͍ͯͨ • ͔͠͠ɺ࣮ߦڥͷଟ༷Խɺར༻ܗଶͷଟ༷ԽʹΑΓɺαʔό αʔϏεɺϛυϧΣΞΛԣஅ͢Δ(ྫ͑ɺϓϩϏδϣχ ϯάख๏)ͳͲͷߟྀࣄ߲͕ΑΓ૿Ճ • ͳΜ͔ιϑτΣΞΞʔΩςΫνϟͱࣅͨΑ͏ͳͰͳ͍
ͷ͔? • ͦͷ··ద༻Ͱ͖ͳ͍ʹͯ͠ιϑτΣΞΞʔΩςΫνϟ͕ ࢀߟʹͳΔͷͰ?
ιϑτΣΞΞʔΩςΫνϟͱͦͷมભ
ιϑτΣΞΞʔΩςΫνϟͱͦͷมભ • ࣗಈςετ֎෦ϓϩάϥϜɺαʔϏεͷར༻ • ϢʔβΠϯλʔϑΣʔεͱϏδωεϩδοΫͷ • DBͳͲΠϯϑϥετϥΫνϟʔͷ • ϨΠϠʔυΞʔΩςΫνϟʹΑΔվળ •
ϨΠϠʔͷՃϨΠϠʔൣғͷ࠶ఆٛ • UI -> Application -> Domain -> infrastructure • UI͚ͩͰͳ͘Infrastructure͔Β͕ඞཁ • Infrastructure͕૿͑Δ͜ͱͷରԠ(MySQL,PostgreSQL) • ଆ(application, Domain)ͱ֎ଆ(UI,Infrastructure)ͷ
ϔΩαΰφϧΞʔΩςΫνϟ(2005) http://alistair.cockburn.us/Hexagonal+architecture
ΦχΦϯΞʔΩςΫνϟ(2008) http://jeffreypalermo.com/blog/the-onion-architecture- part-1/
ΫϦʔϯΞʔΩςΫνϟ(2012) https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean- architecture.html
ιϑτΣΞΞʔΩςΫνϟͱͦͷมભ • ΑΓૄ݁߹ͳΞʔΩςΫνϟมԽ͍ͯͬͨ͠ • ଟ༷ͳαʔϏεɺιϑτΣΞಉ࢜ͷ࿈ܞͷରԠ • ࣗಈςετɺCIͳͲͷରԠ • ্هରԠͷͨΊͷ։ൃͷݮ •
ϨΠϠʔߏ͔Βಉ৺ԁঢ়ͷߏมԽ͍ͯͬͨ͠ • ্͔ΒԼͰͳ͘ɺ͔Β֎ • σʔλͷྲྀΕॲཧͷྲྀΕɺར༻͢Δ͞ΕΔͰͳ ͘ɺ͔ࣗଞਓ͔
ΠϯϑϥΞʔΩςΫνϟͷԠ༻
ΠϯϑϥΞʔΩςΫνϟͷԠ༻ • ϛυϧΣΞ࣮ߦڥͷଟ༷Խ • Infrastructure͔Βͷ • ϛυϧΣΞଟ༷Խ • ଟ༷ͳαʔϏεɺιϑτΣΞಉ࢜ͷ࿈ܞͷରԠ •
ϓϩϏδϣχϯάπʔϧɺϞχλϦϯάͷରԠ • ࣗಈςετɺCIͳͲͷରԠ
ϨΠϠʔυΞʔΩςΫνϟ • UI -> Middleware -> Infrastructure • UI •
MySQLϓϩτίϧ • Middleware • MySQL, RDS, Aurora • Infrastructure • OS, ίϯςφ, AWS
ϨΠϠʔυΞʔΩςΫνϟ ϓϩϏδϣχϯάπʔϧInfrastructureͷଓ WebΞϓϦέʔγϣϯUIͷଓ
ΦχΦϯΞʔΩςΫνϟ
ΠϯϑϥΦχΦϯΞʔΩςΫνϟ
ΠϯϑϥΦχΦϯΞʔΩςΫνϟ • Infrastructure, UI, MiddlewareService • ࣮ߦڥͷଟ༷ԽΛΧόʔ • MiddlewareɺDomain •
ϛυϧΣΞ࣮ • WebαʔϏεͷཁ݅ • “”Ͱ͋ΔDomain,Middlewareͷબ • ࣮ߦڥଟ༷ԽͱϓϩϏδϣχϯάπʔϧ • ”֎”ͱͷଓͱෳࡶ͞ͷදݱ
ΠϯϑϥΦχΦϯΞʔΩςΫνϟͷྫ
ΠϯϑϥΦχΦϯΞʔΩςΫνϟͷྫ
ΠϯϑϥΦχΦϯΞʔΩςΫνϟͷྫ
ΠϯϑϥΦχΦϯΞʔΩςΫνϟ • ϛυϧΣΞͷ࣮ߦڥଟ༷ԽͱɺϓϩϏδϣχϯάπʔ ϧͱͷؔʹண͠ɺιϑτΣΞΞʔΩςΫνϟΛԠ༻ ͨ͠Λߟ͑ͨ • ࠓޙߋʹɺιϑτΣΞͷςετͷΑ͏ʹΠϯϑϥCI ϞχλϦϯάͳͲՃ͍ͨ͠ • ιϑτΣΞΞʔΩςΫνϟͱҟͳΔͱ͜Ζ݁ߏ͋Δ
ͷͰ͕ͦ͜Ͳ͏ͳΔ͔ • ϛυϧΣΞ୯ମͰͳͦ͘ΕΒΛΈ߹ΘͤͨΠϯϑϥΞʔ ΩςΫνϟʹ·ͰԠ༻Λ͍͛ͨ
·ͱΊ
·ͱΊͱࠓޙͷํ • WebαʔϏεͷશମߏͷΠϯϑϥΞʔΩςΫνϟ • ϛυϧΣΞɺAppͳͲͷ࣮ߦڥͷଟ༷Խʹద༻ • WebΞϓϦέʔγϣϯཁ͚݅ͩͰͳ͘ɺϓϩϏδϣχ ϯάɺϞχλϦϯάͳͲߟྀ͢Δඞཁ͋Γ • طଘͷιϑτΣΞΞʔΩςΫνϟΛར༻ͯ͠ɺΠϯϑϥΞʔ
ΩςΫνϟΛݕ౼ͨ͠ • ݕ౼ͨ͠༰Λͬͱվળɺ֦ுͯ͠༗༻ੑΛࣔͯ͠ߦ͖͍ͨ
ٞ༰ • ΞʔΩςΫνϟͱ͍͏ΑΓͲͪΒ͔ͱ͍͏ͱUMLͷΑ͏ͳͷʹ ͍͔ۙ? ◦ ґଘͷՄࢹԽΛߦͳ͍ɺબΛ༰қʹ͢Δͱ͍͏؍ͰUMLͷ ΄͏͕͍ۙؾ͢Δɻ ◦ ࣮ࡍʹ࣮͢ΔΘ͚Ͱͳ͍ͷͰ͜ͷลͦͷ··ΞʔΩςΫ νϟͱͯ࣋ͬͯ͘͠Δͱҧײ͕͋Δ͔
• ϓϩϏδϣχϯάπʔϧͷΑ͏ͳӡ༻ཧπʔϧϛυϧΣΞͱ গ͠ҧ͏ಉ৺ԁঢ়͔? • ϓϩϏδϣχϯά͚ͩͰͳ͘ϞχλϦϯάೖΕ͍ͨ ◦ ݱঢ়্ख͍ܗ͕ݟ͔ͭΒͣ͏গ͠ཧ͕ඞཁͦ͏ ◦ ͳʹ͔͍͍Ҋ͕ແ͍ͩΖ͏͔ • ͏গ͠ཧ͞ΕΔͱ໘നͦ͏Ͱ৽نੑ༗༻ੑݟ͑ͯ͘Δؾ͕͠ ͍ͯΔ