一、DevOps的定义
IT行业放眼望去,DevOps正大行其道,百家争鸣。但其实这个概念却很少有人能几句话说清楚。
DevOps之父Patrick Debois最初的原意是期望打破运维与开发的部门墙。
《持续交付》的作者Jez Humble整合前人智慧,提炼了“CALMS”来表述DevOps的核心理念,即Culture(文化)、Automation(自动化)、Lean(精益)、Metrics(指标)、Sharing(分享)。
DevOps领域几位顶级大师人物在他们的里程碑式大作《DevOps Handbook》一书中,将其分解成交付流水线、监控反馈、持续学习和实验的三步工作法。这也是《凤凰项目》这本书背后之所以能起到绝地反击效果的终极隐形招式。
EXIN的DevOps Master认证,则致力于探索如何将DevOps理念和实践融入到计划、需求、设计、开发、部署、运维等IT服务全生命周期各个阶段中。
在IT管理与技术咨询行业,DevOps代表着全球互联网独角兽公司终极必杀技级别的最佳实践,是所有IT企业或部门适应当前乌卡环境(VUCA,易变性、不确定性、复杂性、模糊性)的有效手段,是敏捷和精益思想的变现。
在培训领域,DevOps涵盖了信息技术领域基本认知、技能和态度的革命性转变。
在项目经理看来,DevOps站在比项目本身更高的层次来重新认识项目要达到的目标和需要解决的问题。在架构人员眼中,DevOps从业务价值交付出发,整合了微服务架构,为解决当前庞大系统的全局架构提供了新的思路。在开发人员心中,DevOps企业文化是开发人员心中追寻的理想国,敏捷开发结合各种持续集成、持续交付、持续部署、自动化测试框架描述了开发人员的美好未来。在运维界,DevOps是未来运维的发展方向。对于安全与审计人员,则像《凤凰项目》小说里首席信息安全官(CISO)这个角色的经历一样,洗心革面,重新回到了将安全工作渗透到开发与运维日常工作中每一天,而非事后审计的正途上来。
如果让爱因斯坦来定义DevOps,应该会区分出狭义和广义的DevOps。如果让《人类简史》的作者尤瓦尔·赫拉利来定义,一定会上升到哲学的高度,用上帝视角来看待这个非良构问题。
一千个人心中有一千个哈姆莱特,各种流派对DevOps的定义都表达了在专业领域方向上的真知卓见,之所以难以定义,一方面DevOps涵盖范围即有深度也有广度,另一方面其实质内涵和外延是在不断发展的。随着对DevOps理念与实践的不断升华,也许会出现一个明确统一的定义,但这样的定义不能成为妨碍我们开展有关的实践的障碍。
二、对DevOps实践的认识
对于实践DevOps的企业来说,他们并不会认为这是DevOps的功劳。因为DevOps只是将他们在实践探索中,经历过的不断失败和总结调整之后的成功经验提炼出来了。
那DevOps是能解决我们自己企业研发困局的法宝吗?这里分享一下我听到过的列子御风故事。当第一次听到列子有乘风而行的本领时,我也是不相信的,直到听完了这个故事:
有一个叫尹生的年轻人听说列子有乘风之术,十分向往,于是找到列子,向他请教。头一次几个月过去,尹生什么也没学会,于是回家了,但回头一想不对劲,按说列子是非常豁达的人,不会将这种神技密不传人,一定是自己出了问题。于是他又重新找到列子二次拜师。这次列子告诉他:“乘风之术本来就不能用语言来表达。如果用语言传授,表面上看,好像说得很明白,可实际上离‘道’会越来越远,只有沉默不语,才能逐渐领会它。”列子停了一下接着说:“当初我跟随老商先生学习乘风之术。三年之中,老商先生一语不发,我虚心静气,安神养精,三年之后,达到了心中不敢有是非之念、口中不敢有利害之言的境界,这时,老商先生才破例斜着看我一眼。就这样,我又修炼了两年,达到了心中敢念是非、口中敢言利害的境界。这时,老商先生才破天荒地向我微笑了一下。接着,我又修炼了两年,达到随心所想但心中无是非、随口所言而言中无利害的境界。这时,老商先生才肯让我与他并肩而坐。我又练了两年,达到了放纵心思,让思想任意遨游,让语言任意的境界,而所说所想的是什么连我自己都不知道。我不知道我的是非利害是什么,也不知道别人的是非是什么。我也不清楚老商先生和我究竟谁是谁的老师。我的身体内外,一切都好像没有区别了,眼睛仿佛是鼻子,鼻子仿佛是嘴,没有什么区别。我的骨肉好像已经消融了,不知道自己的虽然究竟倚仗着什么,也不知道自己的双脚站立在何处,只觉得自己在随风飘荡,就像没有感觉的树叶一样,弄不清楚究竟是我乘风飘荡还是风乘我飘荡。”
欧洲著名沙盘研发机构Gaming Works的创始人Jan Schilt先生开发了与《凤凰项目》一书同名的沙盘游戏,意为通过游戏的方式推广DevOps的理念,他曾提出DevOps要达到真正的效果,短则2年,长则7年,跟列子学习御风的9年相比,同是一个需要长期坚持而且需要主动思考的过程。但如果乘风之术是我们破解研发困局的有效手段,那故事中列子悟道的坚守和主动,就值得我们去借鉴。
DevOps包含了一系列的实践,每一条实践的推行都要考虑如何解决认识、技能与态度三个层面的一系列问题,涉及到的部分内容包括:
1. 敏捷与精益实践
2. 持续集成、持续交付、持续部署实践(开发、测试、部署与运维自动化流水线)
3. 基础设施代码化、云与虚拟化技术的整合实践(一切皆代码)
4. 微服务架构探索实践
5. 分析、监控与预测技术实践
6. 假设驱动开发、AB测试、蓝绿部署、金丝雀发布等技术实践
7. 安全与运维嵌入到日常开发的实践等
这些实践并非DevOps原创,很多都是自成体系的,但DevOps对它们进行了整合提炼,通过正向的开发与部署流水线、逆向的监测与实时反馈流、以及通过持续学习与试验的三步工作法组织起来,打通研发所有活动的整体循环,并且赋予组织和企业文化上的意义,通过构建面向业务价值创造、自组织团队、免于责备与持续学习的氛围,借用有效的工具,打通业务、开发与运维的部门墙,突破组织瓶颈的约束点,及时、持续地提供业务价值和用户价值。
三、DevOps重在实践
《孙子兵法》用了6075字来解决用兵打仗时,战略和思想上的问题,但在战术上,如果没真正经历过一场战,那充其量就都只是纸上谈兵。各种对DevOps的解读与分析,提供了很多战略上的思考,也提供了很多实践上的探索经验。在深刻理解和剖析企业当前形势与状况的基础之上,积极地去将这些思考和探索经验,应用和借鉴到我们的实际工作中来,这是我们应对未来不确定性最好的方式。
关于DevOps,我们现在就能立刻开始做的有:
1. 团队管理者或项目管理人员,创造条件构建学习型团队;
2. 开发与运维人员进行技术探索,尝试构建持续集成流水线;
3. 测试人员可尝试引入自动化测试工具;
4. 运维人员可尝试将基础设施代码化;
5. 精益看板导入以构建信息反馈渠道;
6. 报一门认证或订阅一个DevOps主题公众号;
7. 找到DevOps的推荐书单,阅读一本关于DevOps的经典著作。
最好的开始时间是八年以前(DevOps概念于2009年提出),其次是现在。从实践中构建所于我们的认知,探寻属于我们自己的DevOps之旅,致力于建立结构良好和输出稳固的团队,致力于实现IT产能、发布效率、稳定性的目标。随之而来的,自然是越来越清晰和可以感知到的研发活动全局观意识、良好的团队氛围、以及能彻底释放每个人能力和价值的企业文化。