在数字化的转型浪潮中,开发人员的生产力越来越被企业重视,提升团队研发效能、缩短TTM成为了实现企业战略目标的重要措施。企业中的研发团队从每个团队各自试验、探索,逐步整合基础设施、最佳实践、企业规范等,形成企业内部研发平台,为所有团队开放企业核心资源和提供DevOps能力,使研发团队更专注于业务价值的交付。
经过多年的业务能力建设、不同的技术投资和整合,许多传统组织被遗留技术、人员、流程和文化所困扰,这阻碍了企业进行创新和试验。他们看到互联网新玩家冲入行业赛道,并取得指数级增长,蚕食其耕耘多年的市场份额。这些新玩家没有负担,他们更快、更精益、更勇于尝试,并采用平台化思维。
在与这些企业或组织的合作经验中,我们观察到他们的平台化战略转型往往会经历三个演进过程,首先他们使用成熟的工具链提升研发速率,紧接着整合企业资源,构建研发平台实现效能度量和持续改进,并最终尝试开放技术平台打造共赢生态。
研发工具链
在一个研发团队运行的早期,由于经验、成本、进度等限制,没有较为成熟的交付体系与研发工具,尤其是规模较小的团队,他们更倾向于选择市面上已有的一些研发工具。不论是FOSS(免费开源软件)还是COTS(商业现成产品),总是希望采用一些开箱即用的成熟产品,来提高整个研发交付的效率,尽可能降低研发工具自身复杂度对交付带来的影响。
不论一个团队规模如何,有几类常用的工具会贯穿整个研发与交付流程。我们可以简要的分为这几大类:
- 项目管理类
在项目协作、需求管理方面,很多团队都采用了Jira,Confluence等Atlassian系工具,或TFS的微软系工具。国内企业常用阿里云效、禅道等。这类工具的功能大而全,能满足绝大多数团队的需求,并且有成熟的售后支持。
此外,还有一些功能较轻量级的管理工具,例如Trello,Mingle,github.pages等,只提供看板维护、文档展示等较为单一的功能,使用时需要在这些工具间来回切换。
- 研发构建类
越来越多的团队开始实行敏捷开发,为了缩短发布周期,而逐步推动持续集成与持续部署,相应的研发工具也慢慢推广开来。如版本控制工具Git;构建工具Maven,Gradle;CICD工具Jenkins, GoCD, BuildKite, BamBoo等。
- 代码测试类
由于人工手动测试耗时耗力,容易出错,特别是在上线前的回归测试,往往是重复枯燥的体力劳动,我们倾向于将更多的测试自动化,集成在流水线中。许多团队会在用Gatling,Selenium,Cucumber,Jmeter等测试工具,从安全、性能、UI、业务等角度全面覆盖,并将测试过程自动化。
- 部署运行类
基础设施维护也是较为繁重的工作,从虚拟化到容器化