微服务架构:组织、人员与规模化挑战
1. 康威定律的反向作用
通常我们探讨组织如何影响系统设计,那反过来,系统设计能否改变组织呢?虽然缺乏有力证据,但我有相关的轶事经历。
多年前我曾与一家大型印刷公司合作。当时网络刚兴起,互联网还靠美国在线(AOL)的软盘引入。这家公司有个小网站,建网站只是随大流,对业务运营并不重要。最初系统设计时,技术决策比较随意。
系统内容来源多样,大多来自投放广告的第三方。有供付费第三方创建内容的输入系统、对数据进行处理的中央系统,以及生成公众可浏览网站的输出系统。
多年后,公司变化很大,实体印刷业务大幅萎缩,线上业务主导了营收和运营。此时公司组织架构与这三部分系统紧密契合,IT 部门的三个渠道或部门分别对应输入、核心和输出部分,各渠道还有独立交付团队。后来我才意识到,这种组织架构并非先于系统设计存在,而是围绕系统设计发展起来的。随着印刷业务减少、数字业务增长,系统设计无形中引导了组织的发展。最终我们意识到,要做出改变,就必须调整组织架构,而这个过程至今仍在进行。
2. 人员因素的重要性
在微服务环境中,开发者不能只专注于自己的代码编写,要更关注网络边界调用和故障影响。从单体系统过渡到微服务,开发者可能会不适应,因为在单体系统中,多数开发者只需使用一种语言,无需关注运营问题。
将权力下放给开发团队以增强自主性也存在问题。习惯将工作推给他人的人,可能不习惯为自己的工作完全负责,甚至存在合同限制,使开发者无法承担所支持系统的运维责任。
人员是构建当前系统和未来系统的关键。制定发展愿景时,必须考虑员工的感受和能力,否则可能导致不良后果。每个组织在人员方面都有自