架构师需要知道的康威定律
Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.
- Melvin Conway
第一定律
Communication dictates design
组织的沟通方式决定系统设计,也就是说什么样的组织就会设计开发出什么样的产品。
架构师需要深知沟通是有成本的,这里我想到了当初我学习项目管理知识的时候,在项目的沟通管理中有一个沟通成本公式:
沟通成本=n(n-1)/2
第二定律
There is never enough time to do something right, but there is always enough time to do it over.
时间再多一件事情也不可能做的完美,但是总有足够的时间做完。
在软件开发这个领域中,永远不可能完美。无论你思考的多么严谨,总会有不是那么完美的地方。正如,维纳斯的美也是残缺的一样,任何软件都会存在bug。所以敏捷开发、快速迭代、持续集成、持续交付、立刻验证、持续优化才是王道。文档来不及写,用笔画一下就好;功能不完美,能运行就好;代码不完美,我们后续改进就好。
第三定律
There is a homomorphism from the linear graph of a system to the linear graph of its design organization.
线型系统和线型组织架构间有潜在的异质同态特性。
尽管系统和组织结构在本质上是不一样的,但是却有很多的相似之处。比如,做过系统开发的人来管理组织的时候会参照系统的架构来组织团队。所以如果你需要前后端分离的系统,那么你至少需要把前端组和后端组分开;而如果你是想开发一个单体系统,那么你可以只需要一个开发组。
第四定律
The structures of large systems tend to disintegrate during development, qualitatively more so than with small systems.
大的系统组织总是比小系统更倾向于分解。
也许系统架构的核心就是在于“拆”和“合”之间。
从单体架构开始,分层架构、微服务架构、网络服务架构,都是在拆,拆的越来越小。