gitbook/持续交付36讲/docs/10175.md
2022-09-03 22:05:03 +08:00

9.8 KiB
Raw Permalink Blame History

开篇词 | 量身定制你的持续交付体系

你好,我是王潇俊,从今天开始,我将会和你一起聊聊“持续交付”这个话题。

“持续交付”已不再是一个陌生词汇了,绝大多数软件研发企业,都在或多或少地实施“持续交付”,因为大家都清楚,也都曾经体会或者听别人说过,“持续交付”能够提高研发效率。 但是要说实施得多好、多彻底,那我估计很多人都会面面相觑。

做好持续交付并不是件易事,从我的经验来看,它主要难在三个地方。

第一,实施“持续交付”,将会影响整个的研发生命周期,会涉及到流程、团队、工具等多个方面。很可能需要突破当前组织的束缚,引起大量的技术和组织变革。因为,实施“持续交付”需要组织从上到下的认可,需要有大勇气将一些可能属于黑箱操作的工作,公开出来给大家监督。所以,这样的事情很难推进。

第二,实施“持续交付”,对实施者和参与者的要求都很高,他们不仅需要了解开发,还要了解流程,了解测试,了解运维,甚至还需要有一定的架构知识和管理知识。所以,这样的人才很难寻找。

第三,实施“持续交付”,大多数团队都希望能够快速见效,立竿见影。但是,“持续交付”的改进过程本身就是一个持续迭代的过程,需要多次循环才能体现效果。甚至在实施的初期,因为开发习惯和流程变化,团队在适应的过程中效率会有暂时的下降。所以,这样的效果很难度量。

由于这三大难点,很多人对“持续交付”敬而远之,或者爱恨交加。因此,我希望这个专栏能够带你全面、立体地认识持续交付,当你了解得越多,理解得越透彻,你也就越有信心。简单来说,我认为:

无论企业在什么阶段,无论个人的能力如何,都可以去尝试“持续交付”。

在实践中,我还经常看到一些错误的观点。

  1. 过度强调自动化。认为只有自动化才能算是“持续”但限于业务逻辑变化快QA能力不足等又无法实现测试自动化而发布自动化更是遥遥无期所以只能放弃。

  2. 过度强调流程化。总觉得“持续交付”先要构建强流程来管控,结果就一直限于流程和实现流程的“泥潭”里,却忘了初衷。

  3. 过度强调特殊化。比如我们经常会听到,我们的工程师能力特别强,我们的团队有特殊的工作方式,我们的系统有不同的设计,这些往往成了拒绝“持续交付”的借口。

希望在这个专栏里,通过我的讲解能够纠正你的这些错误观点。

同时,我也希望和你之间不是教与学的关系,而是切磋与讨论,在这三个月的时间里,我们一起讨论如何解决现实的问题,讨论如何进一步去做好“持续交付”,讨论那些超出你我边界的所谓的“难题”。

自从决定写这个专栏,我就一直在脑子里“翻箱倒柜”,在网络上收集相关参考资料,整理写作材料。突然,我脑子里蹦出一个问题:我自己当年是怎么接触到持续交付的,是怎么走上“持续”这条“不归路”的?

仔细回想一下接触“持续集成”这个概念其实是挺早的事情了。那时我在第九城市负责用户中心的开发有些与《魔兽世界》相关的功能需要大洋彼岸的老美同学QA进行验收。因此为了利用时差优势我们如果有新功能要测试就会要求整个团队在当天下午冻结代码版本并在6点后向测试环境发布。

晚上我们睡觉的时候,老美们就开始干活了。因为《魔兽世界》的爆红,所以当时开发需求特别多,缺陷也特别多,几乎每天都要提测,我就干脆用按键精灵写了个脚本,实现了每天自动地处理这些事情。现在想想,这不就是每日构建嘛。

你现在可能和当时的我一样,正在采用或借鉴一些“持续集成”或“持续交付”的最佳实践,但还停留在一个个小的、零散的点上,并没有形成统一的体系,还搞不定持续交付。

所以,我希望这个专栏首先能够给你呈现一个体系化的“持续交付”课程,帮助你拓展高度和广度,形成对“持续交付”立体的认识。

其实从这个角度来看,我想通过这个专栏与你分享的内容,不正好就是我自己在实际成长过程中一点一点学到的东西吗?那么,如果你不嫌厌烦,可以继续听一下我的故事。

