本文从开发流程角度分析了持续交付的实现,开发人员的沟通问题会拖延发布日期,必须客观地观察,才能了解成员之间的问题和流程缺陷,可视化的系统有助于找到问题所在,并在最短期内解决,使用工具或系统管理工做数据是有效提升效率的方式之一。工具
现在,许多企业组织都在实施持续交付的作法。但想要提升持续交付的效率,不少时候会以为是在构建自动化测试和环境部署的时候出了问题,不过咱们认为还有其余因素致使咱们发布软件版本时有些压力和阻碍,只是不肯定问题是什么。测试
咱们开始观察每个软件版本发布过程并记录下看到的内容。例如,完成流程的每一个步骤所花费的时间,是人为手动仍是自动化发布,参与项目协做的人数有多少,以及发现致使新版本延迟发布的问题。一旦咱们有足够的数据,咱们就能够开始分析它并寻找解决方式,这些会成为咱们要解决的最重要的问题。优化
在观察时保持客观是很重要的,不要让本身的偏见掩盖实际发生的事实,特别是在尝试改进项目流程和系统时很是有价值。插件
缘由是显而易见的,在软件版本发布时经常不像咱们预计的那样顺畅,既不能无阻碍又没法实现频繁发布,从而影响了咱们的交付能力。cdn
在改进的过程当中,能与技术专家共同合做能更快优化发布流程。与专家合做的好处在于他们尊重数据和事实,而且也很是热衷于让事情变得更好。同时上文提到的收集了大量数据,就能够显示出咱们的问题,这意味着咱们专一于解决实际问题而不是假设。例如,数据显示咱们在测试分段环境中部署的插件比咱们想象的要少得多,所以咱们就能够垂手可得地处理这个阻止咱们轻松部署的问题。blog
若是某些改进真的很是重要,那在最快的时间内发布是不可置疑的。问题在于,当咱们想要选择本周的候选版本时,因为各类缘由,团队认为须要包含最后一分钟的“紧急”更改。这意味着推迟选择发布候选版本以及对发布周期的连锁效应,或者工做必须加班加点,即使赶在最后发布了,有时也会影响版本质量。队列
咱们开始有这样的疑问,“为何它必须在这个版本中出去?”,“若是咱们本周不发布更改会怎么样?”或“它能等到下一个版本吗?”。要获取答案其实很是困难,由于对于团队来讲开发已是一个压力很大的状况,这些疑问的提出会被视做阻止他们进行更改。但事实上,当咱们试图频繁地发布更改,更新迭代时,但实际上是能够等待下一周时,它确实是违反了原则。由于咱们会忘记了一点,软件版本发布的关键是稳定。进程
经过讨论并提出这些问题,咱们意识到有些变化根本不紧急,所以不须要赶工。这样作的好处是咱们的版本更加顺畅,须要修复错误的程序更少了,显然发布的压力也减小了,而后咱们能够更专一于如何进行周期性规律地发布。资源
改变习惯是很难,由于习惯是长期这样作的结果,但你必须努力中止旧习惯并用新习惯取而代之。选择合适的时机发布能够突出发现咱们的发布周期中的问题,并有助于解决修复问题。开发
咱们能够尝试一些方法来帮助咱们养成良好的习惯。例如,若是参与发布过程的人员将发送电子邮件做为主要通讯方法的话,那通常会有数小时的延迟。必须了解到,在收件人阅读并理解电子邮件以前,发件人其实尚未传达任何信息。若是收件人正在开会,或者天天只会按期检查电子邮件,那么可能会延迟更久才能看到它。
为了改变这种电子邮件习惯,咱们引入了一段时间的“物理提示”。在公众区域设立一个项目展现板,在上面写了候选版本号,每一个人均可以补充和查看,信息会像涟漪同样扩散到全部人。那你就会知道整个发布周期里你的任务,以及目前的各任务进度。这也会激励你赶忙去作任何你应该作的事情,这也有助于推进版本发布流程。
展现板有另外一个好处,让人们面对面交谈,相互了解并开始感受像一个团队。它帮助咱们下降了因沟通不顺畅致使的流程拖延的风险,使咱们团队合做,并帮助咱们造成了更好的沟通习惯。
总而言之,经过更有用的习惯来取代无效的习惯,展现板只是其中一个例子,你能够找到更多适合的“好习惯”。同时,一旦找到好习惯,那么就会造成行为雪球,在滚动中不断地变大,你甚至能够在这个好习惯的基础上再进行优化。若是你想了解更多,我强烈推荐能够在网上搜索 Helen Lisowski 的“Good of Good(Agile)Habits”研讨会。
当我第一次开始观察发布时,为了改进它们,咱们可能不知道如何理解问题。这时候与经验丰富的敏捷专家,精益和系统思想家合做的好处就显现出来了。事实证实,个人整个观察,收集数据和分析的方法,都应用科学思惟方式来理解问题的话会事半功倍。
如何应用科学的思惟方式来理解问题,包括你认为接下来会发生什么,并根据实际发生的事情调整你的后续步骤。它有四个主要步骤:
设定你的这次发布的目的和内容,有哪些是挑战,有哪些是平常。对咱们来讲,大部分会是按需发布,但这并不意味着咱们每分钟都会发布,咱们能够须要找到一种顺畅无bug的方式发布咱们想要的改进。
了解项目当前的开发进度和发布情况。这就是收集和分析的数据的来源,咱们基本上有一个电子表格形式的价值流程图。
创建阶段性的小目标,即您的第一个里程碑。从你当前的状态到你的最终目标每每是一个太大的跳跃,为了取得进展,肯定一个更容易实现的中间目标是有帮助的。好比对咱们来讲,能够将发布周期从15天减小到10天,而不是直接把目标定在3天。
肯定并执行以达到目的。这是一样须要数据分析,数据向咱们展现了咱们最大的问题是等待发布的队列时间过长。队列是“死”时间,在此期间没有任何事情发生,咱们只是在等待下一个过程发生。因此咱们就能够将第一个改进重点放在减小或消除队列时间上。
经过上面描述知道咱们要经过科学思惟方式来实现改变,这里有一个例子,咱们尝试将一个环境插件自动化安装到咱们的测试板块。这听起来像是一个自动化过程,可是通过判断后,咱们认为它是破坏的构建,主要缘由是只支持手动进行部署,那么手动部署让工做的效率下降,结合数据分析,手动部署会让开发人员分心,致使发布进度被延迟。因此为了自动化流程 ,那必须延迟或者放弃这个环境插件的安装。
目前运用工具来实现自动化进程是最快提高测试效率的一种办法,市面上也有不少能实现自动化测试功能的工具或者平台,国内有 EOLINKER,国外有POSTMAN 等等。因此对于在国内的环境,运用好的自动化工具,能帮你更好地实现项目运转,提升开发测试效率。有兴趣的点击了解 EOLINKER。
显而易见的好处是缩短了周期时间。周期为10天,咱们两周内不能发布超过一次。在进行了几回执行以后,固然咱们不会知足,继续优化自动化交付,日后再减小一半,直到能够在一天内发布。
当对持续交付复盘时,很容易只关注持续交付的技术部分,毕竟,这是大多数人和开发资源所关注的地方。可是,也请查看整个发布周期,根据在项目自动化的流程和所需时间,找到在此期间其余非技术因素阻碍了发布。了解发布周期流程中的全部步骤,找到问题并改进,再确保团队的沟通方法有效并合做,才能有助于实现持续交付。
参考资料:Sylvia MacDonald,Continuous Delivery - It’s Not All about Tech!