持续交付的七个问题探讨(摘录)

“You build it, you run it”

这是 Amazon 一年完成 5000 万次部署,平均每个工程师每天超过 50 次部署的核心秘籍。

而这一切,都离不开各种自动化测试工具及高效的持续交付管道。

目前大部分互联网公司,尤其是新兴的创业公司,已经从传统的瀑布流模式变革到敏捷开发模式。随之而来的 DevOps 以及持续交付等概念,也成为当下异常火热的话题。大家的探讨常常离不开以下七个问题:

持续交付本质上是什么?它是如何提升开发效率的?
持续交付在技术实现上有哪些关键点?
从2010年国外就有持续交付的书出炉,7年过去了,持续交付现在使用的普及率怎么样?
持续交付适用于什么样的公司和团队?创业团队?大公司?做什么业务类型的公司?
团队规模不同,大团队和小团队在持续交付的应用上痛点在哪里?
老团队在转型持续交付的时候会遇到哪些阻力?
持续交付的应用是不是在团队中常见?从个人角度来说,学习持续交付的意义是什么?会不会自己学习了,团队不用,学了也没啥用?

持续交付本质上是什么?它是如何提升开发效率的?

持续交付的概念已经交代了其本质,即高质量的快速交付。高质量和快速交付就是其本质。基于高质量和快速交付两个出发点,持续交付的最佳实践实际上是因团队而变的,并不是所有的最佳实践都适合于所有团队,因团队而异。然而其包含的几个基本持续交付管道则是必须的,这几个交付管道包括:代码提交,测试,部署和发布等基本管道。

图片发自简书App

几乎所有的最佳实践都能从一定程度上提高开发效率。举例说明,代码提交管道里有很多关于版本控制(Git)的使用最佳实践,比如提交前需要做pre-commit测试,提交后需要有静态代码检测,结合CI系统使用,保证了代码的质量。

同样的XP(包括TDD开发等)原则以及自动化测试管道的存在同样保证了代码的质量。

表面上看,似乎开发人员花在开发,尤其是测试上的时间增加了,效率是否提升存疑,然而事实并非如此。事实上,通过实践这些操作,开发人员之间可以更好的保证项目在 CI(持续集成)系统上面的健康状态。

尤其是在需要大量合作的项目中,往往一段时间以后,项目build就处于不稳定的状态甚至 fail 状态,在这种状态下开发,很可能导致各种冲突的产生甚至代码的回滚,对后面的集成阶段产生极差的体验。而从长远来看,这些管道,尤其是测试管道的实现,极大保障了项目始终如一的品质,最终来看,实现开发效率的极大提升。

持续交付在技术实现上有哪些关键点?

其实持续交付和DevOps一样,技术实现上是多样化的。而真正的落地关键点却不在技术上。对于DevOps来讲,关键点是DevOps团队文化的普及,其中就包括通过实践持续交付来推动DevOps文化。但最关键的点还是在于组织上从上而下的普及,即技术leader(CTO或者首席架构师)在技术团队来普及DevOps文化,包括团队内如何合作,跨部门如何合作,使用怎样的工具来实现持续交付以及怎样将DevOps文化推广到整个公司。

具体到持续交付,那么最关键的还是搭建持续交付管道。持续交付管道搭建完毕以后,针对每一个管道或者步骤,再寻求适合于自身团队和每个管道的工具和技术。

从2010年国外就有持续交付的书出炉,7年过去了,持续交付现在使用的普及率怎么样?

首先,目前来讲,大部分好的技术基本都是国外先有然后国内才开始流行的,国内互联网行业更偏重于业务或者商业模式,这在全球都可以说是领先的。然而技术上还是处于相对的落后状态。包括近几年非常火热或者逐渐火起来的持续交付,DevOps,Docker,区块链等等,都处于这种状态。

其次,国内大公司由于技术传统的问题,普及率并不高,但很多中小公司在实现持续交付上已经付出了很多努力。国外的很多大公司已经号称可以做到每天多次产品交付了,包括但不限于亚马逊,谷歌,facebook等等。国内随着容器技术和DevOps文化的普及,相信也会像国外一样,越来越多的公司开始实现持续交付。

持续交付适用于什么样的公司和团队?创业团队?大公司?做什么业务类型的公司?

持续交付适合于任何团队。之所以敢这样说,是因为持续交付有一个非常非常重要的原则。即要求,代码的上线和业务的上线分离。