离开第九城市之后由于经受不住帝都“干燥”的天气2008年我又回到魔都加入了当时还默默无闻的大众点评网。在那里我真正体验了一把“坐火箭”的感觉也是在那里我与“持续交付”真正结缘。

点评是一家工程师文化很浓重的公司一直以来都以工程师的能力为傲。但随着O2O和移动互联网的兴起点评走到了风口浪尖团队在不断扩大而研发效率开始下降了。

起初,大家都觉得是自己的能力跟不上,就开始拼命学习,公司也开始树立专家典型。但结果却事与愿违,个人越牛,杂事越多,不能专注,反而成了瓶颈。总结之后,我们发现,这种情况是研发流程、合作方式等低效造成的。个人再强放在一个低效的环境下,也无力可施。

然后QA团队开始推动“持续交付”试图改变现状。为什么是QA团队呢因为QA在软件研发生命周期的最后一端所有前期的问题他们都得承担。低效的研发模式和体系首先压死的就是QA。但是QA团队最终还是以失败收场了。究其原因

  1. 缺乏实践经验多数“持续交付”相关的图书、分享都停留在“what”和“why”上没有具体的“how”

  2. QA团队本身缺乏开发能力无法将“持续交付”通过工具进行落地只能流于表面的流程和理念。

但这场自底向上的革命,却让公司看到了变革的方向。

之后,点评就开始了轰轰烈烈的“精益创业”运动。“持续交付”作为研发线变革的重点,得到了更多资源的支持和高度的关注。也是在这时,我获得了与国内众多的领域专家进行探讨和学习的机会。

最终,点评是以发布系统为切入点,从下游逐步向上游的方式推行“持续交付”。 并且在这个过程中,形成了专职的工程效能团队,从而打造出了一套持续交付平台。

所以,我希望这个专栏的第二个重点是,结合我个人多年的实践经验,与你分享“持续交付”涉及的工具、系统、平台,到底如何去设计,如何去实施,如何去落地。

离开点评之后我加入了携程。携程的规模、体量相比点评又大了许多。比如携程有近20个BU应用数量达到6000+研发人员有3000人同时还有去哪儿、艺龙等兄弟公司在系统上也息息相关而且携程随着多年的业务发展系统复杂度也远远高于点评。要在这么大的平台上推行“持续交付”挑战是巨大的。

其实,携程在“持续交付”方面一直以来都是有所尝试和努力的,引进、自研各种方式都有,但是收效甚微。其中构建的一些工具和平台,由于种种问题,反而给研发人员留下了坏印象。这里面自然有各方面的问题,但我认为最主要的问题是以下三点:

  1. “持续交付”必须以平台化的思想去看待,单点突破是无力的;

  2. “持续交付”的实施,也要顺应技术的变迁,善于利用技术红利;

  3. “持续交付”与系统架构、运维体系息息相关,已经不分彼此。

事实上在携程推进“持续交付”时我们联合了框架、OPS等部门将目标放在支持更未来的容器化、云原生Cloud Native以及微服务上利用这些新兴技术的理念和开源社区的红利从“持续发布”开始逐步推进“持续交付”。

在推进的过程中,我们既兼容了老旧的系统架构,也为迁移到新一代架构做好了准备,并提供了支持。可以说,携程第四代架构的升级本身,就是在坚持“持续交付”,从而获得了成功。

所以在DevOps越来越火的今天我希望这个专栏可以达到的第三个目的是能够让你看到“持续交付”与新兴技术擦出的火花并与你探讨“持续交付”的未来。

除了以上内容,你还将通过我的专栏收获以下四个方面。

  1. “持续交付”的主要组件:配置管理、环境管理、构建集成和测试管理。
    在这一部分里,我会深入浅出地,跟你聊聊“持续交付”的这“四大金刚”,帮你全方位地理解“持续交付”的各项主要活动。

  2. 如何实现“灰度发布”。
    如果你对“持续部署”有所期待,希望进一步了解,那么你大多数的问题都可以在这一部分得到解答。

  3. 移动App中有所不同的“持续交付”体系。
    移动互联网如火如荼,你一定也想了解下,如何在手机客户端研发中做好“持续交付”。那么这一部分,你就不能错过了。

  4. 如何利用开源红利,快速搭建一套持续交付平台。
    在这一部分,我会手把手地,带你真正去搭建一套最小集合的持续交付平台。

学须致用,思须有为。我的这趟“持续交付”班车即将发车,如果你感兴趣,那就赶紧一起来,让我们一同欣赏沿途的风景吧!