Devops的介绍
Devops出现的背景
随着计算机技术的发展,工作内容更细分化、专业化,所以工作职责也逐渐分出开发( Development )和运维( Operations )两个完全独立的角色,更多的也都是处于独立的部门。
运维人员看重的是保障系统的稳定性、可靠性和安全性,而开发人员则想着如何尽快发布新的版本,增加新的功能,这两者本身就是一种矛盾和冲突,尽管他们的共同目标都是为用户提供软件产品或服务。
十几年前的软件开发模式也比较单一,基本上市瀑布模式,也有一些采用了螺旋模型。基本上一个项目基本设计两月,详细设计两个月,开发三个月,测试二个月,上线,总体下来,6 个月算是比较小的项目了,大的项目花费数年的时间也是屡见不鲜。
同时,随着云计算技术和平台的出现和迅速普及,基础设施变得更容易获得,也变得可编程化,所以开发者可以更容易的进行基础设施方面的工作,比如创建服务器、 RDS 数据库,部署应用等。拿 AWS 来说,就提供了非常方便的工具、API 和操作界面,开发者可以通过拖拖
拽拽来部署一套网站系统,而不必进行任何底层系统工作。
Devops的萌芽
在加州举办的 O’Reilly Velocity 2009 上,Flickr 的工程师 John Allspaw 和 Paul Hammond 发表了题为《10+ Deploys per Day: Dev and Ops Cooperation at Flickr》的演讲,虽然没有直接提出来 DevOps 这一叫法,但是一般都认为这时候 DevOps 的思想已经诞生,这次演讲也成为 DevOps 这一称呼出现的契机。
O’Reilly 主办的 Velocity 大会知名度非常高,但是其大会内容相对于开发来说,更多的是侧重于运维的内容。其实这个大会本身也是我们所说“开发和运维的分离(割裂)”的证明之一。
Flickr 的这个演讲,主要介绍了开发和运维围绕着共同目标,如何紧密合作,实现 1 天之内完成 10 次以上的软件发布,这也和维基百科上对 DevOps 的定义是一致的。该演讲也同时指明了,由于开发和运维在组织上的割裂,会导致互相之间的利益冲突,而冲突则会导致大家偏离组织最初的、统一的、整体的目标。其实销售和开发、销售和运维之间也有类似问题存在。销售要快速满足客户需求,开发偏保守,一般不敢轻易承诺;同样,运维对开发也像开发对销售一样保守,更看重稳定性,不愿轻易改变。
DevOps 到底是什么
根据维基百科上的定义,DevOps 强调开发人员和运维人员(IT人员)的合作,实现软件交付和基础设施变更的自动化。它旨在建立一种可以快速、频繁、可靠地构建、测试和发布软件的文化。
一句话来说, DevOps 其实是一种思想、一组最佳实践、以及一种文化。说得更冠冕堂皇一点,DevOps 是指开发人员和运维人员精诚合作,迅速为用户提供最新的功能,保持系统的稳定运行,为用户提供最大的商业价值。
大体来说,DevOps 可以认为是 一组工具 + 企业文化。