开发团队的目标:满足产品的功能需求,把用户的需求实现,发布到现网,交付到用户手里。
从之前的敏捷过程来看,其实开发/测试甚至是QA团队的目标是一致的。
运维团队的目标:质量永远是第一位的。这导致一个有意思的现象:
变更是主要的故障之源,你同意么?
之前在一篇论文中给出数据,无论是硬件的维护还是网站的维护,人为变更是引入故障的主要原因(如图1)。在没有找到有效的手段之前,特别是手工时代,运维一定是抗拒变更的,你同意么?
图1:由人主导的变化是故障主要的原因
但现实不是运维所设想的那样,特别是对于一些持续迭代的2C产品来说,”变化是唯一不变的规律“,那就意味着变更是常态。
此时我们可以得出一个非常有用的结论,开发和运维的冲突在某些情况下会被放大,比如说运维能力很弱,部门墙的出现。图2进一步归纳和阐述了这种冲突的原因。
两个不同的团队把各自的目标和要求形成一定的推力推向对方团队,然而部门墙的存在,让这种推力存在阻隔。
图2:Dev/Ops的冲突之源
甚至,我有时候把这幅图比喻成一个舞台(生产环境)上两个击剑手,在进行一场对抗比赛。
在一个企业内冲突的最直接表现形式就是抱怨,抱怨的最直接感受就是从自己的角度总是觉得对方不够好。
因此我就从整个软件或者特性交付的角度来分析,把过程分解成几个典型阶段,来看这个抱怨是如何产生的。
大家也可以根据自己的经验,也总结一下自己感受到的冲突表现及其抱怨来自何处(尽量明确而具体),然后我们一起走向后面的解决方案。
进一步深入技术分析的话,可以找到一些冲突的根源:
前者有一些管理工具(持续集成,看板)/实践(站立会议/测试驱动/极限编程)/文化(价值观/团队融合)等等。
后者所依赖的ITSM的流程体系明显是滞后于前者敏捷体系的能力。
也就是说,两个团队不同的IT思维/能力的不同,造就彼此的输出的不同,这才是冲突的技术之源。
所以要想解决问题,核心的思路是:要找到一个统一的方法论(DevOps?)来融合两个IT团队个字的目标和方法论,当然冲击最大的还是运维团队,需要把自己的流程能力转化成自动化平台的能力。
从方法论上看,我自己觉得DevOps是Agile方法论的一次很自然的延伸。
其实从各自的角度能看到大家彼此的关注点,这些关注点有些是重叠的,有些是完全不对焦的。
寻求解决方案比抱怨更重要,在抱怨的地方,才有改进的机会。但我这个地方避免用DevOps这个词来笼统的寻求解决方案。
我个人觉得需要做一些转变,核心的转变是两点:第一是拆墙;第二是换舞台,如下图:
图3:拆墙和共同的价值支撑体系
拆墙,研发/运维团队把彼此的作用力触达到对方,感受到彼此的要求和能力。
换舞台,把底层的舞台给换了,“经济基础决定上层建筑”,底层换了,上面的思路也就随之变化。
对于研发/测试/运维团队来说,就需要把大家的目标/价值/状态做个对齐。之前写过IT运维的目标体系是质量/成本/效率/安全,其实这个可以传递到研发/测试团队,并且是和业务功能需求完全不冲突的。
从目标来说,分阶段性的目标和长远目标:
我说的状态比较特殊。其实,我更希望运维把线上服务的运行状态进行透明化和可视化。然后交付给我们的研发/测试部门,不要让自己的能力成为黑盒子。这样:
研发是有技术和责任辅助运维实现这一目标的。
状态的一致性,其实是具体的驱动措施了,俗称状态看板,它分业务价值看板BVD和服务状态看板,详细如交易看板,服务可用性看板,服务成本看板,服务性能看板,事件看板,问题看板等等。
在之前的篇幅中我说过ITSM的运维体系能力是大大滞后的,明显不能满足当前业务快速迭代的需要,运维的问题还是必须要运维来挑头解决。
生产环境,运维是第一负责人,必须改变过去的流程思维,建立自动化和数据化的运维平台。
从环境管理的角度来看,需要以生产环境的平台管理能力覆盖为首先的灰度点,然后逐渐覆盖预发布/测试环境,最后才是开发环境。
有了平台化能力之后,运维的作用力才能顺利推进到研发和测试那边,否则就会出现制定了规范无法落地。
不信,你定义一个现网日志监控规范看看?
所以我把图4中绿色部分的能力实现都认为是运维部的,有没有感觉到你在搭建一个舞台?的确如此!
图4:平台化是运维能力延伸的最好方式
每个团队不能孤立的去看或者解决问题,当我们把能力延伸到对方之后,其实就是在干“把想法装进别人的脑袋”的事情,对两个团队来说都是难事。
之前讲过研发团队的Ops-friendly和运维团队的Dev-friendly,也在讲一定有照顾到别人的诉求才能friendly。
2014年的puppet报告,也在讲团队内培养DevOps是多么的重要,其实就是在讲理念和实践刷新成一致状态。
图5:多元化的思维,事半功倍
我任务冲突不可避免,冲突的形式也是各式各样,冲突的解决方案也不尽相同。
本文是自己对该问题的一个整体思考思路,希望能触发我们一起来思考。最后引申一个话题——“NoOps”(无运维),大家也一起思考一下,是否有可能?其实本文也有一些答案。