DevOps十大问题

2022-06-27 10:00:00
丛斌博士
转贴:
公众号
779
摘要:DevOps是近十年最重要的软件工程实践,也是我这几年一直关注的。它为解决长期困扰我们的开发和运维的天然矛盾提供了一套新模式,其前景令人期待。

DevOps是近十年最重要的软件工程实践,也是我这几年一直关注的。它为解决长期困扰我们的开发和运维的天然矛盾提供了一套新模式,其前景令人期待。


对任何一家IT组织来说,开发的责任就是快速响应客户的IT需求,快速交付新功能或更改的功能。而运维的责任则是为客户提供稳定、可靠、安全的IT服务,避免任何可能导致破坏生产环境的变更部署。


分开看Dev和Ops,无疑是一对矛盾体。通常场景是,为了取悦客户,别管三七二十一,客户的要求都尽量满足,然后研发团队精力严重透支,疲于奔命的救火模式成为必然。过程中各种捷径,积累各种技术债务,带病迭代交付司空见惯。而研发的技术债务首先让运维受害。面对日益膨胀、复杂的应用系统和支持体系,由于缺乏对研发交付软件的信任,任何变更都让运维团队如履薄冰。再者缺乏必要的文档说明,让运维为定位每个小问题头疼。而运维的问题反过来会吃掉研发资源,系统越变越大,运维和研发背的雪球也越来越重。如果各自的考核指标分别反映了各自责任的话,将使二者变成激烈的对抗关系,受害的是用户和组织业务目标的实现。


所以,在敏捷运动出现瓶颈时,DevOps的出现真如雪中送炭,许多有识之士意识到其解决开发运维矛盾的潜力,无数书籍、咨询、培训、工具、成熟度模型扑面而来。一位我认识了二十年之久的朋友,Gene Kim,毅然从网络安全领域,全身心投入到DevOps运动中来,如今已是其重要的领军人物之一。

devops-gene kim

写了数本DevOps畅销书的Gene Kim


在天时地利人和的背景下,DevOps却依旧有雷声大雨点小的感觉,带来的效果还是远不如人意。我个人总结了下列DevOps十大问题,非权威的一家之言。

问题一:缺乏明确的DevOps愿景

DevOps可以加速软件开发,交付,部署,但每个组织有不同的痛点及需求。没有明确DevOps愿景,对具体解决的问题达成共识,会让转型运动变成飞来飞去的无头苍蝇。


借用下CMMI 2.0的理念,DevOps的愿景必须和组织的业务目标紧密结合起来,其成功的标准应该是业务指标的提升,也就是建立明确的DevOps改进和业务目标的可追溯性。


下列问题的答案可以帮助建立你的DevOps愿景,帮助你规划管理好DevOps转型之旅:

  • 现有的软件研发流程存在哪些漏洞?
  • 需要注意哪些痛点?
  • 如何创建“DevOps路线图”?
  • 如何培训团队开始使用DevOps?
  • 实施DevOps的最终目标和期望是什么?

问题二: 忽略了文化和心态的改变

不少追求DevOps的组织并没有真正理解DevOps,仅将其当做建立工具链的事。没有关注文化,整体开发模式,心态上的改变。要知道,DevOps不仅仅是团队协作、工具链、软件开发模式、敏捷和质量、开发和运维团队的桥梁,它更是一种全新的文化。工具无法建立新的文化,解决文化理念的问题


文化是实践、标准、信念的集合,是一种公共潜意识,要获得预期的DevOps结果,就需要建立DevOps文化。如何建立正确的DevOps文化?CMMI 2.0 GOV中的实践有重要的指导意义,下列活动会有帮助:
  • 洞悉DevOps之前的情况、使用的工具和软件研发团队的行为规范
  • 确定团队现在的做法,确定团队应该的做法及为什么这样做
  • 不仅要用工具培训他们,还要让他们理解DevOps背后的原则
  • 建立高层管理人员的习惯会使这一转变更加容易
  • 领导者需要为DevOps实践和行为制定标准
不幸的是太多组织追求的是工具,而不是文化转变,这是DevOps失败的最大原因。

问题三:不匹配的过程

在不少推动DevOps和CMMI的组织中,常听到这样的问题:我们已经做了DevOps,还需要CMMI吗?这个问题需要单独探讨,不在本文范围。但不少组织在导入DevOps时,忽略了重塑研发交付过程是不争的事实。


