一、 软件工程中技术架构和组织架构的关系
不知道你有没有观察过:通常系统架构和组织架构是相似的。比如说前后端分离的架构,那么在组织上一般也会分前端组和后端组;而微服务架构,则分组是和服务相关的,可能一个组就是负责一个微服务。
其实组织架构和技术架构相似这个现象不是偶然的,这个现象背后有个定律叫康威定律 (Conway’s Law)。康威(Melvin Conway)博士在 1967 年提交的一篇论文《How Do Committees Invent?》中最有名的一句话是:
Organizations which design systems are constrained to produce systems which are copies of the communication structures of these organizations. — Melvin Conway
如果对这句话翻译一下,它的意思是:
你设计的软件系统架构,会以某种方式反映出构建软件背后团队的组织架构,你在设计软件的系统架构时,同时也在设计你的组织架构,反之亦然。也可以简单理解为:组织架构的设计等同于系统架构的设计。
如果你拿康威定律去验证你现在的团队组织架构,或者你熟悉的其他团队的组织结构,你会发现运行良好的项目,都很好地符合这条定律。那些大型复杂的单体软件系统,背后也对应着一个庞大的开发团队,那些应用微服务的项目,背后都是一个个的小组。
看完康威定律再回过头来看微服务,你会发现,微服务架构的设计,不仅仅是一个对服务拆分的架构设计,同时也是对组织架构拆分的设计。
当你在设计系统架构的同时,把组织架构的设计也考虑进去,很多问题也就迎刃而解了。比如说你开发团队 30 个人,要使用微服务的架构,那么拆成 3~5 个微服务是比较合适的。因为每个小组 10 个人左右,每个小组维护 1~3 个微服务,是相对比较合适的配比。
然后你再看那些应用微服务失败的案例,比如说一个小开发团队,做出 100 多个微服务的架构,那团队维护这些服务的成本一定是相当高的,最终会难以维持。
还有一些传统大型企业,团队构成是按工种划分成不同团队的,开发一个团队、测试一个团队、运维一个团队,那么推行微服务阻力会非常大,因为这样的组织结构和微服务的组织结构是不兼容的。
对于微服务的组织结构,需要按服务划分团队,团队成员有开发、测试和运维,一起组成一个小团队,围绕着服务不断迭代,这样效率是最高的。
总结
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!