DevOps为什么这么“难”

DevOps教练 许峰 DevOps咖啡馆

本文旨在为初次接触DevOps的朋友厘清一些常见的疑问,并提出尽可能对大家有参考意义的答案。老司机请绕路。

这些常见的问题包括:

  1. DevOps是不是很难?有没有捷径?
  2. 我是做XXX的,应不应该学习DevOps?
  3. 我不是做技术的,能不能学习DevOps?
  4. DevOps和敏捷、持续交付、精益是什么关系?
  5. DevOps里面的内容这么多,实践应该从哪里开始?
  6. 有没有适合我们企业/行业的案例/实施路线图? 准备分两期来解答,本期集中于回答第一个问题:DevOps为什么这么“难”,以及有什么应对策略。

可以说,不论从学习还是实践的角度来讲,DevOps都很难。

学习难 - 从个体学习的角度看DevOps


1. DevOps知识体系涉及的知识点非常广泛

首先从知识体系的广度来看,因为DevOps的目的是“快速交付高质量的工作软件”(Capital One语),因此在软件/服务的全生命周期中任何影响此目的(快速、高质量、工作软件)的因素,都属于DevOps的研究范围。下图是来自Accelerate一书的DevOps能力模型,可以看到即便从一个很高的视角来分类,要考略的也有24项能力之多。

2. DevOps体系里的每个实践/模块都可以钻得很深。


从知识体系的深度来看,DevOps的某些知识领域很像是索引(比如松耦合架构、测试策略、持续监控、安全左移,等),深入下去都会发现出现一个新的知识阶梯等待你去攀爬。

3. 对软技能也有要求

话说学啥跟软技能没关系呢?下图来自KeyBank在DevOps企业峰会2018伦敦站的演讲。

这么难为什么还要学习DevOps?

学习目的这个东西确实因人而异。我的几个观点:

  • 技能发展的要求。DevOps里涉及的知识体系、技术以和工具都是软件科学最前沿的。哪怕是从事了多年IT工作的人,绝大多数学习者都会惊叹于DevOps所涵盖的广阔而有深度的知识体系。目前还没看到任何一个其它IT知识体系有这样的兼具的深度和广度。
  • 培养全局思维。DevOps强调的是团队效率高于个体效率,这强迫每个学习者都要跳出自己的本职工作局限,从全局的角度来思考软件交付的整体流程,甚至是价值流交付的整个流程。这个思维方式的转变是深远的,企业非常喜欢这样的人才。
  • IT成为了可以终身从事的职业。传统的职业路径,比如初级开发(/测试/运维/安全/...) -> 中级开发 -> 高级开发 -> 开发组长 -> 初级经理 -> 中层经理 -> 高级经理的路径已经越来越难以为继,很多IT从业者困惑于5年之后自己做什么。DevOps给所有人指出了,不要焦虑于未来,持续学习、持续改善,你就会越来越有价值。在DevOps中给所有人留出了位置。

学习建议:

  • 入门初期应该聚焦于对整个系统知识的掌握。系统地学习那些你不知道的但已经被发现的知识(Unknown Known)。比如通过一个权威的DevOps认证(这里推荐我自己讲授并认可的EXIN的DevOps认证系列),可以帮助你在最短的时间内掌握最大量的DevOps相关知识。比如你是一名开发人员,就可以一次性地了解测试、运维、基础架构的很多知识,从而让你成为一个更好的开发者。 、
  • 之后应该有针对性的持续学习。掌握体系知识之后应该根据自己的职业发展要求持续学习、持续改进。在这个阶段,团队学习、在工作中学习尤为重要。DevOps本身是来自于实践的体系,可以结合项目的状况选择一些实践和团队一起推动,当然应该让项目相关方了解这些实践可能带来的影响,争取他们的支持。
  • 专注于学习的乐趣本身。学习DevOps应该有工匠精神。当然具备DevOps知识和技能的人很快都能在本企业升职加薪,或者跳槽到更理想的企业工作,但学习本身应该还是尽量保持其纯粹性,让自己沉浸在技能提升本身的乐趣之中。这就好比健身,如果你是健身给别人看的,恐怕坚持下去很难,但如果健身本身就是你乐趣的源泉,那么就会超越一时的得失,成为终身受益的习惯。DevOps之旅也是如此。
  • 从多个渠道学习。现在DevOps相关的分享很多,而DevOps跟敏捷、精益、ITSM有很多关系,跟云技术、容器技术、微服务、自动化运维技术也有很多关联。在对整个系统了解之后可以根据自己的兴趣选择合适的渠道学习。另外,学习别人家DevOps的转型案例也是非常有启发的。这里推荐DevOpsDays大会、DOES DevOps企业峰会(每年伦敦及洛杉矶各一站)和各城市线下更小而敏捷的Meet-up。