DevOps推动了研发过程的 “前伸后仰” ,通过平台工具实现端到端的需求驱动的研发管理,以及CICD pipeline为中心的质量管控模式,形成了可视透明的质量门。显然重塑整个研发交付过程是DevOps转型的重要一步,忽略这一步必定造成不匹配的过程,影响DevOps的持续推动和改进。

问题四:没有正确理解自动化和速度的关系

没有管控好的自动化是危险的。不少朋友可能听过股票实时交易公司Knight Capital的故事,他们通过自动化手段,让用户可以更快速、便捷地完成交易。不幸的是,在开发一个新的app时,这个app调用了一个已经废止但没有删除的内部功能。几分钟之内,这个app做了数十亿美金的交易,后果是公司支付了6.4亿美金罚款后宣布倒闭。


不少DevOps转型的组织,没有正确地意识到,是在哪些方面实现了自动化,忘记了自动化虽然强大,但有其局限。不应忘记人机结合的力量,以便更好地管控风险。这里给大家几点建议:

  • 改变不会在一夜之间发生;给团队足够的时间适应DevOps环境
  • 平衡好速度、约束,让使用DevOps工具链的好处最大化
  • 工具不能替代协作,团队之间的协助是DevOps中必须遵循的实践
  • 不要期望过早取得好结果;推动DevOps需要比你预期更多的时间

问题五:忽略了DevOps对人的影响

这也是DevOps失败的一个重要原因。DevOps不仅影响研发和运维,它牵扯到许多环节的人。


要DevOps取得成功,组织需要确定合适的人,对他们进行培训,给他们时间体验DevOps文化,让他们在学习的同时最大限度地关注其行为的后果。


DevOps应该更关注人和文化,超过关注找到高效、快速交付软件的工具。把视角转向人,那就看到了DevOps的重要驱动因素。反之,你会成为又一个失败的反面教材。

问题六:缺乏坚实的基础架构建设

正如CMMI 2.0中II实践域指出的,DevOps基础架构的建立需要一个深思熟虑的策略来规划、验证、同步和监控DevOps工具链。通过持续的检查和度量分析,不断完善DevOps过程实践,在努力中争取获得预期的结果。


由于资源等问题,不少DevOps组织没有建立一个必要的支持体系,有效支持DevOps的落地和不断改进。CMMI中的II给出了建立这样的基础架构的要点。

问题七:让DevOps成了脱离客户的独角戏

没有客户介入的DevOps会让其价值大打折扣,虽然国内许多IT成熟度较高的客户推动了DevOps的推广,但自说自话的情况也比比皆是。


许多客观原因造成了这种情况:内部环境和客户现场环境的差异,客户不愿做额外投入等。但DevOps的组织需要让客户了解,他们是DevOps最大的受益者,这是个高性价比的投入。

问题八:不适用于DevOps的软件架构

这个问题牵扯到比较复杂的技术问题,如何将现有软件架构迁移成为适用于DevOps模式的架构是许多DevOps组织面临的一个挑战,毕竟重构软件架构不是一件容易事。

问题九:研发过程管理和质量管控的物理和逻辑分离

绝大多数DevOps组织有两个不同的管理平台,一个平台实现从需求跟踪到环境发布的所有管理要求;一个平台通过建立工具链(如,CICD pipeline)实现质量相关管理功能,例如:静态代码扫描,接口测试,安全扫描,压力/性能测试等活动。


二者物理分离会造成一些不便,但逻辑分离则会带来严重的后果。一些组织没有从顶层、端到端考虑二者的关系,导致flow的脱节。在这方面,CMMI可以助力DevOps,实现系统和一致的规划管理。

问题十·:和CMMI的脱节

在做CMMI评估和诊断时,发现DevOps和CMMI的脱节是一个普遍问题。后面会专门就如何让二者相辅相成写篇文章。


四年前,CMMI研究院就计划推出关于DevOps场景的CMMI实施,可惜至今没有看到实质的成果。一方面,CMMI可以助力DevOps转型,另一方面,CMMI可以从DevOps实践中完善一些核心实践。在等待研究院发布其研究结果的同时,DevOps和CMMI组织也可以总结优秀实践,更新CMMI的生命力,实现DevOps的初衷,改善软件世界。

DevOps文章
联系我们
联系人: 阿道
电话: 17762006160
地址: 青岛市黄岛区井冈山路157号中南金石国际广场A座3202室