实践中的持续部署

持续部署,Ash Maurya称之为:“在一天内多次完成发布同一款软件的过程,相比以前几天、几周乃至几个月的时间,现在可能几分钟就完成一次部署。”最近,在以精益为主的“消除在制品”活动中,持续部署成为热门话题。然而,虽然很多人可能会发现这是个吸引人的目标,而且从道理上讲也很值得去做,但能想明白该怎么做的人却没有多少。 Ash Maurya用自己公司的实施经验帮助填补了这个空白。

先做简单的事情-进行小的变更,然后疯狂审核发布流程。我开始严重依赖功能测试,而且超过了对单元测试的依赖,这让我能像用户那样测试应用中的变化。我还发现了一组事件,它们的出现表示可能发生了特别不对劲的问题(比如,系统中没有用户),并且依此(使用nagios/ganglia)建立了一个实时报警系统。 我们慢慢建立了自信,并逐渐提交范围更大的多部分变更,每次提交也让我们的测试套件和监控脚本变得更为完善。经过一系列的迭代,相比过去的阶段性发布,我们的恐惧感实际上也降低了很多。因为每次发布提交的代码量变少了,我们就能够放心地把互相关联的问题解决方案放在一起进行发布。

Maurya使用下面的原则和实践来描述他的持续部署过程:

  • 别去推功能” 这是基本的精益箴言。 让客户向你的MVP提供反馈,以此来“拉动” 新的功能。
  • 少量编码”对于Maurya而言,两个小时的编码结束后,就要签入代码了,并由此导致自动构建 。
  • 尽量采用功能测试而不是单元测试”Muarya使用了Selenium(基于web的自动功能测试工具,由ThoughtWorks开发) 。
  • 必须测试用户激活流程绝对要保证让用户“初步满足的关键路径”是起作用的。
  • 使用自动软件更新”应该尽可能保证用户在不受影响的情况下收到更新。Maurya详细描述了他是如何为基于OSGI的应用做到这一点的。
  • 集成警告和监控”使用nagios和ganglia, Maurya可以获得任何系统使用异常的缺陷通知。
  • 集成应用程序级别的诊断”一个应用程序能够通过自检来发现问题,而且这些问题是用户和测试可能无法发现的。
  • 未预期的错误只能允许发生一次”花点时间来理解真正的原因并彻底根除它。

你可能感兴趣的:(实践中的持续部署)