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

エンジニアリング組織アーキテクチャの調査と設計要点に対する考察 / 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

Takamura Narimichi

September 28, 2019
Tweet

More Decks by Takamura Narimichi

Other Decks in Technology

Transcript

  1. ΤϯδχΞϦϯά૊৫ΞʔΩςΫνϟͷ
    ௐࠪͱઃܭཁ఺ʹର͢Δߟ࡯
    גࣜձࣾϋʔτϏʔπ VP of Engineering
    ߴଜ ੒ಓʢ@nari_exʣ
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 1

    View Slide

  2. ࣗݾ঺հ
    • Takamura Narimchi / ߴଜ ੒ಓ
    • @nari_ex
    • גࣜձࣾϋʔτϏʔπ औక໾ VP of
    Engineering
    • ిؾ௨৴େֶ
    • ৘ใཧ޻ֶ෦৘ใɾ௨৴޻ֶՊ ֶ࢜
    • άϩʔϏεܦӦେֶӃ
    • ܦӦݚڀՊܦӦઐ߈ म࢜ʢMBAʣ
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 2

    View Slide

  3. ໨࣍
    • എܠͱ՝୊
    • ୅දతͳ૊৫ߏ଄ͱ։ൃख๏ͷௐࠪ
    • ૊৫ͱ͸ɺ૊৫ͷڥքͱ͸
    • ·ͱΊ
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 3

    View Slide

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

    View Slide

  5. ୅දతͳ૊৫ߏ଄ͱ։ൃख๏ͷௐࠪ
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 5

    View Slide

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

    View Slide

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

    View Slide

  8. ϞϊϦεͷ૊৫ߏ଄
    • యܕతͳڞ༗DBϞσϧ
    • ϑϩϯτΤϯυ։ൃɺόοΫΤϯυ։ൃɺ
    DBAɺOps ͱ͍͏Α͏ʹػೳผ૊৫Ͱߏ
    ੒͞Ε͍ͯΔ৔߹ʹ࠾༻͞ΕΔ͜ͱ͕ଟ͍
    • ٕज़՝୊: DB पΓͷॲཧੑೳ΍มߋίε
    τ͕։ൃͷϘτϧωοΫʹͳΔ
    • ૊৫՝୊: ෦໳ؒͷαΠϩԽ͕ൃੜ͠΍͢
    ͍ɺڞ༗ϦιʔεΛ࣋ͭ૊৫ʢDBAɺ
    Opsʣʹෛՙ͕ूத͢Δ
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 8

    View Slide

  9. ิ଍: ίϯ΢ΣΠͷ๏ଇʢConway’s Lawʣ
    ʮγεςϜΛઃܭ͢Δ૊৫͸ɺͦͷߏ଄Λͦͬ͘Γ·Ͷͨߏ଄ͷ
    ઃܭΛੜΈग़ͯ͠͠·͏ʯ
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 9

    View Slide

  10. ϚΠΫϩαʔϏεͷ૊৫ߏ଄
    • ٯίϯ΢ΣΠઓུʹΑΓɺαʔϏε͝ͱʹνʔ
    ϜΛߏ੒͢Δ
    • ٕज़՝୊: αʔϏεؒ௨৴ࣦഊͷέΞ΍τϥϯ
    βΫγϣϯͷෳࡶԽͳͲɺαʔϏε͕෼ࢄͨ͠
    ͜ͱʹΑΔσϝϦοτ͕ੜ͡Δ
    • ૊৫՝୊:
    • ੹೚ൣғ͕αʔϏεશମʹͳΔͨΊɺཁٻ͞
    ΕΔٕज़ྖҬ͕֦େ͢Δ
    • ୲౰αʔϏεΛෳ਺࣋ͭ৔߹ʹ͸ɺաෛՙʹ
    ͳΔνʔϜ΍ϝϯόʔ͕ੜ͡ΔՄೳੑ͕͋Δ
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 10

    View Slide

  11. ิ଍: ٯίϯ΢ΣΠઓུʢInverse Conway Maneuverʣ
    ιϑτ΢ΣΞͷߏ଄͕૊৫ͷߏ଄ʹ൓ө͢Δ
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 11

    View Slide

  12. DevOpsʁ SREʁ
    • DevOps: ૊৫αΠϩͷղফΛ໨తͱͨ͠ந৅֓೦
    • ந৅౓͕ߴ͘૊৫ΞʔΩςΫνϟͷઃܭ·Ͱམͱ͠ࠐΉ͜ͱ
    ͕೉͍͠
    • SRE: ૊৫αΠϩͱӡ༻ٕज़ऀͷઢܗ૿ՃΛղফ͢ΔͨΊͷٕज़
    ख๏
    • ΤϯδχΞϦϯά૊৫ͱ͍͏είʔϓ͸ෆద౰
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 12

    View Slide

  13. ͜͜·Ͱͷ·ͱΊ
    • ϞϊϦεͱϚΠΫϩαʔϏεΛ࠾༻ͨ͠৔߹ͷ૊৫ߏ଄͸ཧղ
    Ͱ͖Δ͕ɺҰํͰର৅ΞʔΩςΫνϟΛ࠾༻͠ͳ͍૊৫ͷઃܭ
    ʹ͏·͘Ԡ༻Ͱ͖ͳ͍
    • => ͳʹ͕ॏཁͳͷ͔ΛೝࣝͰ͖͍ͯͳ͍
    • DevOps ΍ SRE Λݩʹ૊৫ઃܭΛߦ͏͜ͱ͸೉͍͠
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 13

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  17. ૊৫ͱ͸...
    2ਓҎ্ͷਓʑͷɺҙࣝతʹௐ੔͞Εͨॾ׆ಈɺॾྗͷମܥ1
    όʔφʔυͷ૊৫࿦ʹ͓͚Δ૊৫ͷఆ͔ٛΒಘΒΕͨॏཁͳؚҙ͸ҎԼͷ௨Γɻ
    • ૊৫Λߏ੒͢Δཁૉ͸ɺਓؒͦͷ΋ͷͰ͸ͳ͘ɺਓ͕ؒఏڙ͢Δ׆ಈ΍ྗͰ
    ͋Δ͜ͱ
    • ૊৫Λߏ੒͢Δॾ׆ಈɾॾྗ͸ɺମܥʢγεςϜʣͱͯ͠ޓ͍ʹ૬ޓ࡞
    ༻Λ΋ͭ͜ͱ
    1 [Barnard, ܦӦऀͷ໾ׂ, 1938]
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 17

    View Slide

  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

    View Slide

  19. ૊৫ͷڥք4
    4 Team Topology, Ma.hew SkeltonɾManuel Pais, 2019
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 19

    View Slide

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

    View Slide

  21. ૊৫ؒͷ૬ޓ࡞༻ͷଳҬ4
    4 Team Topology, Ma.hew SkeltonɾManuel Pais, 2019
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 21

    View Slide

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

    View Slide

  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

    View Slide

  24. team-sized architecture
    • νʔϜΛ୯ʹಉ͡ϚωʔδϟʔΛ࣋ͭݸਓͷू·ΓͰ͸ͳ͘ɺಠࣗͷֶशɺ໨ඪɺϛογϣ
    ϯɺ͓Αͼ߹ཧతͳࣗ཯ੑΛ࣋ͭΤϯςΟςΟͷू·Γͱఆٛ
    • 7ʙ9໊ఔ౓ͷνʔϜΛ૊৫ͷجຊ୯Ґͱ͢Δ
    • νʔϜͷ੹೚ʹΑͬͯڥքΛ໌֬ʹ͢Δ
    • ૊৫ͷਐԽΛײ஌ͯ͠׆ಈΛमਖ਼͢Δ
    • νʔϜͷೝ஌ෛՙʢCogni&ve LoadʣͷΩϟύγςΟʹ߹ΘͤͯνʔϜͷ੹೚Λ੍ݶ͢Δ
    • 4ͭͷνʔϜλΠϓ
    • 3ͭͷ૬ޓ࡞༻λΠϓ
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 24

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  28. team-sized architecture ͷݒ೦఺
    • ҎԼͷΑ͏ͳݒ೦͕ڍ͛ΒΕΔ
    • ೝ஌ෛՙͷ૝ఆ͕ࣄલʹ૝ఆ͠ʹ͍͘
    • ೝ஌ෛՙʹରͯ͠े෼ͳਓతϦιʔεͷڙڅ͕Ͱ͖ͳ͍৔߹
    ʹࠞཚ͕ൃੜ͢Δ
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 28

    View Slide

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

    View Slide

  30. ΤϯδχΞϦϯά૊৫ΞʔΩςΫνϟͷઃܭͷཁ఺
    νʔϜ୯ҐͰۀ຿Λߦ͏͜ͱΛલఏʹͨ͠৔߹ɺҎԼͷཁ఺͕૊৫ΞʔΩςΫνϟઃܭʹ໾ཱͭ
    1. ૊৫ʢਓͷ׆ಈʣͷڥքʢൣғʣΛ۩ମԽ͢Δ
    • 3ͭͷڥքΛઃܭ͢Δ
    • νʔϜͷڥքʢ੹೚ൣғʣ
    • υϝΠϯͷڥք
    • νʔϜؒɺݸਓؒͷڥքΛ۩ମԽ͢Δ
    2. ૊৫ؒͷ૬ޓ࡞༻ͷྲྀΕΛܾΊΔ͜ͱ
    • ૊৫ؒ͝ͱʹظ଴͢Δ૬ޓ࡞༻ͷγʔϯ΍ස౓Λఆٛ͢Δ
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 30

    View Slide

  31. ิ଍: ࣮ڥքͷௐ੔
    ֤ڥքͷ࣮ڥք͸ҎԼͷΑ͏ͳઃఆʹΑͬͯߦΘΕɺνʔϜɾݸਓͷ׆ಈʹ
    େ͖ͳӨڹΛ༩͑ΔͨΊɺߟྀʹ͍ΕΔͱΑ͍
    • ΦϑΟεϨΠΞ΢τ
    • σδλϧεϖʔε
    • νϟοτͷνϟϯωϧ
    • Wiki
    • ϒϩά
    ୈ 5 ճ Web System Architecture ݚڀձ (2019/09/28) | Takamura Narimichi (@nari_ex) 31

    View Slide

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

    View Slide