软件流水线中的巨大恶臭

2020-07-03 00:58:20

格雷格·劳(Greg Law)是Undo.io的联合创始人兼首席技术官,Undo.io是一家软件故障重放平台提供商。

这是1858年的夏天。伦敦。泰晤士河上弥漫着人类和工业垃圾的气味。异常炎热的夏季月份加剧了这一问题。但这不是一夜之间发生的。未能维护老化的下水道系统,以及使用该系统的人口不断增长,导致了污水的火药桶,带来了霍乱疫情,并笼罩在一种挥之不去的气味中。

时至今日,伦敦人仍在谈论“大臭味”。反复发生的霍乱感染导致了流行病学领域的曙光,我们最近都成为了这一学科的业余爱好者。

快进到2020年,您将看到现代软件管道面临着类似的“大恶臭”,这在很大程度上是由于持续集成(CI)的广泛采用,即每天几次将所有开发人员的工作副本合并到共享主线中的实践,以及持续交付(CD),即能够以可持续的方式安全、快速地将所有类型的更改(包括新功能、配置更改、错误修复和实验)投入生产或用户手中。

虽然当代的软件故障不会传播疾病,也不会散发出过去的恶臭,但它们肯定会带来毁灭性的恶臭,每年造成数十亿美元的损失和数百万开发人员时间的浪费。

这种浪费与CI/CD的意图背道而驰。每个人都在使用CI/CD来加速软件交付;然而,不断增长的间歇性和零星测试失败的积压却起到了相反的作用。它已经成为一个不断增长的淤泥,不断被失败滋生,速度快于解决问题的速度。必须清除此积压,才能使CI/CD管道恢复其全部功能。

在努力加快软件交付的过程中,故意留下与之正好相反的积压错误的系统有什么价值呢?我们得出这些实践不是偶然的,它的实践者既不懒惰也不无能;我们是如何做到这一点的,我们可以做些什么来缓和现代软件开发的巨大恶臭?