エンジニアリング組織アーキテクチャの調査と設計要点に対する考察 / Investigation of engineering organization architecture and consideration of design points

エンジニアリング組織アーキテクチャの調査と設計要点に対する考察 / Investigation of engineering organization architecture and consideration of design points

第5回 Web System Architecture 研究会 (WSA研) の発表資料です。
https://websystemarchitecture.hatenablog.jp/entry/2019/07/30/172650

C236ca44c4fc873f80f97b5cf8a775df?s=128

TAKAMURA Narimichi

September 28, 2019
Tweet

Transcript

  1. ΤϯδχΞϦϯά૊৫ΞʔΩςΫνϟͷ ௐࠪͱઃܭཁ఺ʹର͢Δߟ࡯ גࣜձࣾϋʔτϏʔπ VP of Engineering ߴଜ ੒ಓʢ@nari_exʣ ୈ 5

    ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 1
  2. ࣗݾ঺հ • Takamura Narimchi / ߴଜ ੒ಓ • @nari_ex •

    גࣜձࣾϋʔτϏʔπ औక໾ VP of Engineering • ిؾ௨৴େֶ • ৘ใཧ޻ֶ෦৘ใɾ௨৴޻ֶՊ ֶ࢜ • άϩʔϏεܦӦେֶӃ • ܦӦݚڀՊܦӦઐ߈ म࢜ʢMBAʣ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 2
  3. ໨࣍ • എܠͱ՝୊ • ୅දతͳ૊৫ߏ଄ͱ։ൃख๏ͷௐࠪ • ૊৫ͱ͸ɺ૊৫ͷڥքͱ͸ • ·ͱΊ ୈ

    5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 3
  4. എܠͱ՝୊ • Web γεςϜͷ੒௕ʹ൐͍ɺෳࡶ͕͞૿Ճ • ૊৫ؒͷ࿈ܞෆ଍ʹىҼ༷ͯ͠ʑͳ໰୊͕ൃੜ • Web γεςϜͷ੒௕ϑΣʔζʹ͓͍ͯɺΤϯδχΞϦϯά૊৫ ͷύϑΥʔϚϯεͱεέʔϥϏϦςΟ͕ϘτϧωοΫʹ

    • ΤϯδχΞϦϯά૊৫ͷઃܭʹ͓͍ͯମܥԽ͞Εͨ஌ݟ͕๡͠ ͍ͨΊɺख୳ΓͰߦ͏͜ͱ͕ଟ͍ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 4
  5. ୅දతͳ૊৫ߏ଄ͱ։ൃख๏ͷௐࠪ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) |

    Takamura Narimichi (@nari_ex) 5
  6. ܦӦֶʹొ৔͢Δ୅දతͳ૊৫ߏ଄ • ػೳผ૊৫ • ࣄۀ෦੍૊৫ • ϓϩδΣΫτνʔϜܕ૊৫ => ΤϯδχΞϦϯά૊৫ͱ͍͏จ຺͕ͳ͍఺͕ෆे෼ ୈ

    5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 6
  7. ୅දతͳ Web γεςϜΞʔΩςΫνϟͱ૊৫ߏ଄ • ϞϊϦε • ϚΠΫϩαʔϏε ୈ 5 ճ

    Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 7
  8. ϞϊϦεͷ૊৫ߏ଄ • యܕతͳڞ༗DBϞσϧ • ϑϩϯτΤϯυ։ൃɺόοΫΤϯυ։ൃɺ DBAɺOps ͱ͍͏Α͏ʹػೳผ૊৫Ͱߏ ੒͞Ε͍ͯΔ৔߹ʹ࠾༻͞ΕΔ͜ͱ͕ଟ͍ • ٕज़՝୊:

    DB पΓͷॲཧੑೳ΍มߋίε τ͕։ൃͷϘτϧωοΫʹͳΔ • ૊৫՝୊: ෦໳ؒͷαΠϩԽ͕ൃੜ͠΍͢ ͍ɺڞ༗ϦιʔεΛ࣋ͭ૊৫ʢDBAɺ Opsʣʹෛՙ͕ूத͢Δ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 8
  9. ิ଍: ίϯ΢ΣΠͷ๏ଇʢConway’s Lawʣ ʮγεςϜΛઃܭ͢Δ૊৫͸ɺͦͷߏ଄Λͦͬ͘Γ·Ͷͨߏ଄ͷ ઃܭΛੜΈग़ͯ͠͠·͏ʯ ୈ 5 ճ Web System

    Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 9
  10. ϚΠΫϩαʔϏεͷ૊৫ߏ଄ • ٯίϯ΢ΣΠઓུʹΑΓɺαʔϏε͝ͱʹνʔ ϜΛߏ੒͢Δ • ٕज़՝୊: αʔϏεؒ௨৴ࣦഊͷέΞ΍τϥϯ βΫγϣϯͷෳࡶԽͳͲɺαʔϏε͕෼ࢄͨ͠ ͜ͱʹΑΔσϝϦοτ͕ੜ͡Δ •

    ૊৫՝୊: • ੹೚ൣғ͕αʔϏεશମʹͳΔͨΊɺཁٻ͞ ΕΔٕज़ྖҬ͕֦େ͢Δ • ୲౰αʔϏεΛෳ਺࣋ͭ৔߹ʹ͸ɺաෛՙʹ ͳΔνʔϜ΍ϝϯόʔ͕ੜ͡ΔՄೳੑ͕͋Δ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 10
  11. ิ଍: ٯίϯ΢ΣΠઓུʢInverse Conway Maneuverʣ ιϑτ΢ΣΞͷߏ଄͕૊৫ͷߏ଄ʹ൓ө͢Δ ୈ 5 ճ Web System

    Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 11
  12. DevOpsʁ SREʁ • DevOps: ૊৫αΠϩͷղফΛ໨తͱͨ͠ந৅֓೦ • ந৅౓͕ߴ͘૊৫ΞʔΩςΫνϟͷઃܭ·Ͱམͱ͠ࠐΉ͜ͱ ͕೉͍͠ • SRE:

    ૊৫αΠϩͱӡ༻ٕज़ऀͷઢܗ૿ՃΛղফ͢ΔͨΊͷٕज़ ख๏ • ΤϯδχΞϦϯά૊৫ͱ͍͏είʔϓ͸ෆద౰ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 12
  13. ͜͜·Ͱͷ·ͱΊ • ϞϊϦεͱϚΠΫϩαʔϏεΛ࠾༻ͨ͠৔߹ͷ૊৫ߏ଄͸ཧղ Ͱ͖Δ͕ɺҰํͰର৅ΞʔΩςΫνϟΛ࠾༻͠ͳ͍૊৫ͷઃܭ ʹ͏·͘Ԡ༻Ͱ͖ͳ͍ • => ͳʹ͕ॏཁͳͷ͔ΛೝࣝͰ͖͍ͯͳ͍ • DevOps

    ΍ SRE Λݩʹ૊৫ઃܭΛߦ͏͜ͱ͸೉͍͠ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 13
  14. ΰʔϧ • Web γεςϜͷ։ൃΛߦ͏ΤϯδχΞϦϯά૊৫ͷΞʔΩςΫ νϟઃܭʹඞཁͳཁ఺Λମܥతʹ·ͱΊΔ ୈ 5 ճ Web System

    Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 14
  15. ิ଍: ૊৫Ϛωδϝϯτʹ͓͚Δ૊৫ߏ଄ͷҐஔؔ܎ จԽ΍ਓࣄ੍౓ͳͲ͸είʔϓʹؚ·Εͳ͍͜ͱʹ஫ҙɻ ୈ 5 ճ Web System Architecture ݚڀձ

    (2019/09/28) | Takamura Narimichi (@nari_ex) 15
  16. ૊৫ΞʔΩςΫνϟͷઃܭͱ͸... ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) |

    Takamura Narimichi (@nari_ex) 16
  17. ૊৫ͱ͸... 2ਓҎ্ͷਓʑͷɺҙࣝతʹௐ੔͞Εͨॾ׆ಈɺॾྗͷମܥ1 όʔφʔυͷ૊৫࿦ʹ͓͚Δ૊৫ͷఆ͔ٛΒಘΒΕͨॏཁͳؚҙ͸ҎԼͷ௨Γɻ • ૊৫Λߏ੒͢Δཁૉ͸ɺਓؒͦͷ΋ͷͰ͸ͳ͘ɺਓ͕ؒఏڙ͢Δ׆ಈ΍ྗͰ ͋Δ͜ͱ • ૊৫Λߏ੒͢Δॾ׆ಈɾॾྗ͸ɺମܥʢγεςϜʣͱͯ͠ޓ͍ʹ૬ޓ࡞ ༻Λ΋ͭ͜ͱ 1

    [Barnard, ܦӦऀͷ໾ׂ, 1938] ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 17
  18. ૊৫ͷڥքͷछྨ Ұൠతͳ૊৫ਤͷఆٛҎ֎ʹ΋׆ಈൣғ͝ͱʹఆٛ͞ΕΔ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
  19. ૊৫ͷڥք4 4 Team Topology, Ma.hew SkeltonɾManuel Pais, 2019 ୈ 5

    ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 19
  20. ίϯ΢ΣΠͷ๏ଇɺٯίϯ΢ΣΠઓུ͔Βͷֶͼ • ૊৫ͷߏ଄ʹ͸Ұఆͷنଇ͕ඞཁʹͳΔ • ͢΂ͯͷίϛϡχέʔγϣϯͱίϥϘϨʔγϣϯ͕ྑ͍ͱ͸ݶΒͳ͍ • ෳࡶͳ໰୊Λղܾ͢Δ͏͑Ͱ࠷ߴͷूஂύϑΥʔϚϯεΛ࣮ݱ͢Δʹ ͸ɺٕज़ͱ૊৫Λ࠶ઃܭͯ͠ɺਓʑΛޓ͍ͷ࡞ۀ͔Βஅଓతʹ෼཭͢Δ ඞཁ͕͋Δ •

    => ૊৫಺ɾ֎ͷίϛϡχέʔγϣϯύεͷॏཁੑ • ͋Δ૊৫ؒ͸ີʹɺ͋Δ૊৫ؒ͸ૄʹ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 20
  21. ૊৫ؒͷ૬ޓ࡞༻ͷଳҬ4 4 Team Topology, Ma.hew SkeltonɾManuel Pais, 2019 ୈ 5

    ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 21
  22. ΤϯδχΞϦϯά૊৫ΞʔΩςΫνϟઃܭͷཁ఺ • ૊৫ʢਓͷ׆ಈʣͷڥքʢൣғʣΛ۩ମԽ͢Δ͜ͱ • ૊৫ؒͷ૬ޓ࡞༻ͷྲྀΕΛ۩ମԽ͢Δ͜ͱ => ͜ͷཻ౓Ͱ͸·࣮ͩફతͰ͸ͳ͍ͨΊɺ͞Βʹ۩ମԽΛࢼΈΔ ୈ 5 ճ

    Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 22
  23. 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
  24. team-sized architecture • νʔϜΛ୯ʹಉ͡ϚωʔδϟʔΛ࣋ͭݸਓͷू·ΓͰ͸ͳ͘ɺಠࣗͷֶशɺ໨ඪɺϛογϣ ϯɺ͓Αͼ߹ཧతͳࣗ཯ੑΛ࣋ͭΤϯςΟςΟͷू·Γͱఆٛ • 7ʙ9໊ఔ౓ͷνʔϜΛ૊৫ͷجຊ୯Ґͱ͢Δ • νʔϜͷ੹೚ʹΑͬͯڥքΛ໌֬ʹ͢Δ •

    ૊৫ͷਐԽΛײ஌ͯ͠׆ಈΛमਖ਼͢Δ • νʔϜͷೝ஌ෛՙʢCogni&ve LoadʣͷΩϟύγςΟʹ߹ΘͤͯνʔϜͷ੹೚Λ੍ݶ͢Δ • 4ͭͷνʔϜλΠϓ • 3ͭͷ૬ޓ࡞༻λΠϓ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 24
  25. 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
  26. team-sized architecture: 3ͭͷ૬ޓ࡞༻ͷλΠϓ • Collabora(on • ผͷνʔϜͱۓີʹ࿈ܞ͢Δ • X-as-a-Service •

    ࠷খݶͷίϥϘϨʔγϣϯͰԿ͔Λফඅ·ͨ͸ఏڙ͢Δ • Facilita(ng • ଞͷνʔϜΛࢧԉʢ·ͨ͸ࢧԉʣͯ͠ো֐Λղফ͢Δ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 26
  27. 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
  28. team-sized architecture ͷݒ೦఺ • ҎԼͷΑ͏ͳݒ೦͕ڍ͛ΒΕΔ • ೝ஌ෛՙͷ૝ఆ͕ࣄલʹ૝ఆ͠ʹ͍͘ • ೝ஌ෛՙʹରͯ͠े෼ͳਓతϦιʔεͷڙڅ͕Ͱ͖ͳ͍৔߹ ʹࠞཚ͕ൃੜ͢Δ

    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 28
  29. ΤϯδχΞϦϯά૊৫ΞʔΩςΫνϟઃܭͷجຊࢥ૝ • νʔϜΛ࠷খͷ୯Ґͱͯ͠ઃܭ͢Δ • υϝΠϯ΍αʔϏεͳͲɺϏδωεϩδοΫΛى఺ͱͨ͠ൣғ ΛνʔϜͷ੹೚ൣғͱҰகͤ͞Δ • ͜ΕʹΑΓػೳαΠϩΛආ͚Δ • ωοτϫʔΫ௨৴ͱಉ༷ʹ૊৫ؒͷίϛϡχέʔγϣϯܦ࿏ͷ

    ଳҬΛҙࣝ͢Δ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 29
  30. ΤϯδχΞϦϯά૊৫ΞʔΩςΫνϟͷઃܭͷཁ఺ νʔϜ୯ҐͰۀ຿Λߦ͏͜ͱΛલఏʹͨ͠৔߹ɺҎԼͷཁ఺͕૊৫ΞʔΩςΫνϟઃܭʹ໾ཱͭ 1. ૊৫ʢਓͷ׆ಈʣͷڥքʢൣғʣΛ۩ମԽ͢Δ • 3ͭͷڥքΛઃܭ͢Δ • νʔϜͷڥքʢ੹೚ൣғʣ • υϝΠϯͷڥք

    • νʔϜؒɺݸਓؒͷڥքΛ۩ମԽ͢Δ 2. ૊৫ؒͷ૬ޓ࡞༻ͷྲྀΕΛܾΊΔ͜ͱ • ૊৫ؒ͝ͱʹظ଴͢Δ૬ޓ࡞༻ͷγʔϯ΍ස౓Λఆٛ͢Δ ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 30
  31. ิ଍: ࣮ڥքͷௐ੔ ֤ڥքͷ࣮ڥք͸ҎԼͷΑ͏ͳઃఆʹΑͬͯߦΘΕɺνʔϜɾݸਓͷ׆ಈʹ େ͖ͳӨڹΛ༩͑ΔͨΊɺߟྀʹ͍ΕΔͱΑ͍ • ΦϑΟεϨΠΞ΢τ • σδλϧεϖʔε • νϟοτͷνϟϯωϧ

    • Wiki • ϒϩά ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 31
  32. ·ͱΊ • Ұൠతͳ૊৫ߏ଄ͱओཁͳιϑτ΢ΣΞ։ൃख๏ͷௐࠪΛ͠· ͨ͠ • ૊৫ઃܭΛߦ͏ࡍʹॏཁͱͳΔجຊతͳࢥ૝ͱઃܭͷཁ఺Λ· ͱΊ·ͨ͠ ୈ 5 ճ

    Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 32