很多企业,尤其是大企业在产品开发和运维上存在着一些普遍问题,比如开发周期长、人员合作程度不高、开发和运维脱节等等。可看看一些巨型企业,比如Google,Amazon,Facebook,Salesforce等等,人家的规模不比你大,架构不必你复杂?为什么他们能做到大而灵?
成功的因素固然有很多,而一个共同的因素是,他们都引入了DevOps的概念。
DevOps是基于Agile和Lean发展而来的一种理念,目的是更好的优化开发和运维的流程,从而更快、更高效的实现产品更新。DevOps是由Development + Operation缩写而来,但绝不是二者的简单相加。引入DevOps需要在企业文化和技术上都要落实一些措施。
在我们进一步介绍该理念之前,本文来探讨一些我见过的IT环境中的问题,尤其是在大企业中有普遍性的问题。
上图想说的是由于组织结构、文化以及技术局限性的多种原因,各个组负责自己的一亩三分地,别组的事情不管我事,我也根本不知道别人在干什么。那产生的后果呢,咱们从项目的各个环节一一道来。
设计阶段
需求分析和后面的环节脱钩。往往大费时间精力制定的需求,在后续阶段中不能很好的执行。可能的原因有:一需求本身的质量不高,没有很好的衡量手段和标准二需求没有体现整个LifeCycle,往往忽视运维中可能出现的问题三只注重Functional Requirements , 而忽略Non-Functional Requirement
另外需求更改是难免的,可合同已经签了。按照Change Control的规定,需要重新评估时间,人力及风险,这一趟下来时间上的损失不说,非常耗精力。
开发阶段
实施人员可能对设计本身的了解不透彻,更别说对需求的把握了。做出来的东西有时走了样,忘了本来的目的是什么。
测试阶段
Unit Testing,integration Testing, Performance Testing, Stress Testing, UserAcceptance Testing. 整个测试阶段耗时耗力,测试人员有时闲的要死,有时忙的要死。各个测试之间的协调也是问题。
运维阶段
大型复杂项目中往往一个Change需要涉及多个团队,本来30分钟的活儿,你要想每个组都批准Change可能要数天甚至数周。运维中出了问题呢,各个组之间扯皮推脱自是家常便饭。怕的是有的时候根本不知道哪出了问题,也可能整个系统靠个别技术牛人来撑着,其他人没有也不知道如何下手。
解决方案
发牢骚谁都会,那么有解决办法么?当然有,不过这可不是什么灵丹妙药,一吃就灵。需要从上至下,在文化上和技术上都要有下大力气才行。请关注下文将展开DevOps的一些实施细节。