持续集成的平衡之道

从亲历者的角度向大家分享从传统软件企业到Saas服务化企业,持续集成转型的感想,踩过的坑,受过的伤以及甜蜜的果实。也会分享一些特定场景下的技术管理+持续集成的落地方案。








第一个问题,人力成本。对于企业或团队,会认为需要一个专门的人来进行代码的审查和合并,这是目前比较常见的一种心态。对于大部分的CTO、技术总监、项目总监,思考这个问题会比较频繁。对他们而言,希望开发人员,测试人员的工作是OK的,并且是风险可控的,风险可控并不是说业务风险要可控,只要代码不写错就行了,而指的是内部流程上的可控。有时给内部团队过于的自由,导致出现了很多的问题。比如说开发,随随便便写一段代码,然后可能在他看来实现了一个基本的逻辑功能就OK了,甚至测试都测过了,但是,因为没有去对这一段代码进行审查,然后最终上线之后出现过大量的性能问题等等这些问题,其实是比较频繁的。在这时,需要一个专门的人来做一个审查和代码合并的工作,那么带来的问题就是,可能会承担一个额外的人力成本。


第三个问题,时间成本。一旦选择去做持续集成,在这个过程中遇到各种各样的,持续集成工具链中的问题,并且有些问题能解决,有些问题无法解决。因为持续集成这个泛概念在中国是比较流行的,但是具体到操作,有太多组合的可能性。从一个代码的管理角度来说,即便从最开始的,从跟踪使用什么样的工具,是使用Jira,还是使用别的工具?从第一步,分歧就开始了。选择使用一个什么样的工具,以及这个工具后面衍生出来的一个工具链,都会产生这样的问题。那么,如果你用的这套工具链中,有你不熟悉的产品,或者有国人不熟悉的产品,在解决这个工具链中遇到的问题的时候,带来的苦恼就会非常的大,幸福感很低。这是第三个问题,时间成本。





第一点,一些需求和bug是从客户反馈回来的,如何把它转换成系统内的需求点,功能点和bug处理的任务节点,这些问题如何去转化?另外,体制内自己产生的一些bug,比如,测试人员,QA人员对产品进行测试的时候,发现了一个bug,便反馈给开发人员,这也是需要解决的一块。以及产品经理,甚至销售人员,对产品提出了新的需求功能点,这些点如何尽快进入开发流程。这一问题是敏捷跟持续集成的大前提,如果要结合持续集成做敏捷开发,这是一个越不过去的坎,必须做,且要做得比较好,否则无法实现敏捷。如果为了做持续集成而把一个本身很敏捷的团队变成慢慢吞吞的一个团队,那就失去了持续集成的意义。





第一步,过滤掉创建仓库这些基础操作,开发人员去拉取一个dev的分支,假设开发人员叫韩梅梅,命名为dev-hanmeimei。她在自己的分支上进行开发,开发完成之后把自己的个性化分支合并回原来的dev分支上。因为如果主干目录开放给所有的开发人员去进行同时增量的进行开发工作,发现一个最大的问题就是时间差效应。比如当安排多个开发人员同时去开发一个产品的时,由于每个人有不同的功能上限节点,当某个人发布的时候,另外的人可能只改了一半,已经提交了,这会导致产品界面残缺,界面功能互相影响。所以在这种情况下,反过来做一些调整,把主干分支永远作为一个合并类分支,不允许任何人进行手段操作,dev分支去进行一个统筹管理。这个分支只允许人去进行合并,而不允许人进行提交,防止我们的主干分支被污染。这样可以完美的避过时间差效应。










之后使用Jenkins工具,做了很多的方案。因为为了使用Docker,只构建这一步便浪费了大量时间,用了至少三个节点的机器做Docker镜像的构建。因为每一次Push代码都构建一个镜像,当发版本比较频繁,或者开发人员提交合并频繁,一天构建会几百上千次,一个Jenkins节点构建的时候,CPU就达到100%,然后挂掉。后来全部改成分布式构建结点,虽然问题解决了,但是也不是解决的特别好,因为无法确定何时会出现一天内比较频繁的提交请求,最终定成每五分钟构建一次,无论提交与否,错开峰值,解决了一部分的问题。如果说对于只有几款产品,或者说代码的种类产品数少的公司,考虑用Jenkins是没关系的。
























最后,多产品项目的持续集成通过云效(RDC)的自定义流水线,降低了中间成员的时间成本,并且提高了效果。原因很简单,原来发布版本时,往往希望整个公司的人都到现场,原因是开发人员有时候没有足够高的自主权可以决定这个版本是否要上,出了问题是否回滚,甚至小一点的团队领导也没有这个权利。出了任何事情,开发人员需要征求项目管理者,遇到bug是回滚,还是后面再改bug,这占用了大量其他人的时间。现在通过自定义流水线的方式,可以开发人员直接发起一次请求之后,请求通过就可以发布了。前面所有的流程,包括构建,测试,打包,上传包,上传到测试服务器和线测服务器,都可以由开发人员完成,只有最后一步,确认发布到正式平台,迭代时,一定要某个项目管理者才可以发布,回滚也是同理,非常安全,且节约时间。



原文链接


转载于:https://juejin.im/post/5a72dddf6fb9a01cbd58ef1a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值