Appearance
康威定律与团队拓扑
定位:架构方法论深化系列之一。每张架构图的上游都藏着一张组织架构图。这篇整理康威定律与逆康威定律的工程化用法、团队拓扑四型与交互三模式。还有"服务边界必须对齐团队认知负荷"的判断标准。
康威定律到底说了什么
1967 年 Melvin Conway 的原话意译:任何设计系统的组织,产出的架构都等价于该组织的沟通结构。注意"等价"这个词——不是"受影响",是"复制"。
三个推论,每个都能在现实中对号入座:
- 接口长在沟通路径上:两个团队之间必须沟通,沟通的产物就是接口。三个团队协作的系统必然被切成三块。接口的粒度反映的是团队之间"谈得拢的粒度",不是技术上的最优粒度。
- 组织沟通不顺畅的地方,架构必然出现一坨"胶水":跨部门交界处的代码质量,永远是全系统最差的。因为没人真正拥有它。
- 调整组织比调整架构更有效:架构师的杠杆不在图上,在排兵布阵上。想让服务边界清晰,先让团队边界清晰。
组织图到架构图的映射:
组织结构 产出架构
--------- ---------
CEO 网关
/ \ |
交易团队 风控团队 +--------+--------+
/ \ | | |
下单 库存 规则引擎 交易服务 风控服务
团队 团队 团队 / \ |
下单服务 库存服务 规则引擎服务
团队有几条沟通线,架构就有几条集成线——一一对应,逃不掉。逆康威定律:用架构反塑组织
既然组织决定架构,那么想要什么架构,就先设计什么样的组织。这是逆向操作,也是团队拓扑这本书的立论基础。
- 正向(默认发生):组织现状 → 架构复制组织 → 组织的坑变成架构的坑。
- 逆向(主动干预):目标架构 → 倒推需要哪些团队与沟通路径 → 按此设置组织 → 架构自然长成目标形态。
工程上的检验方法很朴素:画出目标架构图,再画出组织架构图,把两图的"线"对齐。凡是目标架构里两个服务有调用、但两个服务分属两个没有日常沟通机制的团队。这条调用线就是未来的事故点。
团队拓扑:四类团队
不是所有团队都该长一个样。按职责分四型:
| 团队类型 | 职责 | 典型例子 | 考核要点 |
|---|---|---|---|
| 流团队(stream-aligned) | 端到端交付一条业务流,对业务结果负责 | 交易团队、会员团队 | 业务指标 + 流的变更吞吐 |
| 平台团队(platform) | 提供自服务能力,降低流团队的交付摩擦 | 中间件团队、发布平台、IAAS/PAAS | 流团队的满意度与接入成本 |
| 使能团队(enabling) | 弥补流团队的技能缺口,教会后撤离 | 架构辅导组、DDD 教练组 | 团队"毕业"数量而非长期占有 |
| 复杂子系统团队(complicated-subsystem) | 攻克某个深水区专业问题 | 风控算法引擎、推荐引擎 | 子系统的专业深度与稳定性 |
四型团队的排布与交互:
┌──────────┐
│ 使能团队 │ ──(促进)──> 流团队A、B:辅导、传授,时间盒之后撤离
└──────────┘
│
┌─────────────────┼─────────────────┐
│ │ │
┌──┴───┐ ┌────────┴────────┐ ┌────┴───┐
│流团队A│ │ 平台团队 │ │ 流团队B │
│ 交易 │ │ 发布/存储/中间件 │ │ 营销 │
└──────┘ └─────────────────┘ └────────┘
│(协作:共建期) │(便利:X即服务) │
└──────>───────┘<──────────────┘
复杂子系统团队(如风控引擎):对上游流团队按"便利"模式提供能力,
与流团队"协作"打磨的场景要克制,避免边界糊掉。交互三模式
团队之间的交互方式同样要约定,否则边界会糊:
| 模式 | 含义 | 适用场景 | 退化形态 |
|---|---|---|---|
| 协作(collaboration) | 两团队短期紧密共建 | 新能力探索期、边界还没想清楚 | 长期协作=边界没人负责,糊死 |
| 便利(X-as-a-Service) | 平台做好自服务产品,流团队自助使用 | 能力已成熟、规模化复制 | 变成"提需求排队",平台成为瓶颈 |
| 促进(facilitating) | 使能团队辅导流团队成长 | 技能差距、方法论导入 | 使能变长期外包,团队永不毕业 |
原则:协作和促进是临时态,便利是稳态。交互模式长期停留在"协作"的两团队,应该考虑合并或重新划界。
认知负荷与服务边界对齐
服务边界的最终约束不是技术,是一个团队能装下多少认知。认知负荷分三类:
| 类型 | 含义 | 例子 | 设计目标 |
|---|---|---|---|
| 领域负荷 | 理解业务域本身的复杂度 | 资金清结算规则 | 无法削减,只能选对人 |
| 系统负荷 | 理解自己要改的服务/框架 | 团队内的服务与依赖 | 越少越好 |
| 协同负荷 | 理解并等待其他团队 | 跨团队联调、排期对齐 | 接近于零 |
边界的判断标准由此推出:
- 先切团队,再切服务:一个团队负责的域,必须是一个人能在大脑里装下的域。装不下就再拆团队,而不是拆出五个服务让同一个团队背(那是分布式单体)。
- 协同负荷是边界划错的信号:一个需求频繁要三个团队一起改。说明真实的业务边界横切了团队边界。要么挪边界,要么合并。
- 平台团队的度量是"流团队不用找人":接入一个 MQ、发起一次发布。如果必须拉平台团队的人进会议才能推进,平台就还是"人力平台"不是"产品平台"。
反例:按技术分层组织团队
最常见也最贵的组织失误:前端一个团队、服务端一个团队、DBA 一个团队、测试一个团队。表面上"专业分工",实际效果:
按技术分层(每个需求穿 N 层) 按业务流切分(端到端闭环)
──────────────────────── ────────────────────────
需求: 会员支持手机号登录 需求: 会员支持手机号登录
│ │
前端团队排队 3 天 会员团队(含前后端)
│ │
服务端团队排队 5 天 内部排 1 次优先级
│ │
DBA 团队排队 2 天 当周上线
│
测试团队排队 4 天
│
(期间任一环节返工,重新排队)协调成本为什么会爆炸,可以粗略量化:
- 交付周期 ≈ Σ 各团队排队时间,而排队时间随并行需求数增长。串行层数从 1 变 4,周期保守变长超过 4 倍。
- 接口数量随层数组合增长:N 个业务功能 × M 个技术层,每格都是一次对齐会议。按业务切分后,跨团队接口数从 N×M 降到 N。
- 责任被切散:白屏了找前端,前端说是接口问题,接口说 SQL 慢——每一层局部最优,整体无人负责。
判断组织是否掉进这个坑,看一个指标就够。一次普通业务需求,从立项到上线,需要几个团队审批/排期/联调。大于 2 个,康威定律已经开始向你收税了。
边界划分追问链
划服务边界(也是划团队边界)时,按这条链连问自己:
1. 这个域的业务专家是谁? -> 不是哪个团队最熟,就不该归哪个团队
2. 一个新人大约多久能装下这个域? -> 超过 3 个月,考虑再拆一层
3. 最常见的变更是横切还是纵切? -> 横切多个服务的变更,说明边界切反了
4. 两团队现在多久开一次会? -> 每周都开,要么合并要么重新划界
5. 谁对这条业务流的最终结果负责? -> 答不上来 = 没有流团队 = 会退化成按层组织与库内其他篇的关系
- 边界划错后每次变更都在付兼容性税,四层检查见《系统设计如何全方位考虑兼容性问题》。
- 团队边界与架构决策互相固化,重大划界应落成决策记录,见《技术决策与ADR》。
- 跨团队协作的接口评审如何不流于形式,见《CR的技巧》的分级评审思路。
- 服务边界划对是演进的前提,边界+度量如何继续深化,见《演进式架构与适应度函数》。
一句话总结
组织结构是架构的第一因:想要什么架构,就先按目标架构去摆团队。边界对齐认知负荷,交互收敛到"便利"稳态。发现需求跨三个团队才能上线,别改架构,先改组织。
2026-10 新增(架构方法论深化系列)。