文|钟依蕙
在创投媒体工作,最大的感触就是科技界的名词创造力惊为天人。各路大神兢兢业业炒概念,创造出了一大堆“一解释就懂,一问就不知,一讨论就打架”的专业名词,让像笔者这样的“相关行业工作者”体会了一把“雾里看花”。2016年,容器技术打得火热,不少讨论中出现了“DevOps”这一概念。好像很火,虽然傻傻分不清,但又不明觉厉。DevOps到底是个什么鬼?用一篇文章的时间好好聊聊。
从一个小故事开始。
二狗在一家互联网公司做程序猿,每天抓破头皮写代码,兢兢业业希望做出一款让友商望尘莫及叹为观止的新产品。但二狗有个困扰,每次从完成开发到实现应用都会有几周的时间差,用来交给运维部门进行测试等相关工作。这让二狗很抓狂,因为友商很可能在这几周的时间空档里开发出更好的产品和功能,而且二狗在不断地修改旧版本和开发新功能的过程中总觉得身体被掏空。二狗觉得这都是运维部门那帮傻叉的错,明明在自己机子上跑得好好的软件,到了运维手上就挂掉,还总是提零碎的需求,改版改到天荒地老。
而翠花就是二狗眼里那些傻叉中的一员。翠花要对维护产品运营,监控运行环境负责。但是随着公司做大做强,越来越多的新产品被开发出来,被运用到越来越多的环境之中。翠花需要维护的服务器数量与日俱增,这给翠花带来不少挑战。传统系统部署,安装操作系统、装应用、升级补盯网络配置……这些事情都是翠花的工作内容,一不留神就容易掉链子。对翠花来说,过去使用的运维工具已经跟不上节奏,这同时影响了新代码运用到产品环境里的速率。
于是过得都不是太好的两个人一见面就掐,一言不合就撕逼。剖析其中原因,问题在于他们俩人在两个不同层面思考自己的工作。二狗活在开发环境,翠花生于生产环境,二狗的代码在开发环境中看起来或许尽善尽美,但在现实状况中应用程序的使用环境却千差万别,基础环境的多元化牵扯到众多组件、服务之间的配置、互联、依赖。结果便是二狗只关心要写多少代码,产品不断升级;翠花却要疲于应对产品不断更迭,适用更多环境。
我们能做些什么,让二狗和翠花和平共处,停止互相伤害?
首先,必须要承认,不管撕得多厉害,他们的终极目标都是让用户开心,既然革命目标是一致的,一定有办法可以让彼此更好地合作,更加能换位思考,打破思想隔膜,最后共同承担责任。这需要二狗和翠花冰释前嫌,改变固有观念,重新思考开发(Dev)和运营(Ops)应该怎样工作。
所以,什么是DevOps?
字如其意,DevOps就是让Dev和Ops放到同一张桌子上考虑。但它并不是简单地将开发部门和运维部门合并,更是企业文化、组织结构的变革,是通过自动化的基础设施、合理的流程规范以及智能的自动运行系统测试来加强开发部门和运维部门之间的协作和沟通。
DevOps是一种开发、测试、运营、维护部门之间沟通、协作与整合的软件过程、方法论思想与系统。它并不能等同于一种工具或者软件,其中涉及到更上层的方法和理念。这一理念指向“高度的自动化”,企图用一种开发和运维间高效协作的模式,制定一条从开发到运行自动运行的流水线,最大程度地摆脱人工的束缚,达到企业生产力的升级。
简而言之,如果二狗和翠花各自所在团队想要更加地DevOps导向,他们需要更加着眼于“自动化”。
DevOps团队希望能将所有环节自动化,摆脱人工束缚。市面上已经出现相关的产品,比如Daocloud,时速云、灵雀云、caicloud等创业品牌,以及阿里云(容器服务)、媒体推出的“蜂巢”等大公司背景产品。在这里,以媒体蜂巢为例,看一下其DevOps实践如何从云的角度出发,帮助企业实现自动化:
·持续集成与开发:实现从开发测试、上线运维的一体化自动流程。而测试是DevOps中不可或缺的一环,在大规模应用系统中,必须有效地、智能地快速自动运行系统测试。
·智能预警:可以帮助用户监控集群运行状态,比如说,服务上线后可以通过设置一个告警通知,全天候监测服务的运转情况,不再需要人工监控。
·智能故障定位:在智能预警发现问题之后,可以进行数据下钻,快速定位到问题具体发生的位置,及时通知用户以快速解决问题。 此外,媒体蜂巢提供服务性能总览、错误视图、错误详情拓扑图等帮助开发者分析错误的详情和具体原因。
由此可见,如果能采用DevOps,公司就能够做更多的创新,缩短开发周期,将产品更加快速地推向市场;同时创造差别化的公司业务和价值,提高组织效率,而不是不停地修补旧问题。通过DevOps,企业拥有了持续开发生产优秀产品的能力,开发者开心,消费者满意。
那么,既然DevOps优势多多,前途大好,具体要怎样才能实现DevOps?
首先,这涉及到观念问题。DevOps的最终目的是加强开发部门和运维部门之间的协作和沟通,如何把现在的文化朝DevOps思维模式扭转,并且在开发和运维之间找到共识?这需要强大的领导力来实现变革。
其次,团队需要选择最合适的工具。虽然DevOps是一个概念,但工具是实现DevOps的重要组成部分。近两年来如日中天的Docker就是实现DevOps最合适的工具之一。比如上文提到的媒体蜂巢、Daocloud,时速云、灵雀云等,均是基于Docker技术的容器云服务产品。作为一个分布式应用构建、迁移和运行的开放平台,Docker允许开发或运维人员将应用和运行应用所依赖的文件打包到一个标准化的单元(容器)中运行,这保证软件可以在任何环境下同样地运行,急剧简化了运维工作。
最后,好工具得有能人掌控才能发挥其威力。即使找到了好用的工具,也需要有熟悉这个工具链,拥有相应技能的IT人员来提供技术支持,才能完成实现自动化的使命。
总体而言,DevOps作为一种理念,推动开发和运维之间的合作,有效回应了当前的商业需求。它的实现是新观念、新工具、新技能的三者叠加。虽然还存在各种问题,但DevOps是大势所趋,作为在互联网领域占坑打拼的企业、开发运维人员,对这样的变革不能视而不见。