传统服务化(SOA)与微服务(Micro Service),并不是相互排斥的,相反,它们是融合在一块的。

国富论与IT企业组织架构

经济学鼻祖亚当斯密在其《国富论》著作中,第一章就是论分工。亚当斯密认为分工的作用有:促进劳动生产力的提升、提高劳动力操作熟练程度、强化劳动力技能、增强劳动力的判断力。

既然分工是合理的,企业也采用分工理论,那么根据IT企业所在服务的行业不同、所服务的客户规模不同,IT企业内部必然出现适合企业自身的部门划分,各部门各司其职、相互协作。

组织沟通形式与软件设计的表达形式

康威定律为大家所熟知,它的大概意思是:组织形式等同于系统设计。

服务化与微服务其实是组织形式的表现

将服务化或微服务运用的很好的企业或组织,必然,它们的组织形式是“服务化”的。每个单元组织,都是实际负责一个或多个系统的生命周期。

举个栗子,企业设立A、B两个组织部门,分别负责1~2个软件产品的生命周期,从产品设计到上线运维、产品改进直至最终产品消亡或被替换。每个组织部门拥有完整的团队建制,包括产品设计人员、开发、测试等等。当然,处于安全或效率的需要,也有一些职能是由公共服务组织提供支持的,比如运维、培训等。虽说是公共服务组织提供的服务,但公共服务组织还是一定程度上对A、B不同给予了定制化的专门服务。如此一来,A、B组织就可以很顺畅地对外提供服务了,整个企业也就SOA化了。

微服务是相对的

根据笔者实际观察,传统SOA方式,是可以在拥有数千名技术从业者的IT组织内运作良好的。每个软件产品都能够得到良好的开发、维护与改进,产品之间协作良好,共同对外部客户提供服务。这个规模的IT企业,拥有上千个软件产品,或者称之为服务,每个产品(服务)由一个几乎全副武装的小团队负责,若干个小团队组成一个个研发中心。从IT企业角度来看,研发中心之间是SOA,而从小团队级别来看这不就是“微服务”了吗?