ЁЯзй рдзрдбрд╛ 09 тАФ Team topologies рдЖрдгрд┐ Conway's law: team рдкреНрд░рдХрд╛рд░ рдЖрдгрд┐ cognitive load
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 09 ┬╖ рдорд╛рдЧрдЪрд╛: lesson-08-delivery-metrics ┬╖ рдкреБрдврдЪрд╛: lesson-10-incidents-decisions
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рдзрдбрд╛ 08, рдЖрдгрд┐ рдЯреАрдореНрд╕рдЪреА рд░рдЪрдирд╛. Conway's law (systems рддреНрдпрд╛рдВрдирд╛ рдмрдирд╡рдгрд╛рд▒реНрдпрд╛ рд╕рдВрд╕реНрдереЗрдЪреНрдпрд╛
рд╕рдВрд╡рд╛рдж-рд░рдЪрдиреЗрдЪреА рдирдХреНрдХрд▓ рдХрд░рддрд╛рдд), рдорд╛рдгрд╕рд╛рдВрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдкреЗрдХреНрд╖рд╛ рдЦреВрдк рд╡реЗрдЧрд╛рдиреЗ рд╡рд╛рдврдгрд╛рд░реЗ рд╕рдВрд╡рд╛рджрд╛рдЪреЗ рдорд╛рд░реНрдЧ,
Team Topologies рдЪреЗ рдЪрд╛рд░ team рдкреНрд░рдХрд╛рд░, рдЖрдгрд┐ cognitive load тАФ рдПрдХ рдЯреАрдо рдПрдХрд╛ рд╡реЗрд│реА рдбреЛрдХреНрдпрд╛рдд
рдХрд┐рддреА рдареЗрд╡реВ рд╢рдХрддреЗ. topologies() lead/demo.py рдордзреНрдпреЗ;
paths(), handoffs() рдЖрдгрд┐ cognitive_load() lead/models.py рдордзреНрдпреЗ.
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
рд╢рд╛рд│рд╛ рдореЛрдареА рд╣реЛрддреЗ. рдХрддрд░рд┐рдирд╛рдЪреНрдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдд рдЖрддрд╛ 12 рд╢рд┐рдХреНрд╖рд┐рдХрд╛ рдЖрд╣реЗрдд, рдЖрдгрд┐ рддреНрдпрд╛ рд╕рдЧрд│реНрдпрд╛ рдПрдХрд╛рдЪ рдореЛрдареНрдпрд╛ staff meeting рдордзреНрдпреЗ рдмрд╕рддрд╛рдд. ЁЯЧгя╕П рдкреНрд░рддреНрдпреЗрдХреАрд▓рд╛ рдкреНрд░рддреНрдпреЗрдХреАрд╢реА рдмреЛрд▓рд╛рд╡реЗ рд▓рд╛рдЧрддреЗ. 12 рдЬрдгреАрдВрдордзреНрдпреЗ рдмреЛрд▓рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдкрдбреВ рд╢рдХрдгрд╛рд▒реНрдпрд╛ 66 рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЬреЛрдбреНрдпрд╛ рд╣реЛрддрд╛рдд!
рдореНрд╣рдгреВрди рд╢рд╛рд│рд╛ рд╢рд┐рдХреНрд╖рд┐рдХрд╛рдВрдЪреА рд╡рд┐рднрд╛рдЧрдгреА рдХрд░рддреЗ. рдкрд╣рд┐рд▓реА рдХрд▓реНрдкрдирд╛: рдХрд╛рдорд╛рдЪреНрдпрд╛ рдкреНрд░рдХрд╛рд░рд╛рдиреБрд╕рд╛рд░ тАФ рдПрдХ рдЧрдЯ рдкреНрд░рд╢реНрди рд▓рд┐рд╣рд┐рддреЛ, рдПрдХ рдЧрдЯ рдкреЗрдкрд░ рдЫрд╛рдкрддреЛ, рдПрдХ рдЧрдЯ рддреЗ рддрдкрд╛рд╕рддреЛ. рдкрдг рдЖрддрд╛ рдкреНрд░рддреНрдпреЗрдХ рдирд╡реНрдпрд╛ рдкрд░реАрдХреНрд╖реЗрд▓рд╛ рддрд┐рдиреНрд╣реА рдЧрдЯ рд▓рд╛рдЧрддрд╛рдд. рдкреНрд░рддреНрдпреЗрдХ рдЧрдЯ рдЗрддрд░рд╛рдВрдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рддреЛ. ЁЯРМ
рджреБрд╕рд░реА рдХрд▓реНрдкрдирд╛: рдЗрдпрддреНрддреЗрдиреБрд╕рд╛рд░. рдЗрдпрддреНрддрд╛ 7 рдЪреА рдЯреАрдо рдЗрдпрддреНрддрд╛ 7 рд╕рд╛рдареА рд╕рдЧрд│реЗ рдХрд╛рд╣реА рдХрд░рддреЗ тАФ рдкреНрд░рд╢реНрди, рдЫрдкрд╛рдИ, рддрдкрд╛рд╕рдгреА. рдЗрдпрддреНрддрд╛ 7 рдЪреНрдпрд╛ рдирд╡реНрдпрд╛ рдкрд░реАрдХреНрд╖реЗрд▓рд╛ рдлрдХреНрдд рдЗрдпрддреНрддрд╛ 7 рдЪреА рдЯреАрдо рд▓рд╛рдЧрддреЗ. ЁЯОп
рдЖрдгрд┐ photocopier, рдХрд╛рдЧрдж рдЖрдгрд┐ рдЫрдкрд╛рдИрдЪреЗ рдирд┐рдпрдо? рдПрдХ рдЫреЛрдЯреА support team рддреЗ рд╕рд╛рдВрднрд╛рд│рддреЗ, рдЖрдгрд┐ рддреЗ рдЗрддрдХреЗ рд╕реЛрдкреЗ рдХрд░рддреЗ рдХреА рдЗрдпрддреНрддрд╛рдВрдЪреНрдпрд╛ рдЯреАрдореНрд╕ рддреЗ рдлрдХреНрдд рд╡рд╛рдкрд░рддрд╛рдд тАФ рд╡рд╛рдЯ рдкрд╛рд╣рдгреЗ рдирд╛рд╣реА.
рдХрддрд░рд┐рдирд╛рд▓рд╛ рдЖрдгрдЦреА рдПрдХ рдЧреЛрд╖реНрдЯ рджрд┐рд╕рддреЗ: рд╢рд╛рд│рд╛ рд╢рд┐рдХреНрд╖рд┐рдХрд╛рдВрдЪреА рд╡рд┐рднрд╛рдЧрдгреА рдЬрд╢реА рдХрд░рддреЗ, рддрд╢реАрдЪ рд╢реЗрд╡рдЯреА рддрд┐рдЪреНрдпрд╛ рдкрд░реАрдХреНрд╖рд╛рдВрдЪреА рд░рдЪрдирд╛ рд╣реЛрддреЗ. рдорд╛рдгрд╕рд╛рдВрдЪрд╛ рдЖрдХрд╛рд░рдЪ рдХрд╛рдорд╛рдЪрд╛ рдЖрдХрд╛рд░ рдмрдирддреЛ.
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart LR
o["ЁЯСе one team of 12<br/>66 communication paths"] --> t["two teams of 6<br/>30 paths + one interface"]
c["ЁЯз▒ component teams<br/>frontend ┬╖ backend ┬╖ data ┬╖ platform"] --> c1["team-waits 14<br/>5/6 features need >1 team"]
s["ЁЯОп stream-aligned + platform"] --> s1["team-waits 9 ┬╖ 3/6"]
ss["ЁЯЫая╕П stream-aligned + SELF-SERVICE platform"] --> s2["team-waits 5 ┬╖ 0/6"]
l["ЁЯза cognitive load<br/>grades team 4 ┬╖ 'everything' team 10"]
ЁЯЧ║я╕П рдХрд╛рдврд▓реЗрд▓реА рдЖрд╡реГрддреНрддреА + рдПрдХ lab: https://school-edh.pages.dev/engineering-leadership/lesson-diagrams.html#l09
тЭУ рдХрд╛рдп
- Conway's law тАФ Melvin Conway (1968): рд╕рдВрд╕реНрдерд╛ рдЕрд╢рд╛ systems рдЪреА рд░рдЪрдирд╛ рдХрд░рддрд╛рдд рдЬреНрдпрд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рд╕рдВрд╡рд╛рдж-рд░рдЪрдиреЗрдЪреЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдЕрд╕рддрд╛рдд. (рдПрдХ рдЬреБрдирд╛ рд╡рд┐рдиреЛрдж рдЕрд╕рд╛ рд╕рд╛рдВрдЧрддреЛ: compiler рдмрдирд╡рдгрд╛рд▒реНрдпрд╛ рдЪрд╛рд░ рдЯреАрдореНрд╕ four-pass compiler рдмрдирд╡рддреАрд▓.) Inverse Conway manoeuvre: рддреБрдореНрд╣рд╛рд▓рд╛ рд╣рд╡реА рдЕрд╕рд▓реЗрд▓реА system architecture рдбреЛрд│реНрдпрд╛рд╕рдореЛрд░ рдареЗрд╡реВрди рдЯреАрдореНрд╕рдЪреА рд░рдЪрдирд╛ рдЬрд╛рдгреАрд╡рдкреВрд░реНрд╡рдХ рдХрд░рд╛.
- рд╕рдВрд╡рд╛рджрд╛рдЪреЗ рдорд╛рд░реНрдЧ тАФ n рд▓реЛрдХрд╛рдВрдЪреНрдпрд╛ рдЧрдЯрд╛рдд n(nтИТ1)/2 рд╕рдВрднрд╛рд╡реНрдп рдЬреЛрдбреНрдпрд╛ рдЕрд╕рддрд╛рдд. Fred Brooks рдпрд╛рдВрдиреА The Mythical Man-Month (1975) рдордзреНрдпреЗ рд╣реЗ рд╡рд╛рдкрд░реВрди рд╕рдордЬрд╛рд╡рд▓реЗ рдХреА рдЙрд╢реАрд░ рдЭрд╛рд▓реЗрд▓реНрдпрд╛ project рдордзреНрдпреЗ рд▓реЛрдХ рд╡рд╛рдврд╡рд▓реНрдпрд╛рдиреЗ рддреЛ рдЖрдгрдЦреА рдЙрд╢рд┐рд░рд╛ рдХрд╛ рд╣реЛрдК рд╢рдХрддреЛ ("Brooks's law" тАФ рдЕрдиреБрднрд╡рд╛рдЪрд╛ рдирд┐рдпрдо, рдореЛрдЬрд▓реЗрд▓рд╛ рдирд┐рдпрдо рдирд╡реНрд╣реЗ).
- Team Topologies тАФ Matthew Skelton рдЖрдгрд┐ Manuel Pais (2019) рдЪрд╛рд░ team рдкреНрд░рдХрд╛рд░ рд╕рд╛рдВрдЧрддрд╛рдд: stream-aligned (рдПрдЦрд╛рджреНрдпрд╛ user рдХрд┐рдВрд╡рд╛ business рдХреНрд╖реЗрддреНрд░рд╛рд╕рд╛рдареА рдХрд╛рдорд╛рдЪрд╛ рдкреНрд░рд╡рд╛рд╣ рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрди рд╢реЗрд╡рдЯрдкрд░реНрдпрдВрдд рд╕рд╛рдВрднрд╛рд│рддреЗ) ┬╖ platform (stream-aligned рдЯреАрдореНрд╕ рд╕реНрд╡рддрдГрд╣реВрди рд╡рд╛рдкрд░реВ рд╢рдХрддреАрд▓ рдЕрд╢рд╛ рдЕрдВрддрд░реНрдЧрдд services рджреЗрддреЗ) ┬╖ enabling (рдЗрддрд░ рдЯреАрдореНрд╕рдирд╛ рдПрдЦрд╛рджреА рдХреНрд╖рдорддрд╛ рд╢рд┐рдХрд╛рдпрд▓рд╛ рдорджрдд рдХрд░рдгрд╛рд░реЗ рддрдЬреНрдЬреНрдЮ, рдЬреЗ рдирдВрддрд░ рдмрд╛рдЬреВрд▓рд╛ рд╣реЛрддрд╛рдд) ┬╖ complicated-subsystem (рд╕рдЦреЛрд▓ рддрдЬреНрдЬреНрдЮ рдЬреНрдЮрд╛рди рд▓рд╛рдЧрдгрд╛рд░рд╛ рднрд╛рдЧ рд╕рд╛рдВрднрд╛рд│рддреЗ). рдЖрдгрд┐ рддреАрди interaction modes: collaboration, X-as-a-Service, facilitating.
- Component teams тАФ technical layer рдиреБрд╕рд╛рд░ рд╡рд┐рднрд╛рдЧрд▓реЗрд▓реНрдпрд╛ рдЯреАрдореНрд╕ (frontend, backend, database). рдмрд╣реБрддреЗрдХ features рдкреНрд░рддреНрдпреЗрдХ layer рдУрд▓рд╛рдВрдбрддрд╛рдд, рдореНрд╣рдгреВрди рдмрд╣реБрддреЗрдХ features рдирд╛ рдЕрдиреЗрдХ рдЯреАрдореНрд╕ рд▓рд╛рдЧрддрд╛рдд.
- Cognitive load тАФ John Sweller рдпрд╛рдВрдЪреНрдпрд╛ рд╢рд┐рдХреНрд╖рдгрд╛рд╡рд░реАрд▓ рдХрд╛рдорд╛рддреВрди: рдПрдЦрд╛рджреНрдпрд╛ рдХрд╛рдорд╛рд▓рд╛ рд▓рд╛рдЧрдгрд╛рд░реЗ рдорд╛рдирд╕рд┐рдХ рд╢реНрд░рдо. Team Topologies рд╣реЗ рдЯреАрдореНрд╕рдирд╛ рд▓рд╛рдЧреВ рдХрд░рддреЗ: рдЯреАрдорд▓рд╛ рдлрдХреНрдд рддрд┐рддрдХреЗрдЪ domains рджреНрдпрд╛ рдЬрд┐рддрдХреЗ рддреА рдиреАрдЯ рд╕рдордЬреВ рд╢рдХрддреЗ тАФ рдвреЛрдмрд│рдорд╛рдирд╛рдиреЗ, рдПрдХ complex domain, рдХрд┐рдВрд╡рд╛ рдХрд╛рд╣реА рд╕реЛрдкреЗ domains. рд╣рд╛ lab domains рдирд╛ simple 1 ┬╖ complicated 2 ┬╖ complex 3 рдЕрд╕реЗ рдЧреБрдг рджреЗрддреЛ тАФ рд╢рд┐рдХрд╡рдгреНрдпрд╛рд╕рд╛рдареАрдЪреЗ рдПрдХ рдвреЛрдмрд│ рдорд╛рдк.
ЁЯдФ рдХрд╛
рдХрд╛рд░рдг engineering рдЪреНрдпрд╛ рд╡рд╛рдЯрдгрд╛рд▒реНрдпрд╛ рдЕрдиреЗрдХ delivery рд╕рдорд╕реНрдпрд╛ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдЯреАрдордЪреНрдпрд╛ рд░рдЪрдиреЗрдЪреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдЕрд╕рддрд╛рдд: рдЪрд╛рд░ рдЯреАрдореНрд╕ рд▓рд╛рдЧрдгрд╛рд░реА features, рддреНрдпрд╛рдВрдЪреНрдпрд╛рдордзреАрд▓ tickets рдЪреНрдпрд╛ рд░рд╛рдВрдЧрд╛, рдЖрдгрд┐ рдЕрд╢реА system рдЬрд┐рдЪреЗ рд╕рд╛рдВрдзреЗ org chart рдЪреНрдпрд╛ рд╕рд╛рдВрдзреНрдпрд╛рдВрдЪреНрдпрд╛ рдЕрдЧрджреА рдЬрд╛рдЧреАрдЪ рдЕрд╕рддрд╛рдд. Lead рдЪрд╛ рдЯреАрдордЪреНрдпрд╛ рд╕реАрдорд╛ рдЖрдгрд┐ рдорд╛рд▓рдХреАрд╡рд░ рддрд┐рд▓рд╛ рд╡рд╛рдЯрддреЗ рддреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдкреНрд░рднрд╛рд╡ рдЕрд╕рддреЛ тАФ рдЖрдгрд┐ рддреНрдпрд╛ рдмрджрд▓рд▓реНрдпрд╛рдиреЗ рдЕрд╢реА рд╡рд╛рдЯ рдкрд╛рд╣рдгреЗ рд╕рдВрдкреВ рд╢рдХрддреЗ рдЬреНрдпрд╛рд▓рд╛ рдХреЛрдгрддреАрд╣реА process рд╕реБрдзрд╛рд░рдгрд╛ рд╕реНрдкрд░реНрд╢рд╣реА рдХрд░реВ рд╢рдХрд▓реА рдирд╕рддреА.
ЁЯФз рдХрд╕реЗ (рдпрд╛ repo рдордзреНрдпреЗ)
lead/models.py рдордзреАрд▓ paths(n) рдореНрд╣рдгрдЬреЗ n(nтИТ1)/2. handoffs(features, owner, self_service=()) рдкреНрд░рддреНрдпреЗрдХ feature рдХреЛрдгрддреНрдпрд╛ components рдирд╛ рд╕реНрдкрд░реНрд╢ рдХрд░рддреЗ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ component
рдЪреА рдорд╛рд▓рдХ рдЯреАрдо рдХреЛрдгрддреА рд╣реЗ рдШреЗрддреЗ, рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ feature рд▓рд╛ рдХреЛрдгрддреНрдпрд╛ рдЯреАрдореНрд╕рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рд╛рд╡реА рд▓рд╛рдЧрддреЗ рддреЗ рдкрд░рдд рджреЗрддреЗ тАФ
self_service рдореНрд╣рдгреВрди рджрд┐рд▓реЗрд▓реНрдпрд╛ рдЯреАрдореНрд╕ рд╡рдЧрд│реВрди, рдХрд╛рд░рдг рддреНрдпрд╛рдВрдЪрд╛ platform рддреНрдпрд╛рдВрдЪреА рд╡рд╛рдЯ рди рдкрд╛рд╣рддрд╛ рд╡рд╛рдкрд░рддрд╛ рдпреЗрддреЛ. cognitive_load(domains)
domain рдЧреБрдгрд╛рдВрдЪреА рдмреЗрд░реАрдЬ рдХрд░рддреЗ. lead/demo.py рдордзреАрд▓ topologies() рд╕рд╣рд╛
features рддреАрди org рд░рдЪрдирд╛рдВрд╡рд░ рдЪрд╛рд▓рд╡рддреЗ. рд╣реЗ model рдкреНрд░рддреНрдпреЗрдХ component рдЪрд╛ рдПрдХрдЪ рдорд╛рд▓рдХ рдЖрдгрд┐
self-service рдЦрд░реЛрдЦрд░ рдЪрд╛рд▓рддреЗ рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░рддреЗ: рд╡рд┐рдЪрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рд╕рд╛рдзрди, рд▓реЛрдХрд╛рдВрд╕рд╛рдареАрдЪреЗ рд╕реВрддреНрд░ рдирд╡реНрд╣реЗ.
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛
python3 lead/demo.py topologies
python3 - <<'EOF'
import sys; sys.path.insert(0, "lead"); from models import paths, handoffs
for n in (3, 5, 7, 9, 12, 20):
print(f"team of {n:>2} тЖТ {paths(n):>3} paths")
feats = {"predicted grades": ["grades-ui", "grades-api", "grades-db"], "parent SSO login": ["auth", "parents-ui"]}
owner = {"grades-ui": "frontend", "grades-api": "backend", "grades-db": "data", "auth": "platform", "parents-ui": "frontend"}
for f, teams in handoffs(feats, owner).items():
print(f"{f} waits for: {teams}")
EOF
тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ
topologies рд╣реЗ рдЫрд╛рдкрддреЗ:
тФАтФА one team of 12: 66 communication paths ┬╖ two teams of 6: 30 paths inside teams, plus one agreed interface between them
component teams (frontend/backend/data/platform) team-waits 14 ┬╖ features needing >1 team 5/6
stream-aligned teams + a platform team team-waits 9 ┬╖ features needing >1 team 3/6
stream-aligned + a SELF-SERVICE platform team-waits 5 ┬╖ features needing >1 team 0/6
cognitive load (simple 1 ┬╖ complicated 2 ┬╖ complex 3): grades team 4 across 2 domains
cognitive load (simple 1 ┬╖ complicated 2 ┬╖ complex 3): 'everything' team 10 across 5 domains
рддреБрдордЪрд╛ snippet рд╣реЗ рдЫрд╛рдкрддреЛ:
team of 3 тЖТ 3 paths
team of 5 тЖТ 10 paths
team of 7 тЖТ 21 paths
team of 9 тЖТ 36 paths
team of 12 тЖТ 66 paths
team of 20 тЖТ 190 paths
predicted grades waits for: ['frontend', 'backend', 'data']
parent SSO login waits for: ['platform', 'frontend']
ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ
рдорд╛рд░реНрдЧ рдорд╛рдгрд╕рд╛рдВрдкреЗрдХреНрд╖рд╛ рдЦреВрдк рд╡реЗрдЧрд╛рдиреЗ рд╡рд╛рдврддрд╛рдд: 5 рд▓реЛрдХрд╛рдВрдЪреНрдпрд╛ 10 рдЬреЛрдбреНрдпрд╛, 12 рдЪреНрдпрд╛ 66, 20 рдЪреНрдпрд╛ 190. 12 рдЬрдгрд╛рдВрдирд╛ 6 рдЪреНрдпрд╛ рджреЛрди рдЯреАрдореНрд╕рдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реНрдпрд╛рд╡рд░ 30 рдорд╛рд░реНрдЧ рдЖрдгрд┐ рдард░рд╡рд╛рдпрдЪрд╛ рдПрдХ interface рдЙрд░рддреЛ. Component teams рдордзреНрдпреЗ 6 рдкреИрдХреА 5 features рдирд╛ рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЯреАрдо рд▓рд╛рдЧрд▓реА (рдПрдХреВрдг 14 team-waits); stream-aligned рдЯреАрдореНрд╕рдиреА рддреЗ 6 рдкреИрдХреА 3 рд╡рд░ рдЖрдгрд▓реЗ; рдЖрдгрд┐ self-service platform рдиреЗ тАФ рдЬреЛ ticket рди рдЯрд╛рдХрддрд╛ рд╡рд╛рдкрд░рддрд╛ рдпреЗрддреЛ тАФ рддреЗ 6 рдкреИрдХреА 0 рд╡рд░ рдЖрдгрд▓реЗ. рджрд░рдореНрдпрд╛рди рдкрд╛рдЪ domains рд╡рд╛рд╣рдгрд╛рд▒реНрдпрд╛ "everything" рдЯреАрдордЪрд╛ load score 10 рд╣реЛрддрд╛, рддрд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд grades рдЯреАрдордЪрд╛ 4.
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
- code рдЖрдгрд┐ systems рдЪреА рдорд╛рд▓рдХреА рди рдмрджрд▓рддрд╛ рдлрдХреНрдд org chart рд╡рд░ рдкреБрдирд░реНрд░рдЪрдирд╛ рдХрд░рдгреЗ
- рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд ticket рд░рд╛рдВрдЧ рдЕрд╕рд▓реЗрд▓реА "platform team" тАФ рдордЧ рддреА рд╡рд╛рдЯ рдкрд╛рд╣рдгреЗ рдХрдореА рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА рд╡рд╛рдврд╡рддреЗ
- рдЗрддрд░ рдХреЛрдгрд╛рд▓рд╛рд╣реА рдирдХреЛ рдЕрд╕рд▓реЗрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ domain рдПрдХрд╛рдЪ рдЯреАрдорд▓рд╛ рджреЗрдгреЗ
- technical layer рдиреБрд╕рд╛рд░ рдЯреАрдореНрд╕ рд╡рд┐рднрд╛рдЧрдгреЗ рдЖрдгрд┐ рдордЧ рдкреНрд░рддреНрдпреЗрдХ feature рд▓рд╛ meeting рдХрд╛ рд▓рд╛рдЧрддреЗ рдпрд╛рдЪреЗ рдЖрд╢реНрдЪрд░реНрдп рд╡рд╛рдЯрдгреЗ
- Team Topologies рдЪреЗ рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░ рд╢рдмреНрджрд╕рдВрдЧреНрд░рд╣ рдореНрд╣рдгреВрди рди рд╡рд╛рдкрд░рддрд╛ рднрд░рд╛рдпрдЪреЗ рдЦреЛрдХреЗ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рдгреЗ
- рдкреНрд░рддреНрдпреЗрдХрдЬрдг рдкреНрд░рддреНрдпреЗрдХрд╛рд╢реА рдмреЛрд▓реВ рд╢рдХрддреЗ рдпрд╛ рдмрд┐рдВрджреВрдЪреНрдпрд╛ рдкрд▓реАрдХрдбреЗ рдПрдХрд╛рдЪ рдЯреАрдорд▓рд╛ рд╡рд╛рдвреВ рджреЗрдгреЗ
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд
рдорд╛рд▓рдХреА рд▓рд┐рд╣реВрди рдареЗрд╡рд╛, рдореНрд╣рдгрдЬреЗ Conway's law рддреБрдордЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ рдХрд╛рдо рдХрд░реЗрд▓. Service catalogue рдордзреАрд▓ рдПрдХ рдиреЛрдВрдж:
# catalog-info.yaml тАФ one per service (this layout follows Backstage's format)
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: gradebook-api
spec:
type: service
owner: team-grades # a stream-aligned team
lifecycle: production
system: grades
Team API тАФ рдЗрддрд░ рдЯреАрдореНрд╕ рддреБрдордЪреНрдпрд╛рд╕реЛрдмрдд рдХрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛рдд тАФ рд╣реА interaction modes рд╕реНрдкрд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Team Topologies рдЪреА рд╕реВрдЪрдирд╛ рдЖрд╣реЗ:
## Team Grades тАФ team API
- We own: gradebook-api, gradebook-ui, grades-db
- Ask us: #team-grades, or an issue on the gradebook repo (we answer within 1 working day)
- We use as-a-service: platform CI, auth, notifications
- Collaborating now (until week 20): the platform team, on the new storage service
рджрд░ рддрд┐рдорд╛рд╣реАрд▓рд╛ рд╣реА рд░рдЪрдирд╛ рд╡рд╛рд╕реНрддрд╡рд╛рд╢реА рддрд╛рдбреВрди рдкрд╛рд╣рд╛: рдХреЛрдгрддреНрдпрд╛ features рдирд╛ рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЯреАрдо рд▓рд╛рдЧрд▓реА, рдЖрдгрд┐ рддреНрдпрд╛рдВрдиреА рдХрд┐рддреА рд╡реЗрд│ рд╡рд╛рдЯ рдкрд╛рд╣рд┐рд▓реА? System Design school рдпрд╛рдЪ рд╕реАрдорд╛рдВрдЪреА architecture рдмрд╛рдЬреВ рд╢рд┐рдХрд╡рддреЗ.
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ: рд╣рд│реВ delivery рд╕реБрдзрд╛рд░рдгреНрдпрд╛рд╕рд╛рдареА process рдЬреЛрдбрдгреНрдпрд╛рдЖрдзреА, рдПрдХрд╛ рд╕рд╛рдорд╛рдиреНрдп feature рд▓рд╛ рдХрд┐рддреА рдЯреАрдореНрд╕ рд▓рд╛рдЧрддрд╛рдд рддреЗ рдореЛрдЬрд╛. рдЙрддреНрддрд░ рддреАрди рдХрд┐рдВрд╡рд╛ рдЪрд╛рд░ рдЕрд╕реЗрд▓, рддрд░ рдорд╛рд▓рдХреА рдмрджрд▓рд╛ рдХрд┐рдВрд╡рд╛ self-service platform рдмрдирд╡рд╛ тАФ org chart рд╣рд╛ architecture рдЪрд╛рдЪ рднрд╛рдЧ рдЖрд╣реЗ.
тПня╕П рдкреБрдвреЗ
рдиреАрдЯ рд░рдЪрд▓реЗрд▓реНрдпрд╛ рдЯреАрдореНрд╕рдЪреЗрд╣реА рд╡рд╛рдИрдЯ рджрд┐рд╡рд╕ рдпреЗрддрд╛рдд. рдкреБрдвреЗ: incidents рдЖрдгрд┐ рдХрдареАрдг рдирд┐рд░реНрдгрдпрд╛рдВрдордзреНрдпреЗ рдиреЗрддреГрддреНрд╡ тАФ рдЖрдгрд┐ рдЙрд▓рдЯрддрд╛ рдпреЗрдгрд╛рд░реЗ рдирд┐рд░реНрдгрдп рди рдЙрд▓рдЯрддрд╛ рдпреЗрдгрд╛рд▒реНрдпрд╛рдВрдкрд╛рд╕реВрди рд╡реЗрдЧрд│реЗ рдУрд│рдЦрдгреЗ.
git checkout lesson-10-incidents-decisions