第4篇:如何组织微服务开发团队

本文探讨了高效开发组织中微服务架构的重要性,以及两种团队组织模型——共享所有权和服务所有权模型。共享所有权可能导致代码质量问题,而服务所有权则强调团队的自治和职责明确。理想的团队应小而全能,专注于有限的服务,以提高代码质量和团队效率。然而,多团队协作可能增加复杂性,需要良好的协调。
摘要由CSDN通过智能技术生成

一个高效的开发组织通常由多个团队组成,每个团队都是长期存在的、规模较小、松散耦合、自治和跨职能的。根据康威定律(架构反映了构建它的组织的沟通结构),由松散耦合团队组成的组织需要松散耦合的架构。

微服务架构就是这样一种松散耦合的架构。它是一种将应用程序构建为一组松散耦合的服务的应用程序架构。可以通过多种方式识别服务,并围绕业务功能组织服务。

服务和团队之间的关系是什么?

一种方法是共享所有权模型,团队根据需要处理每个服务,如团队可能需要同时修改多个服务的代码来实现某个功能。这种方法的优点是使团队与用户体验保持一致;缺点是沟通成本高并且由于缺乏代码所有权会增加代码质量差的风险。

我所在的开发团队就曾经采用了这种开发模型,结果导致:

  • 一个微服务的代码中,有多种代码风格,代码存在大量的坏味道,如代码重复
  • 开发对其修改的微服务的代码架构、业务等并不都是非常清楚
  • Code Review时团队成员无法对一个微服务的代码架构、开发规范等形成统一认识
  • 站会时间长
  • 团队成员对代码进行优化和重构的意愿比较低

另一种方法是服务所有权模型。一个自治和跨职能的团队负责一个或多个服务的开发、测试、运维和部署。这种方法的优点是团队职责清晰,沟通效率高;缺点是在和其他服务有关联的边界处需要与其他团队协商API和对齐开发计划。

理想情况下,一个团队应该只拥有一项服务的所有权。过多的服务会增加团队业务和管理的复杂性,并且随着各个服务复杂性和规模的扩大,势必导致团队规模的扩大,团队规模扩大到一定程度时就需要将团队拆分成更小的团队,不利于团队的稳定。

那么,如何组合一个合适的微服务开发团队呢?

  • 由跨职能的团队组成,团队规模很小,如8-12人,包含至少一位QA和一位BA
  • 有明确的职责:开发和运维一个或多个业务相关联的服务
  • 团队应该是自治的松散耦合的
  • 服务的复杂性与团队的认知能力相匹配(如不能为全是新人的团队分配过于复杂的服务)

在这里插入图片描述

这种模式的优点:

  • 使每个团队都能够自主工作,并与其他团队进行最少的协调
  • 使团队松散耦合
  • 由于长期的代码所有权,提高了代码质量

这种模式的缺点:

  • 团队不一定与用户的体验保持一致
  • 实现跨服务的功能更加复杂,需要多团队协作

如果一个团队负责多个服务,在团队内部还可以按stream的方式划分团队,这时:

  • 每一个stream负责一个服务的开发
  • 团队中的核心开发、BA和QA在多个stream中共享
  • 服务的复杂度要与stream内的团队成员认知能力相匹配

在这里插入图片描述
本篇文章已收录于微服务开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值