1.4 有责任感和运维意识的工程师文化

考察微服务的技术性时,将它与开发这些微服务的工程团队割裂开来进行调查,是一种错误的行为。通过一个个轻量的、独立的服务来构建应用会彻底地改变组织工程化的方式,所以对团队的文化和优先事项进行引导是微服务应用能够成功交付的重要因素。

对于那些已经成功实现了微服务架构的组织来说,很难将原因和结果分清楚。到底是团队的组织结构和表现顺理成章地成就了这种细粒度的服务开发模式,还是细粒度服务的开发经验成就了团队的这种结构和表现?

答案就是,两者都有。长期运行的系统并不仅仅是提出功能需求——然后进行设计、开发——最后把这些功能堆到一起,它还反映了开发者和运维人员的偏好、观点以及目标。康威定律在某种层次上表达了类似的含义:

设计系统的组织……都是受到约束的,其设计出来的方案只是这些组织的沟通结构的翻版。

“受到约束”应该表示沟通结构会限制和约束系统的开发效果。然而事实上,微服务的做法意味着它正好相反:要避免系统开发过程中的冲突和紧张,最重要的方式就是按照开发者要开发的系统的形式和状况来设计组织。

有意识地和组织结构相互依赖实现共生是一种很常见的微服务实践。为了能够从微服务中获益并充分地管理其复杂度,开发者需要制订一些对微服务应用有效的工作原则和做法,而不是继续采用以前开发单体应用时所使用的相同技巧。