简单讲,就是运维可以随时上线master(release)代码。即主干代码永远处于releasable的状态,而不关心业务代码是否已经开发完毕。目前可以实现这一点的技术叫做release train和feature toggle。而且他们带来的好处不单单是这一点,通过release train和feature toggle的实现,可以使产品经理拥有在线上做A/B testing的能力,可以实现灰度发布等等。所以说,在技术上完全可以做到持续交付而不管你是怎样的业务。

团队规模不同,大团队和小团队,在持续交付的应用上痛点在哪里?

持续交付能不能做好,实际上跟团队大小无关。但一般情况来讲,一个团队如果维持在5-8人之间,效率更高。

不分项目大小,在实际落地过程中持续交付的痛点很可能在于测试管道的实现。因为测试管道要求既要复杂到可以cover掉大部分的代码和业务场景,又要简单到可以支持分钟级甚至秒级的交付。那么自动化测试的实现方式和执行时间就是一个很关键的问题了。

老团队在转型持续交付的时候会遇到哪些阻力?

阻力分为内因和外因。内因即技术团队本身的原因,包括团队技术能力,技术团队之间的合作和团队leader态度等等。比如开发的目标是改变,运维的目标是稳定,测试的目标是控制风险,大家相对来讲拥有不同kpi,这些是技术团队本身需要解决的问题。

但一个拥有DevOps技术文化的公司,肯定不会在实现持续交付的时候遇到技术阻力。

阻力其实多半来自外因。比如技术资源都是有限的,这时候各部门对于技术资源的争夺很大程度上成为了持续交付普及的阻力。若一个大的团队拥有一个大的待转型的项目,这项工作往往要持续很久甚至数年才可以完全转型完毕。而在这个过程中,产品部门需要技术资源来改进提升产品体验,甚至研发新的产品,运营部门需要技术资源来搞各种活动来实现利润。架构部门与此同时还要推动持续交付的实现。

所以外因往往是转型中的痛点。这时候,其实也有解决方案,即Martin Fowler曾经提到过的Strangler方法。有兴趣的读者可以自行搜索研究一下。一个最简单的例子,新起的项目要尽量做到使用持续交付,不要再往老路上走。如果你已经意识到自己在坑里了,就不要再继续往下挖了。

新团队一上来就用持续交付也是可行的。

图片发自简书App

持续交付的应用是不是在团队中常见?从个人角度来说,学习持续交付的意义是什么?会不会自己学习了,团队不用,学了也没啥用?

这个肯定不会。

持续交付比DevOps更偏重实践一些,DevOps更偏文化一些。所以在学习持续交付的过程中,除了一些概念上的东西,会学到非常多最佳实践。

其中包括各种各样的工具,环境配置管理,代码版本控制,各种测试工具和技术,代码build工具,持续集成工具等等。

而且通过学习持续交付,可以更加了解自己目前的工作方式是不是真的适合所在的团队,继而才有可能帮助团队做出有效的改变。

尤其当你是团队leader的时候,这几乎可以改变一个团队的命运。

图片发自简书App

个人学习持续交付的意义就显而易见了

第一,编织自己的持续交付知识网络,开阔眼界,了解这种工作方式。

第二,学习到很多技术工具。

第三,作为leader,可以极大提升团队战斗力、交付能力以及交付质量。

即使你不是leader,作为一个有追求的程序员,未尝不可以去建议老大进行这样的改革,你也会成为改革的推动者。

后记:

程序员加班是常态,总有人会嘴上说“只要提高效率,就不用加班这么严重了“。但是,有时候你加班并不是个人效率低,而是涉及到组员间的协作,甚至跨部门协作时的整体效率低下,一个高效的个人面对一个低效的团队,浑身是劲也使不出来。

如果你也在被这样的问题困扰,那你可以考虑系统学习一下持续交付了。

图片发自简书App

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,065评论 25 707
  • DevOps转型的动机 我们的客户是一家海外本土最大的金融保险集团,他们在发展到一定规模以后,意识到自己就像一头笨...
    ThoughtWorks阅读 2,621评论 0 34
  • 如愿进了一家非常喜欢的外企,却总想再次拿起笔在真实的纸上书写人生。简书,你好。
    青书影阅读 135评论 1 1
  • 有两个和尚分别住在相邻的两座山上的庙里。两山之间有一条溪,两个和尚每天都会在同一时间下山去溪边挑水。久而久之,他们...
    镜中剑阅读 278评论 0 0