Page 43 - 《软件学报》2021年第5期
P. 43

崔海涛  等:面向微服务架构的开发组织适应性评估框架                                                      1267





















                                          Fig.3    Impact of microservices on organizations
                                               图 3   微服务对组织产生的影响
                 3.1.1    组织结构
                    组织结构是当前有关微服务的讨论中关注相对较多的一个话题,调整并改善公司的组织结构,无疑将促进
                 架构的有效性,从而帮助公司获取到使用微服务架构预期的收益                       [24] .人员配置、团队的数量以及每个微服务团
                 队的规模等,都是一个设计良好的组织结构需要去解决的问题.例如,微服务团队中的人员配置发生了变化,开
                 发人员、质量保证人员(quality assurance personnel)和运维人员(operation and maintenance personnel)不再是在各
                 自独立的部门工作,现在每一个微服务的开发团队中,都应该包含这 3 种人员                        [25] .而对于团队数量和团队规模的
                 设计可能不是一蹴而就的,需要在不断地适应微服务架构的过程中,对团队数量和团队规模进行调整.Di
                             [7]
                 Francesco 等人 在对微服务的一个行业调查中指出:在完成单体架构到微服务架构的迁移时,每个团队的人数
                 在 2~12 人之间,平均 6.5 人.这是可以进行参考的一个标准.
                    在团队规模的设计过程中,需要注意的一点是:当公司的项目开发进度已经出现延迟时,向团队中盲目增加
                 人员可能并不能解决问题,并且可能会让项目延迟更加严重                     [26] .新的开发人员加入一个团队进行工作,需要一定
                 的时间去适应,公司需要在评估之后对是否增加人员做出决策.
                 3.1.2    自治团队
                    Guzzo 和 Dickson [24] 将自治团队定义为“通常执行高度相关或进行相互依存工作的雇员被识别为组织中的
                 一个社会单位,并且他们在许多方面都被赋予了重要的权威和责任,比如制定计划、安排任务,并向成员分配任
                 务和做出具有经济后果的决策等”.
                    而自治性正是被微服务的支持者所宣称的一种优势                   [27] .团队之间的依赖被尽可能地降低,因此,当某个开发
                 团队完成了自己负责的微服务的开发时,他们不必等待其他团队的开发进度,就可以将完成的微服务发布到生
                 产环境中.同样,当某个团队遇到问题导致进度延迟时,其他团队并不会受到影响.自治性的优势还使开发团队
                 可以更专注于他们的开发,解决遇到的技术难题,而不用在与其他团队的沟通或是互相推卸责任上浪费时间,这
                 无疑提高了整个项目的开发效率            [25] .
                    但是有一些研究人员认为,自治团队带来了挑战                 [28] .自治团队可能存在看不到全局的风险,因为他们可以不
                 必经常与其他团队进行协商而独立开发和交付.这种风险可能会导致项目整体的不同步,或是不同团队难以合
                 作的文化.在这种文化中,团队可能需要去修复由其他团队负责的问题.
                 3.1.3    技术/工具
                    另一个讨论存在差异的影响是技术和工具的使用.
                    微服务架构使得每个微服务开发团队拥有了自主权,这种自主权允许开发团队不再局限于使用传统的技
                 术或是受限于整体项目的技术选择,他们可以通过尝试不同的选择以找出最适合开发出所负责的微服务的技
                 术和工具.同时,这也将有利于新技术的发展,并且降低开发人员使用可能已经过时技术的可能性.
   38   39   40   41   42   43   44   45   46   47   48