有一个生产系统已经运行了很多年,最初是作为 PHP 应用程序,然后是与 Rails 的混合体,现在完全在 Rails 中。目前尚不清楚它已经存在了多长时间。最古老的 git commit 是从 5 年前开始的。
目标是不惜一切代价保持系统运行。只要没有中断,我们使用什么代码都没有关系。目前它是 Rails 版本3.2.33
。
如果我们不升级任何宝石,我们就有可能变得过时且无法部署。如果我们升级,我们将需要对代码进行更改,从而导致潜在的错误蔓延。我们不仅面临代码腐烂,而且还面临由于 AWS 中断而导致的停机。
确保万无一失的第一步是什么?我花了几个月的时间编写黄瓜(集成)测试,但很难涵盖所有边缘情况。该应用程序已经运行了很长时间,以至于大多数错误都已修复,并且几乎没有新的异常。测试从一开始就不是优先事项,因此大多数代码都没有记录。