最近阅读了架构之美,其中康威定律印象深刻,于是查阅了相关资料,再根据自己这么多年的开发架构经验,总结一下心得。
首先来看一下这个定律的原文:
Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations. - Melvin Conway(1967)
大概翻译下就是设计系统的组织,其产生的设计和架构等价于组织间的沟通结构。
康威定律被视为微服务架构的理论基础,是有一定的根据的,主要有以下几点:
1.把一个大的系统分成一个个小的业务模块,每个业务模块由对应的小团队来负责而且各个小团队都是独立的,所以在分模块时要按业务而不是技术来划分。
2.避免过度设计。一个系统初级是不可能大而全,十分完美,它必须是有一个演进进程,所以刚开始能保持可移植性、高扩展性即可。保持弹性设计。
3.各微服务应该都有自己独立的数据库和资源,避免耦合在一起。
4.各微服务对外提供的接口尽量的兼容各种不同的技术和开发语言。
5.专注产品的生命力,而不是为了项目而技术。所以技术人员也有必要对业务有一定的理解。