1.2 DevOps与团队文化
DevOps团队在内部共享态度、价值、目标和实践,而这些团队通常具有如下特质:
团队每个成员都有极大的自主权,可以选择愿意承担的工作、任务和挑战;充分授权让团队成员拥有极大的自信,同时也能够得到快速锻炼。
团队成员共担责任,对于错误或失败每个人都有责任,是团队整体的错误,而不归责于某个成员。
团队成员在接受不同任务的过程中,可以更全面地了解团队承担的职责,对于团队成员实现的功能也增加了认识和理解,在此过程中,进一步锻炼了自己的能力,可以参与各种角色和功能开发。
团队成员分享快乐和痛苦,一同解决技术问题、跨越障碍,收获成功和喜悦,并共同分担在此过程中的痛苦和磨炼。
团队成员在解决困难、分担和分享的过程中学会担当,因而,每个成员都会积极处理团队需要承担的事务和需要解决的问题,进一步提升团队的主动性和自治性。
如果认为使用自动化的工具把开发和运维工作结合在一起就达到了DevOps,或者某个特定的团队来实施DevOps,其他团队保持传统的开发模式,其实就是打着DevOps旗号的伪实践,DevOps的价值和文化很难在这种模式下表现出来并发挥作用。DevOps是一种文化的转变,团队成员同时负责了开发、部署和运维的工作。在开发过程中不考虑如何部署,不考虑如何运维,仍然是割裂的团队和工作模式。
在向DevOps团队转型的过程中,可以通过表1-1中的指标把团队分为三个等级:
表1-1 DevOps团队转型过程中的分级指标
注解
变更前置时间指的是从代码提交到代码在生产环境中成功运行之间的时间;低效能团队的代码部署频率在2016年至2017年间得到了大幅提升,从1次/月~1次/半年提升到1次/周~1次/月。
让我们看一下高效能团队和低效能团队在表现上的差异:
高效能团队的部署频率是低效能团队的46倍。
高效能团队部署变更到生产环境的效率比低效能团队快440倍。
高效能团队部署故障恢复时间比低效能团队快96倍。
低效能团队部署变更失败率比高效能团队高5倍。
高效能团队人工参与的时间相当于低效能团队的60%~70%。
高效能团队倾向于使用主干分支,每天向主干分支合入,分支只存在若干小时,而低效能团队则采用长时间的特性分支。
高效能团队更倾向于使用松耦合架构,无论是团队独立开发的应用和服务,还是必须与其他团队合作开发需要交互的服务。
中国第一份DevOps年度调查报告中指出,国内50%的团队的DevOps实践经验都少于1年,同时随着团队在DevOps上的经验积累,自动化方面的投入增加,变更失败率可以得到逐渐降低。从2017年的DevOps现状调查报告中可以看到,在亚洲,工作于DevOps团队的比例大约是10%,而在美洲则高达54%,这也就不难解释国内经验不足的现状了。