DevOps这个概念已经提出很多年了。DevOps就是开发(Development)和运维(Operations)这两个领域的合并。(有时候还包括产品管理、QA、*winces* 甚至销售等领域)
脱节
那么……为什么要合并这两个领域?原因很多,但首要原因是:我们目前的工作流程是脱节的。绝对的脱节。很多公司的开发部门和运维部门之间存在的深刻矛盾,其实就是这个“脱节”造成的。
下面是一个大家都基本熟悉的例子:部署软件产品。
开发部门要开发一款新产品。这款产品要使用最新最炫的技术,来保证客户的所有花俏的需求,从而给公司带来百万美元的利润。这款产品被要求使用最新的技术和运行平台,还得马上交付。于是开发部门没日没夜的加班、赶代码(cuts code like crazy),终于如期完成了任务。然后他们把自己的“杰作”一股脑的甩给了运维部门,后者还没能完全接手,前者已经迫不及待的开始了庆功会。
接到产品后,运维部门每个人的心中都充满了恐惧。
下面就是运维部门的恐惧之源:({A.B.C}表示A或B或C之一)
- 这款优秀的产品在目前的底层平台上无法运行,因为这个平台{太古老了,空间不足,不支持某某版本}
- 这款产品的体系结构跟我们的{存储,网络,部署,安全}模型不匹配。
- 这款产品的{ 报告,安全,监视,备份,服务提供} 我们搞不懂 ,所以没法把它做成实际可用的产品。
尽管伴随着不绝于耳的抱怨和咒骂,运维部门最终还是把这款产品安装好了。不幸的是,由于做了很多蹩脚的修改和不合理的强迫式运行,这款