知识卡片
微服务粒度上界受限于人的邓巴数与2 Pizza Team规律
内容
和[[微服务粒度下界的三个维度及粒度过细的反噬]]不同,微服务粒度太大在 技术上完全没问题——任何能正常工作的单体系统都满足独立、内聚、完备 三条要求。上界的约束不来自技术,而来自人与人之间的社交协作。《人月 神话》最反直觉的结论是”为进度给项目增加人力,如同用水去为油锅灭火”, Fred Brooks给出的原因是软件项目的沟通成本=n×(n-1)/2(n为参与人数)—— 15人项目的沟通成本约是5人项目的10倍,150人项目约是1000倍。这个平方级 增长和人类学家Robin Dunbar 1992年提出的”邓巴数”(Dunbar’s Number) 遥相呼应:人的新皮质大小限制了社交承载量,普通人社交上界大致是5个 知己、15个可信赖伙伴、35个普通朋友、150个说得上话的人。这正是”2 Pizza Team”(亚马逊Jeff Bezos提出,两个披萨能喂饱的人数,约6~12人)被广泛 借用为微服务团队规模量词的深层原因——不是因为提出者是世界首富,而是 这个规模恰好落在人类天然能高效协作的社交上界内。康威定律要求软件架构 与组织架构保持一致,所以微服务的上界应该等于一个2 Pizza Team能在一个 研发周期内完成的全部需求范围——这个范围本身还会随开发能力、研发模式 (瀑布月级迭代/Scrum周级冲刺/日构建精益)而浮动。综合下界和上界, 微服务粒度是架构师根据业务和团队实际情况在这个区间内灵活裁量的产物, 不存在唯一正确答案。
参考来源
- 位置:《凤凰架构:构建可靠的大型分布式系统》第16章"向微服务迈进"16.3节
"边界:微服务的粒度"(源文件:_epub-src对应OEBPS/Text/chapter181.xhtml)
- 结论依据:原文引用Fred Brooks的沟通成本公式n×(n-1)/2及具体数字对比,
引用邓巴数说明人类社交承载量的上界,并说明2 Pizza Team正是这个上界
的具体体现,进而给出"微服务粒度的上界是一个2 Pizza Team能够在一个
研发周期内完成的全部需求范围"这一结论,直接支撑本卡片结论。
- 原始内容:软件项目中的沟通成本=n×(n–1)/2……我敢断言你的社交上界是
不超过5个知己好友,15个可信任的伙伴,35个普通朋友,150个说得上话
的人……微服务粒度的上界是一个2 Pizza Team能够在一个研发周期内完成
的全部需求范围。