创建新版本并将其发布到生产环境的过程是 SDLC 中的关键步骤,但它通常是事后才想到的,并且从一家公司到另一家公司差异很大。
我希望人们能在他们的组织中分享他们对这个过程所做的改进,以便我们都可以采取措施来“减轻痛苦”。
所以问题是,在你的发布过程中指定一个痛苦/耗时的部分,你做了什么来改进它?
我的例子:在以前的雇主那里,所有开发人员都在一个通用开发数据库上进行了数据库更改。然后到了发布时间,我们使用 Redgate 的 SQL Compare 从 Dev 和 QA 数据库之间的差异中生成了一个巨大的脚本。
这工作得相当好,但这种方法的问题是: -
- 开发数据库中的所有更改都包括在内,其中一些可能仍在“进行中”。
- 有时开发人员会做出相互冲突的更改(直到发布投入生产时才注意到)
- 创建和验证脚本是一个耗时且手动的过程(通过验证我的意思是,尝试清除问题 1 和 2 之类的问题)。
- 当脚本出现问题时(例如,运行的顺序,例如创建依赖于脚本中但尚未运行的外键记录的记录)需要时间来“调整”它以便顺利运行.
- 这不是持续集成的理想场景。
所以解决方案是: -
- 强制执行对数据库的所有更改的策略必须编写脚本。
- 命名约定对于确保脚本的正确运行顺序很重要。
- 创建/使用工具在发布时运行脚本。
- 开发人员拥有自己的数据库副本进行开发(因此不再有“互相踩脚”)
我们开始这个过程后的下一个版本更快,问题更少,确实发现的唯一问题是由于人们“违反规则”,例如没有创建脚本。
一旦发布到 QA 的问题得到解决,当发布到生产时,它就非常顺利了。
我们应用了一些其他更改(例如引入 CI),但这是最重要的,总体而言,我们将发布时间从大约 3 小时减少到最多 10-15 分钟。