你可能经常会听到类似这样的一些话:
- *功能还没集成。
- *功能还没部署。
- *功能还没交付。
- *功能还没上线。
- *功能还没发布。
请问,以上“集成”、“部署”、 “交付”、“上线”、“发布”这几个概念,表达的是同一个意思吗?如果不是,它们有什么区别呢?
我相信大多数人都会为此而迷茫,本人也常常被这几个术语搞晕。
也许你会说,上面的例子太简单,难于判断。好吧,下面再给你一些更多的例子(均来自DOM【DevOps Master,简称DOM】认证课程的权威教材):
- 还要再花几天才能把这个新版本发布到UAT环境中。
- 上次发布新版本到生产环境时,你花掉了整个周末的时间。
- 一行代码的改动需要花多长时间才能部署上线。
- 每次提交代码都可能产生一个可发布的版本。
- 很多公司都会在一天内发布很多次。
- 遵循极限编程的座右铭:如果它令你很受伤,那么就做更多的练习(If it hurts, do it more often)。合乎逻辑的极限就是每当有版本通过自动化测试之后,就将其部署到生产环境中。这种技术叫做“持续部署”,Timothy Fitz发明的一个术语。
- 持续交付指的是应用程序的构建、部署、测试和发布的自动化流程。
- 由良好的金丝雀发布系统提供的这层安全网让持续部署的风险甚至更小。
- 有些人反对持续部署,因为在直觉上,这么做的风险太高。但是,如前所述,越频繁的发布会让发布风险越低。
- 根据我们的经验,做这件事的最佳方法就是尽可能频繁地发布(即持续交付)。
- 持续交付的目标是让应用程序总是保持在可发布状态。
- 对于很多组织来说,持续交付不仅仅是一种部署方法。
现在,你是否能区分开“集成”、“部署”、“交付”、“上线”、“发布”这几个概念了呢?
一头雾水!对,至少我自己仍然还不明白它们的区别。为此,我查阅了一些资料,但仍然不得解。网上的各种文章里有各种不同的解释,但要么是局限在特定的上下文环境中,要么是混淆使用,总是经不起推敲。
造成以上的混乱,我觉得可能是缺少对上述术语的标准定义和准确的描述。