CI持续集成:一个战争故事

为何咱们应该尽早并尽量的频繁发布?

Fagner Brack安全

在第二次世界大战期间,苏联军队为了阻止德国入侵,想到了一个放在如今会被动物保护协会全球通缉的办法——训练了一批反坦克犬,当犬只身披炸药钻进德军坦克身下,引爆炸药破坏坦克。工具

不幸的是,这个“天才”的想法在落地时出现了严重的问题。测试

苏联人在训练军犬时用的是静止的坦克,到了实际战场上,坦克的移动和四周的枪声让军犬们慌不择路,要么被德国人枪杀,要么回到了战壕,反而炸死了苏联士兵。spa

并且……要知道狗是嗅觉很是灵敏的动物,他们接受苏联训练时坦克中装的是柴油,而德国坦克使用汽油,因此就致使了有些军犬并无按照苏联人设计的那样在德国坦克下奔跑,而是来到了苏联坦克身下,结果不难想象。设计

其实苏联人最初的想法是训练犬只进入一个固定的目标,用牙齿拔掉炸药拉环,而后安全回到战壕,可是没有奏效。能够说,在把反坦克犬部署到战场以前这个项目就失败了,败就败在从未在真正的战场环境下进行测试……code

说完二战的故事,再来看持续集成。开发

持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员常常集成他们的工做,一般每一个成员天天至少集成一次,也就意味着天天可能会发生屡次集成。每次集成都经过自动化的构建(包括编译、发布、自动化测试)来验证,从而尽快地发现集成错误。(Martin Fowler)rem

持续集成的目的,就是让产品能够快速迭代,同时还能保持高质量,这里并非说持续集成可以消除BUG,而是说可让咱们更容易发现BUG并加以改正。部署

联系上面的故事,假设反坦克犬计划的设计者一开始用一只犬在实际战场上进行测试,或许苏联人就能够在早期发现问题、控制伤亡损失、采起相应的改进……毕竟控制一只狗比控制30只狗,显然是要容易不少。get

这就是持续集成最基本的好处。

固然在反坦克犬这个故事中,早期的部署或许会向地方透露战术,但软件开发实践并非战争。因此,在大多数状况下,咱们开发软件应该尽早进行集成,这样作能带来的好处远远超过其潜在的成本。

牛顿曾经说过:“若是说我看得比别人更远些,那是由于我站在巨人的肩膀上”。

没有什么比实际的失败更有参考意义,若想避免在开发中成为“计划反坦克犬的苏联人”,采用持续集成会是一种明智的选择。


阅读更多

开源PaaS Rainbond提供可扩展的CI/CD,支持各类主流开发语言的源码构建,支持代码滚动上线、一键回滚、灰度发布、AB测试,并支持对接Jenkins等第三方CI/CD工具。

进一步了解请访问Rainbond官网或试用公有云(新用户7天免费)

相关文章
相关标签/搜索