在推行DevOps的过程中,持续集成和持续部署都是DevOps落地时需要重视的重要基石。而最终保证DevOps成功实施则需要更多更加细致的细节落到实处,比如版本管理。在这篇文章中我们将会结合企业实施版本管理中经常会出现的七个场景去理解为什么版本管理是复杂的,在此基础上提出”版本管理的七问”用以对帮助企业对自身版本管理能力进行快速的定位,同时在此基础上进行适合自己的最佳实践探索。
七个场景
我们列出实际项目实战中经常会碰到的一些典型场景,而这些跨项目的”反模式”是如此的熟悉,在我们实际的软件开发中真正实现了广泛地普及。
需要强调的是:版本管理一定要提前把其放到复杂的情况下进行考虑,才能真正地得出适合自己的最佳实践,几个人的小团队开发的几万行代码的功能单一的程序,一般来说碰到的问题都不多,但是同时考虑到多团队协作,多版本并行开发,多特性并行开发,紧急对应频发,例行部署众多,差分部署和回滚控制等诸多因素的时候,你会发现本来看起来无比简单的版本管理也突然不可思议地陌生和复杂起来。
场景一:在我本地机器是好用的
生产环境出了问题,确认之后,没有能发现问题所在,因为在开发者的本地环境是能正常运行的,而且在公用的测试环境中也不能再现,于是这类问题起初被定为成”只有生产环境才会出现的奇怪问题”。
确实存在此类问题,尤其是那种早期动辄百万和千万行的的大型系统,谁也不敢随意触碰。但是有很多这样的问题在最后原因分析的时候却发现仅仅是由于版本的不一致性导致的:生产环境和测试环境的不一致性,而这种不一致性又没有得到很好的管理,所以出现了这样的问题。具体举例来说:
- 生产环境使用的是数据库的RAC环境ÿ