实践难 - 从组织变革的角度看DevOps


1. DevOps的关于组织能力提升的。这是“外卖模式”对”健身模式“的区别。

对于大多数人来讲,“外卖模式”是最符合我们习惯的模式。就是我付出看得到的价钱,然后有人把一切帮我搞定,结束。但DevOps更像是“健身模式”。对于健身者来讲,你花钱买的健身卡和装备都不是最重要的,连你目前的身体基础也不是最重要的,重要的只有一个:你想改变。而你知道没人代替得了你把自己练得肌肉酸痛、咬牙切齿、全身流汗。好处是收获属于你自己的核心能力,谁也拿不走。

2. DevOps的实践是变革的实践,而改变是困难的。

改变是困难的。这也是为什么丰田不介意全世界的汽车厂去丰田参观。同样,DevOps的世界也没有什么“秘密”,所有的实践都可以找到,而DevOps的实践者也都非常希望和别人分享。在这个阶段,知识是第二位的,改变的意愿和能力是第一位的。

3. DevOps是关于长期目标的,希望短期出成绩的请三思。

实践DevOps取得比较明显的、有意义的变化一般至少也要1年半左右的时间。HP激光打印机固件系统的转型花了3年时间。Nationwide的敏捷转型从2002年就开始了。开始而在这期间,会有很多的困难障碍需要克服。没有点儿理想主义情怀,只关注短期绩效指标,DevOps还真不容易做成(下图Nationwide DevOps Journey来自于DevOps企业峰会2016年演讲)。

4. DevOps是关于团队的,一个人搞不定DevOps。

这意味着你没办法组件一个团队,给他们一堆工具,然后告诉他们从现在开始用DevOps方法工作。像任何真正的高绩效团队一样,他们需要培训、支持、指导,他们会犯错,他们需要时间成长。爱立信的案例表明,即便公司有了成功的敏捷/DevOps团队,一个新的团队达到标准的交付要求(Onboarding Process)甚至也要花1年的时间。

5. DevOps没有终点,不进则退。

你组建了一个很好的团队,你选择了合适的试点项目,你开始采用敏捷,你继续前进,成功实践了DevOps。然后呢?你现在的成功不意味着你将来也会成功。就像健身的人,当你停止运动,你的身体机能会慢慢退化。你只能不断努力,持续前进。 好消息是,当你的团队习惯于DevOps的工作方式,没有人再愿意回到原来的模式(下图来自Capital One于DevOps企业峰会2018伦敦站演讲)。

这么难为什么还要实践DevOps?

理由很多,比如业务要求、竞争环境要求、企业数字化转型要求等等。这里只说一点:这是软件交付的正确方式。做正确的事本身就是道理。这跟健身也是一样的。你有无数个理由不去健身,但你还是知道那是应该去做的正确的事。

实践建议:

  • 你需要你的团队系统地了解DevOps。没有相关的知识冲进去做DevOps会走很多本可以避免的弯路,而且会让大家都很受挫折。
  • 管理层也需要学习和参与DevOps。对于DevOps这样对企业长期发展有重要意义,又很容易各说各话的系统更需要大家共用一套话语体系来沟通。花时间理解一件事是对团队最大的支持。
  • 建议采用DevOps道场(Dojo)来快速启动DevOps。类似集中的新兵训练营(boot camp),新的团队在教练和专家的指导下,快速通过几个迭代建立起最核心的能力。这是已经被证明的一个企业转型最佳实践(下图来自Capital One于DevOps企业峰会2018伦敦站演讲)。 聚焦在持续发现问题和解决问题的路径上。不要试图找一种“落地套路“,也不要指望哪个供应商替你做DevOps。DevOps的套路就是Problem Solving的套路。推荐丰田Kata的方式。

结语


优秀是一种习惯,DevOps也是一种习惯。说DevOps难,不如说从学习到实践都有深具挑战性。同样好比健身,对于不健身的人想想每天要去跑步或去健身房都觉得痛苦,但对于习惯健身的人,这是生活中最大的乐趣之一。DevOps体系丰富、内在逻辑严谨、并且开放开源、持续发展,是对从事软件相关行业个人和企业都会产生深远影响的体系。DevOps没有捷径,但有正确的学习和实施路径,可是避免不必要的弯路,更快地收获成功。

关于作者

许峰专注于DevOps的培训和咨询,是EXIN在国内首批授权的DevOps Master,DevOps Pre-Master(Agile/Scrum / Lean IT / ITSM)和DevOps Professional讲师。其他课程包括《DevOps领导力》和IT管理类沙盘(DevOps《凤凰项目》/ 项目管理《挑战埃及》/ 敏捷服务管理《火星着陆器》)。他也是中国DevOpsDays的核心组织者之一。