伴随着前端业务在移动互联网行业快速发展,前端业务的持续集成、交付、部署成为阻碍研发效率提升的瓶颈。如何实现工具化、智能化是许多有梦想的工程师们追逐的方向,各行业大佬们在这条道路上前赴后继。我们结合前辈们的经验,结合金融行业的特性,以DevOps的理念为主导,进行了前端持续集成、交付、部署的实践,提升研发效能。以期通过这些实践,帮助更多的前行者。
名词解释
① 持续集成 (Continuous Integration)
持续集成(CI)可以帮助开发人员更加频繁地将代码更改合并到共享分支或“主干”中。一旦开发人员对应用所做的更改被合并,系统就会通过自动构建应用并运行不同级别的自动化测试(通常是单元测试和集成测试)来验证这些更改,确保这些更改没有对应用造成破坏。如果自动化测试发现新代码和现有代码之间存在冲突,CI 可以更加轻松地快速修复这些错误。
持续集成是一种保障。
② 持续交付(Continuous Delivery)
完成 CI 中构建及单元测试和集成测试的自动化流程后,持续交付可自动将已验证的代码发布到存储库(一般认为是开发库或测试库)。为了实现高效的持续交付流程,务必要确保 CI 已内置于开发管道。持续交付的目标是拥有一个可随时部署到生产环境的代码库。
在持续交付中,每个阶段(从代码更改的合并,到生产就绪型构建版本的交付)都涉及测试自动化和代码发布自动化。在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中。
持续交付表示的是一种能力
③ 持续部署(Continuous Deployment)
对于一个成熟的 CI/CD 管道来说,最后的阶段是持续部署。作为持续交付——自动将生产就绪型构建版本发布到代码存储库的延伸,持续部署可以自动将应用发布到生产环境。由于在生产之前的管道阶段没有手动门控,因此持续部署在很大程度上都得依赖精心设计的测试自动化。
实际上,持续部署意味着开发人员对应用的更改在编写后的几分钟内就能生效(假设它通过了自动化测试)。这更加便于持续接收和整合用户反馈。
持续部署是一种方式。
行业特性
作者所处的是金融行业,谨以金融行业的前端DevOps落地进行浅析,以期帮助更多的伙伴通过CI/CD提升研发的效率。金融行业与互联网行业有所不同,由于生产环境数据及其敏感,稍有不慎将会造成系统性风险,金融行业场景不同,运用DevOps的方式也就有所不同,各个环节需要在依托流程化管理的同时增加一些人工控制手段,通过关键卡控点的管控来规避风险。
使用目标
依托流程化的工具提高研发投产效率,释放研发资源、测试资源、运维资源,为业务赋能。通过标准化构建模型,集中构建,节约资源。通过流程治理,缩短整体流程时间。通过整体体系统化管理后,效率可提升80%。
整体链路图
如何落地?
研发效能的提升是一个持续的过程,需要组织的持续关注。
一般可以采用如下方式推进:
1、 流程治理
写好代码,对于一个团队来说,是很容易的事情,如何让代码的产物快速流转到生产环境,却是一件负责的事情。制定或规划出契合团队的整体研发流程,是进行DevOps建设的必要前提。良好的研发流程,可以在链路上缩减时间,减少不必要的资源和时间消耗。
流程的治理是需要深入到现有流程中,提炼整个流程的精髓,寻找流程中可优化、可改进的点。
2、 效能工具
大多数业务团队会采用手工或半智能的方式解决当下遇到的研发问题,提供多种多样的功能重复的“轮子”,造成了资源浪费。
研发流程需要一些工具保障,这些工具应该进行收口,通过集中管理资源,统一规划设计,确保工具中台化,开发工具并不断推进工具的演进。同时,通过工具释放资源。
3、 团队文化
一个产品需要用心的经营,才能使得产品更好的服务用户,通过不断的演进、迭代,完善功能。在持续的过程中,团队文化不同决定推进方式得不同。
如果团队文化为积极型的,可采用激进的模式推进产品;如团队文化为保守型的,可采用稳妥的渐进式推进。
如何评价?
对于一套系统,如何评价是在系统开始建设前需要想清楚的。建立一套指标体系是一个很好的方式,指标体系并非一成不变,各个时期采用不同的指标来评价。
初期指标建议采用使用情况,从入驻量、构建量、发布量多维度衡量,通过与全量数据比照,得出系统的发展曲线,结合业务实际情况可以预测出临界点和增长点。
中期指标建议采用细分模式,对各类型的应用的各流程的耗时、成功率、频次进行统计,通过分析技术得出各业务的指标数据,以中位数作为驱动各业务治理的依据。与此同时,通过分析总体数据,对当前流程中的各阶段进行深挖,重点突破任务时间长、不可并行部分。
后期指标建议以360度数据报表模式,指导生产实际,为管理层决策及运维提供数据依据。以大盘模式为切入点,逐层细化出有价值的数据信息,围绕数据做文章。
总而言之,所有这些CI/CD的措施,都是为了降低应用部署风险,优化研发流程,提高业务交付效率。通过DevOps的理念提升研发效能,建立适合团队的最佳实践,才能为团队赋能。
下篇:无线持续集成交付平台的设计与实现