Share
Embed
エンジニアリング組織アーキテクチャの調査と設計要点に対する考察 / Investigation of engineering organization architecture and consideration of design points
第5回 Web System Architecture 研究会 (WSA研) の発表資料です。
https://websystemarchitecture.hatenablog.jp/entry/2019/07/30/172650
Narimichi Takamura
September 28, 2019
Transcript
32 slides
-
ΤϯδχΞϦϯά৫ΞʔΩςΫνϟͷ ௐࠪͱઃܭཁʹର͢Δߟ גࣜձࣾϋʔτϏʔπ VP of Engineering ߴଜ ಓʢ@nari_exʣ ୈ 5
ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 1 -
ࣗݾհ • Takamura Narimchi / ߴଜ ಓ • @nari_ex •
גࣜձࣾϋʔτϏʔπ औక VP of Engineering • ిؾ௨৴େֶ • ใཧֶ෦ใɾ௨৴ֶՊ ֶ࢜ • άϩʔϏεܦӦେֶӃ • ܦӦݚڀՊܦӦઐ߈ म࢜ʢMBAʣ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 2 -
࣍ • എܠͱ՝ • දతͳ৫ߏͱ։ൃख๏ͷௐࠪ • ৫ͱɺ৫ͷڥքͱ • ·ͱΊ ୈ
5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 3 -
എܠͱ՝ • Web γεςϜͷʹ͍ɺෳࡶ͕͞૿Ճ • ৫ؒͷ࿈ܞෆʹىҼ༷ͯ͠ʑͳ͕ൃੜ • Web γεςϜͷϑΣʔζʹ͓͍ͯɺΤϯδχΞϦϯά৫ ͷύϑΥʔϚϯεͱεέʔϥϏϦςΟ͕ϘτϧωοΫʹ
• ΤϯδχΞϦϯά৫ͷઃܭʹ͓͍ͯମܥԽ͞Εͨݟ͕͠ ͍ͨΊɺख୳ΓͰߦ͏͜ͱ͕ଟ͍ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 4 -
දతͳ৫ߏͱ։ൃख๏ͷௐࠪ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) |
Takamura Narimichi (@nari_ex) 5 -
ܦӦֶʹొ͢Δදతͳ৫ߏ • ػೳผ৫ • ࣄۀ෦੍৫ • ϓϩδΣΫτνʔϜܕ৫ => ΤϯδχΞϦϯά৫ͱ͍͏จ຺͕ͳ͍͕ෆे ୈ
5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 6 -
දతͳ Web γεςϜΞʔΩςΫνϟͱ৫ߏ • ϞϊϦε • ϚΠΫϩαʔϏε ୈ 5 ճ
Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 7 -
ϞϊϦεͷ৫ߏ • యܕతͳڞ༗DBϞσϧ • ϑϩϯτΤϯυ։ൃɺόοΫΤϯυ։ൃɺ DBAɺOps ͱ͍͏Α͏ʹػೳผ৫Ͱߏ ͞Ε͍ͯΔ߹ʹ࠾༻͞ΕΔ͜ͱ͕ଟ͍ • ٕज़՝:
DB पΓͷॲཧੑೳมߋίε τ͕։ൃͷϘτϧωοΫʹͳΔ • ৫՝: ෦ؒͷαΠϩԽ͕ൃੜ͢͠ ͍ɺڞ༗ϦιʔεΛ࣋ͭ৫ʢDBAɺ Opsʣʹෛՙ͕ूத͢Δ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 8 -
ิ: ίϯΣΠͷ๏ଇʢConway’s Lawʣ ʮγεςϜΛઃܭ͢Δ৫ɺͦͷߏΛͦͬ͘Γ·Ͷͨߏͷ ઃܭΛੜΈग़ͯ͠͠·͏ʯ ୈ 5 ճ Web System
Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 9 -
ϚΠΫϩαʔϏεͷ৫ߏ • ٯίϯΣΠઓུʹΑΓɺαʔϏε͝ͱʹνʔ ϜΛߏ͢Δ • ٕज़՝: αʔϏεؒ௨৴ࣦഊͷέΞτϥϯ βΫγϣϯͷෳࡶԽͳͲɺαʔϏε͕ࢄͨ͠ ͜ͱʹΑΔσϝϦοτ͕ੜ͡Δ •
৫՝: • ൣғ͕αʔϏεશମʹͳΔͨΊɺཁٻ͞ ΕΔٕज़ྖҬ͕֦େ͢Δ • ୲αʔϏεΛෳ࣋ͭ߹ʹɺաෛՙʹ ͳΔνʔϜϝϯόʔ͕ੜ͡ΔՄೳੑ͕͋Δ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 10 -
ิ: ٯίϯΣΠઓུʢInverse Conway Maneuverʣ ιϑτΣΞͷߏ͕৫ͷߏʹө͢Δ ୈ 5 ճ Web System
Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 11 -
DevOpsʁ SREʁ • DevOps: ৫αΠϩͷղফΛతͱͨ͠ந֓೦ • ந͕ߴ͘৫ΞʔΩςΫνϟͷઃܭ·Ͱམͱ͠ࠐΉ͜ͱ ͕͍͠ • SRE:
৫αΠϩͱӡ༻ٕज़ऀͷઢܗ૿ՃΛղফ͢ΔͨΊͷٕज़ ख๏ • ΤϯδχΞϦϯά৫ͱ͍͏είʔϓෆద ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 12 -
͜͜·Ͱͷ·ͱΊ • ϞϊϦεͱϚΠΫϩαʔϏεΛ࠾༻ͨ͠߹ͷ৫ߏཧղ Ͱ͖Δ͕ɺҰํͰରΞʔΩςΫνϟΛ࠾༻͠ͳ͍৫ͷઃܭ ʹ͏·͘Ԡ༻Ͱ͖ͳ͍ • => ͳʹ͕ॏཁͳͷ͔ΛೝࣝͰ͖͍ͯͳ͍ • DevOps
SRE Λݩʹ৫ઃܭΛߦ͏͜ͱ͍͠ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 13 -
ΰʔϧ • Web γεςϜͷ։ൃΛߦ͏ΤϯδχΞϦϯά৫ͷΞʔΩςΫ νϟઃܭʹඞཁͳཁΛମܥతʹ·ͱΊΔ ୈ 5 ճ Web System
Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 14 -
ิ: ৫Ϛωδϝϯτʹ͓͚Δ৫ߏͷҐஔؔ จԽਓࣄ੍ͳͲείʔϓʹؚ·Εͳ͍͜ͱʹҙɻ ୈ 5 ճ Web System Architecture ݚڀձ
(2019/09/28) | Takamura Narimichi (@nari_ex) 15 -
৫ΞʔΩςΫνϟͷઃܭͱ... ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) |
Takamura Narimichi (@nari_ex) 16 -
৫ͱ... 2ਓҎ্ͷਓʑͷɺҙࣝతʹௐ͞Εͨॾ׆ಈɺॾྗͷମܥ1 όʔφʔυͷ৫ʹ͓͚Δ৫ͷఆ͔ٛΒಘΒΕͨॏཁͳؚҙҎԼͷ௨Γɻ • ৫Λߏ͢ΔཁૉɺਓؒͦͷͷͰͳ͘ɺਓ͕ؒఏڙ͢Δ׆ಈྗͰ ͋Δ͜ͱ • ৫Λߏ͢Δॾ׆ಈɾॾྗɺମܥʢγεςϜʣͱͯ͠ޓ͍ʹ૬ޓ࡞ ༻Λͭ͜ͱ 1
[Barnard, ܦӦऀͷׂ, 1938] ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 17 -
৫ͷڥքͷछྨ Ұൠతͳ৫ਤͷఆٛҎ֎ʹ׆ಈൣғ͝ͱʹఆٛ͞ΕΔ2ͭͷڥք͕͋Δ2 ৫ͷू߹ମͷύϑΥʔϚϯεୈೋɺୈࡾͷڥքΛ͍͔ʹίϯτϩʔϧ͢Δ͔͕ॏ ཁͱͳΔ3 1. ୈҰڥք: ݫີͳʮ৫ʯ֓೦ʹͱͮ͘ڥք 2. ୈೋڥք: υϝΠϯͱͯ͠ͷڥք
3. ୈࡾڥք: ҙࣝతௐͷٴͿൣғͱͯ͠ͷڥք 3 Niels Pflaeging, Organize for Complexity, 2014 2 ܂ాߞଠɾాඌխ, "৫", 2010 ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 18 -
৫ͷڥք4 4 Team Topology, Ma.hew SkeltonɾManuel Pais, 2019 ୈ 5
ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 19 -
ίϯΣΠͷ๏ଇɺٯίϯΣΠઓུ͔Βͷֶͼ • ৫ͷߏʹҰఆͷنଇ͕ඞཁʹͳΔ • ͯ͢ͷίϛϡχέʔγϣϯͱίϥϘϨʔγϣϯ͕ྑ͍ͱݶΒͳ͍ • ෳࡶͳΛղܾ͢Δ͏͑Ͱ࠷ߴͷूஂύϑΥʔϚϯεΛ࣮ݱ͢Δʹ ɺٕज़ͱ৫Λ࠶ઃܭͯ͠ɺਓʑΛޓ͍ͷ࡞ۀ͔Βஅଓతʹ͢Δ ඞཁ͕͋Δ •
=> ৫ɾ֎ͷίϛϡχέʔγϣϯύεͷॏཁੑ • ͋Δ৫ؒີʹɺ͋Δ৫ؒૄʹ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 20 -
৫ؒͷ૬ޓ࡞༻ͷଳҬ4 4 Team Topology, Ma.hew SkeltonɾManuel Pais, 2019 ୈ 5
ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 21 -
ΤϯδχΞϦϯά৫ΞʔΩςΫνϟઃܭͷཁ • ৫ʢਓͷ׆ಈʣͷڥքʢൣғʣΛ۩ମԽ͢Δ͜ͱ • ৫ؒͷ૬ޓ࡞༻ͷྲྀΕΛ۩ମԽ͢Δ͜ͱ => ͜ͷཻͰ·࣮ͩફతͰͳ͍ͨΊɺ͞Βʹ۩ମԽΛࢼΈΔ ୈ 5 ճ
Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 22 -
team-sized architecture4 • Monoliths vs Microservices is Missing the Point
• Start with Team Cogni7ve Load • 2019/09/17 ʹग़൛͞Εͨຊ 4 Team Topology, Ma.hew SkeltonɾManuel Pais, 2019 ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 23 -
team-sized architecture • νʔϜΛ୯ʹಉ͡ϚωʔδϟʔΛ࣋ͭݸਓͷू·ΓͰͳ͘ɺಠࣗͷֶशɺඪɺϛογϣ ϯɺ͓Αͼ߹ཧతͳࣗੑΛ࣋ͭΤϯςΟςΟͷू·Γͱఆٛ • 7ʙ9໊ఔͷνʔϜΛ৫ͷجຊ୯Ґͱ͢Δ • νʔϜͷʹΑͬͯڥքΛ໌֬ʹ͢Δ •
৫ͷਐԽΛײͯ͠׆ಈΛमਖ਼͢Δ • νʔϜͷೝෛՙʢCogni&ve LoadʣͷΩϟύγςΟʹ߹ΘͤͯνʔϜͷΛ੍ݶ͢Δ • 4ͭͷνʔϜλΠϓ • 3ͭͷ૬ޓ࡞༻λΠϓ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 24 -
team-sized architecture: 4ͭͷνʔϜλΠϓ Stream-aligned νʔϜ৫ͷओཁͳνʔϜλΠϓͰ͋ΓɺଞͷνʔϜɺStream-aligned νʔϜͷෛ୲Λܰݮ͢Δ͜ͱͰ͢ɻ • Stream-aligned νʔϜ •
୯Ұͷ·ͨαʔϏεɺ୯Ұͷػೳηοτɺ୯ҰͷϢʔβʔδϟʔχʔɺ·ͨ୯ҰͷϢʔβʔϖϧιφͷ࡞ۀϑϩʔ Λ୲͢Δ • Enabling νʔϜ • υϝΠϯ͕ࣝඞཁͳ࡞ۀϑϩʔͷࢧԉΛ୲͢Δ • Complicated-subsystem νʔϜ • ෳࡶͳαϒγεςϜͷࢧԉΛ୲͢Δ • Pla9orm νʔϜ • ηϧϑαʔϏεAPIɺπʔϧɺαʔϏεɺࣝɺαϙʔτͷج൫Λ୲͢Δ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 25 -
team-sized architecture: 3ͭͷ૬ޓ࡞༻ͷλΠϓ • Collabora(on • ผͷνʔϜͱۓີʹ࿈ܞ͢Δ • X-as-a-Service •
࠷খݶͷίϥϘϨʔγϣϯͰԿ͔Λফඅ·ͨఏڙ͢Δ • Facilita(ng • ଞͷνʔϜΛࢧԉʢ·ͨࢧԉʣͯ͠োΛղফ͢Δ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 26 -
team-sized architetcture: ࣮ྫ 4 4 Team Topology, Ma.hew SkeltonɾManuel Pais,
2019 ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 27 -
team-sized architecture ͷݒ೦ • ҎԼͷΑ͏ͳݒ೦͕ڍ͛ΒΕΔ • ೝෛՙͷఆ͕ࣄલʹఆ͠ʹ͍͘ • ೝෛՙʹରͯ͠ेͳਓతϦιʔεͷڙڅ͕Ͱ͖ͳ͍߹ ʹࠞཚ͕ൃੜ͢Δ
ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 28 -
ΤϯδχΞϦϯά৫ΞʔΩςΫνϟઃܭͷجຊࢥ • νʔϜΛ࠷খͷ୯Ґͱͯ͠ઃܭ͢Δ • υϝΠϯαʔϏεͳͲɺϏδωεϩδοΫΛىͱͨ͠ൣғ ΛνʔϜͷൣғͱҰகͤ͞Δ • ͜ΕʹΑΓػೳαΠϩΛආ͚Δ • ωοτϫʔΫ௨৴ͱಉ༷ʹ৫ؒͷίϛϡχέʔγϣϯܦ࿏ͷ
ଳҬΛҙࣝ͢Δ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 29 -
ΤϯδχΞϦϯά৫ΞʔΩςΫνϟͷઃܭͷཁ νʔϜ୯ҐͰۀΛߦ͏͜ͱΛલఏʹͨ͠߹ɺҎԼͷཁ͕৫ΞʔΩςΫνϟઃܭʹཱͭ 1. ৫ʢਓͷ׆ಈʣͷڥքʢൣғʣΛ۩ମԽ͢Δ • 3ͭͷڥքΛઃܭ͢Δ • νʔϜͷڥքʢൣғʣ • υϝΠϯͷڥք
• νʔϜؒɺݸਓؒͷڥքΛ۩ମԽ͢Δ 2. ৫ؒͷ૬ޓ࡞༻ͷྲྀΕΛܾΊΔ͜ͱ • ৫ؒ͝ͱʹظ͢Δ૬ޓ࡞༻ͷγʔϯසΛఆٛ͢Δ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 30 -
ิ: ࣮ڥքͷௐ ֤ڥքͷ࣮ڥքҎԼͷΑ͏ͳઃఆʹΑͬͯߦΘΕɺνʔϜɾݸਓͷ׆ಈʹ େ͖ͳӨڹΛ༩͑ΔͨΊɺߟྀʹ͍ΕΔͱΑ͍ • ΦϑΟεϨΠΞτ • σδλϧεϖʔε • νϟοτͷνϟϯωϧ
• Wiki • ϒϩά ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 31 -
·ͱΊ • Ұൠతͳ৫ߏͱओཁͳιϑτΣΞ։ൃख๏ͷௐࠪΛ͠· ͨ͠ • ৫ઃܭΛߦ͏ࡍʹॏཁͱͳΔجຊతͳࢥͱઃܭͷཁΛ· ͱΊ·ͨ͠ ୈ 5 ճ
Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 32