• 收钱吧研发效能实践之工具篇


    前言

    在降本增效火起来之前,每个研发团队就已经对效能二字充满了非比寻常的热忱与执着。究其原因,就在于研发工作经常会给人带来巨大的困扰。其一,每次代码提交后,研发人员都需要进行构建、测试、部署、合并等大量重复性的工作,当项目临近发布日期时,便倍感压力;其二,依赖手工的配置管理难免会在这种重复性的工作中出现人为错误;其三,在产品交付过程中,由于必要又不太熟悉的工具、看不懂的各种报错、搜不到的解决方法等技术上的壁垒存在,同样耗费研发人员大量的时间精力。怎样减少研发人员的时间不被无谓的浪费,如何将人的效率最大化激发利用,从而释放研发人员的创造性和积极性,是每个研发团队都会耗费心力去思考的事情。

    关于研发效能的理论、体系、指标、框架方面的文章,近年来在网上层出不穷,其中也不乏有一些大牛的理论分析与实践建议,如, InfoQ [1] 上有一整个专题讨论研发效能。我们在此对理论和管理上的分析和设计不做赘述,仅简单介绍收钱吧在工程和工具层面所做的实践和改进。

    CI/CD

    研发效能工具链的提升,首当其冲离不开CI/CD。

    CI全称Continuous Integration,意思是持续集成,指在开发过程中,经常性地提交代码与之前的代码进行集成,每次集成都经过一些自动化过程进行验证,如自动构建、自动测试、自动部署等,这样就可以提高代码开发和集成的效率,并且可以尽可能早的发现集成过程中的问题。

    CD通常指Continuous Delivery,意思是持续交付,它建立在持续集成的基础上,对软件产品进行发布和部署。现在,CI/CD通常一起使用,来指代提交代码到上线发布过程中的一系列自动化流程。

    CI/CD的建设水平,直接关系研发团队的生产效率和产品的交付周期。理想情况下,从提交代码到上线发布都通过自动化流程实现,无需人工介入,而现实情况中上线发布难免会受到一些人工的干预,有时候是因为技术的原因,有时候是因为业务的原因。在这样的情况下,我们介绍下收钱吧在建设CI/CD流程中遇到的问题以及对应的解决方案。

    CI/CD流程优化

    2018年之前,收钱吧使用Jenkins作为CI/CD的解决方案。Jenkins是一款开源CI/CD软件,用于监控持续重复的工作,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。Jenkins扩展性较好,插件的拓展可以大大提升研发效率和规范产品开发流程。

    使用Jenkins,可以很容易配置出CI/CD的流水线。但是随着业务的发展,Jenkins的弊端也逐渐显现出来。

    • 公司大多数项目是直接通过Jenkins界面配置项目的Pipeline Script,在发布过程中,由于项目的CI流程如出一辙,造成了大量重复配置,加剧了系统开销,也增加了维护难度

    • 由于在界面配置Pipeline,开发者无法对脚本进行版本管理,便导致了同一项目代码的不同分支无法执行不同的CI流程

    • Jenkins本身需要一定的维护成本,管理密钥、插件,安装agent,开发共享库等

    在2018年,公司将所有服务从Docker

  • 相关阅读:
    数据库最基础命令的大集合,四类分别有DDL、DCL、DQL、DML,让我给你解释一下吧
    【附源码】Python计算机毕业设计某企业的采购管理系统优化设计
    【android】如何设置LD_LIBRARY_PATH?
    我经历过的职场故事
    Ubuntu构建ESP32 ESP-IDF开发环境
    Pico Neo3使用Unity开发简明教程
    代码首次提交到gitee上报错问题解决
    【mysql 大表清理】磁盘占用太多,清理无效大表
    【安全】对称加密、非对称加密、数字签名和CA是什么?
    Java性能分析基础(一):常用工具
  • 原文地址:https://blog.csdn.net/Q54665642ljf/article/details/126703419