写点什么

如何避免 DevOps 变革的六大“焦油坑”

  • 2020-03-25
  • 本文字数:3123 字

    阅读完需:约 10 分钟

如何避免DevOps变革的六大“焦油坑”

当今,DevOps 能显著提升企业的商业敏捷与能力,因此在企业中广受欢迎。然而,对于大多数企业来讲,DevOps 变革并非一帆风顺,此过程中会面临各种各样的挑战。为了提高 DevOps 变革成功的可能性,企业领导者亟需识别或者理解 DevOps 变革失败的常见原因,并采取一定的措施来避免。


经过不断发展,DevOps 逐渐演变为一种方法框架,使能企业综合运用人员(People)、流程(Processes)与技术(Technologies)等,从而将价值持续交付给最终客户与用户。基于 DevOps 的价值观(Value)、原则(Principles)与实践(Practices),华为云 DevCloud 分析了许多企业的 DevOps 落地案例,DevOps 变革会存在 6 大常见的主要原因,称之为六大“焦油坑”:


  • 无的放矢

  • 乌合之众

  • 各自为政

  • 一蹴而就

  • 好高骛远

  • 沙上建塔

无的放矢:未从客户价值出发

在 DevOps 热潮下,许多组织通常为了赶潮流而快速启动 DevOps 变革,常常为了 DevOps 而做 DevOps(Doing DevOps for DevOps),而没有充分考虑 DevOps 的真正目标或者目的。员工只会关注为组织带来的价值,而不会单纯与 DevOps 术语、方法以及支撑工具产生联系。因此对 DevOps 变革,无论变革启动时,还是变革过程中,都需要将为客户带来的商业价值作为目标,以便不断调整 DevOps 变革内容。这也与多数组织“以客户为中心”的理念相吻合,然而却经常被忽视甚至忘却,导致无的放矢或者向不正确的靶子放矢。


为了使 DevOps 变革立足于客户价值、充分识别谁是客户、他们需要的价值是什么,组织应该经常思考如下问题:


  • 现有或者潜在的客户是谁

  • 客户看重或想实现的商业价值是什么

  • 企业能提供哪些服务,仍有哪些差距

  • 客户期望的时间点

  • 企业能够多快进行发布

  • 客户前进的方向是什么,如何升级企业的服务

  • 如何让客户了解到企业提供了什么


企业组织在 DevOps 实施过程中,必须以客户为中心,持续地提高对客户商业价值的理解,来作出相应的改变,并提升自身能力。

乌合之众:未有效地管理组织变革

在 DevOps 变革中,企业组织应该认识到人或团队是 DevOps 变革的最大的挑战,因而应该充分重视组织变革的重要性,而不是将重心聚焦在工具上。企业应该从理解客户商业价值来发起组织变革,领导层必须清楚 DevOps 以及相应的组织变革是不可或缺的,员工必须认识到变革正在发生。在 DevOps 变革中,领导层应该理解,为了提升商业敏捷性,决策需要在信息产生的地方进行,并应该去身体力行此种决策理念。


因此,领导层需要组建团队,并让团队自己决策应该做什么以及如何做。这就要求在组织内识别潜在的候选人,且候选人应该具有以下价值观:


  • 团队合作:确保候选人乐于团队合作,并且在团队内工作效率高;

  • 值得信赖:信任是 DevOps 的 CAMLS 理念中文化的基本要素之一,因此候选人必须可靠、可信;

  • 干劲十足:候选人必须能主动积极地追求目标;

  • 有责任心:对工作过程、工作产出能负起责任,而不是推三阻四;

  • 足够聪明:能理解必须完成的工作,并可以决定如何开展;

  • 经验丰富:经验可以使团队成员成长,当然不一定对 DevOps 有经验;

  • 有效沟通:及时准确地口头或者书面传递信息与知识;

  • 风险管理:与团队其他成员(例如 PO)协同工作懂得如何管理风险;

  • 终身学习:DevOps 并非一成不变,因此更重要的是,发现有正确态度的人并培训技术技能,而不是过分强调技术技能而忽略错误的行为。


领导者应具备相应的技能与态度来激励员工,进行授权并提升他们的责任感。当然,对于拒不改变的员工,必须毫不迟疑地将他们安排到不会动摇变革的岗位上。

各自为政:未充分地合作

在 DevOps 变革过程中,比较现实的情况是单个职能领域(例如 IT 部门)来发起此变革,因此导致 DevOps 实施局限于单个职能领域,无形中增加了变革失败的可能性。


因此即使单个职能领域发起 DevOps 变革,组织必须意识到成功的 DevOps 实施需要所有干系人共同合作以更全面地理解并系统地解决问题。为了加快价值实现时间,DevOps 团队必须与其他团队及关系人合作。DevOps 需要人们共同工作实现解决方案,打破障碍,并能像小型团队一样运作。因此,合作是至上的,团队的大小并没有绝对的限制,虽然业界有所谓两个比萨(Two-pizza)团队的说法。


更为重要的是,企业级别的合作需要管理层的支持。在一开始,就应该获得管理层的支持与拥护。DevOps 的拥趸必须相信 DevOps 的价值,并平衡组织内不同团队的激励方式,例如开发团队被鼓励快速变更和开发新特性,而运维被鼓励维持可靠性和稳定性,这样就难以形成合作。

一蹴而就:未采用迭代方法

全面的一揽子的 DevOps 变革,对于大多数企业组织来说,是非常有诱惑力的。然而,历史经验却无情地告诉我们,这种传统变革失败率非常高。DevOps 要在一个大型 IT 组织中成功,涉及太多因素,并且组织越大越困难。


因此,增量迭代方法成为组织的必然选择,一方面此方法使组织聚焦于持续改进,另一方面避免了传统方法的巨大风险。在进行 DevOps 变革时,组织聚焦于单一价值流,通过迭代与持续学习来持续改进,来得到合适的因素维持可接受的变革。迭代增量节奏也使组织确保团队分享与合作,并建立实践社区。这样,在此价值流学到的知识可以传递到下一个价值流,逐渐在组织中规模化 DevOps。


组织在每个迭代中需要仔细识别目标机会,并确保每个迭代满足以下 3 个关键条件:


  • 政策友好性:干系人愿意给予 DevOps 公正的试验环境,在错误发生时,从中学习经验而不是责备;

  • 可接受的价值:每个迭代产生足够的客户价值,来建立信任与获取支持;

  • 可接受的风险:即使 DevOps 宣称具有显著降低风险的能力,然而人们更乐于看到实际效果,而不是简单听理论。

好高骛远:疏于管理期望值

俗话说,期望越高,失望越大。对于 DevOps,许多组织的期望与它能够交付的内容存在脱节。与其讲企业组织将更敏捷或者快速,不如明确组织现在在哪儿以及需要到哪儿,然后迭代地实现目标。DevOps 不是一次性投入,而是需要不断地尝试。因此组织需要达成一致的目标与度量指标来有效地管理期望。DevOps 的度量指标非常多,建议可以从以下 4 个角度建立进度平衡视图:


  • 市场目标:例如销售量、客户留存率等;

  • 交付周期:价值实现的平均时间;

  • 风险管理:宕机时间、业务恢复时间等;

  • 客户满意度:满意度水平等;


需要指出的是,并非所有的不切实际的期望都来自于商业客户。例如,IT 部门会认为工具链是免费的,实际上工具链需要持续的资源与投入。总体上,组织需要围绕客户价值、成本与风险来权衡建立合适的期望。

沙上建塔:未清晰地管理需求与代码

由于受到 DevOps 成功案例以及 CAMLS 理念中自动化的影响,企业通常寄希望于自动化等技术与工具手段来加速产品上市周期,然而经常因诸多基础性工作没有做扎实导致 DevOps 实施效果未达到预期。


在诸多基础性工作中,最为关键的两点是需求的探索分析与分解、源代码的版本与分支管理。从 DevOps 的发展历史来看,DevOps 继承了敏捷方法的诸多实践与理念,原则上默认 DevOps 团队较充分地掌握了敏捷方法与实践,也致 DevOps 组织忽略需求的重要性。因此无论如何强调需求的重要性都不为过。DevOps 团队必须清晰地管理需求,使需求以及 Story 满足 SMART 要求,在迭代周期内可以按时保质交付最小可行产品(MVP)。


代码版本管理的重要性是不言而喻的,更需要关注的是良好的分支管理模式是持续集成与持续部署的基础。企业可以使用华为云 DevCloud 进行需求与代码的管理。


DevOps 变革是一个系统工程,涉及到组织、文化、人员、流程、工具、方法等方方面面。对于企业来讲,应该从客户商业价值出发,选择合适的团队,合理地管理期望,并以增量迭代的方法,初始聚焦于单一价值流,夯实基础,逐渐扩展到其它价值,实现 DevOps 规模化,最终实现企业的商业敏捷。


本文转载自 华为云产品与解决方案 公众号。


原文链接:https://mp.weixin.qq.com/s/kaDz6SNk-DSTDaKmB5BofQ


2020-03-25 17:521775

评论

发布
暂无评论
发现更多内容

压缩性能提升10-20倍,TDengine助力零跑科技实现性能和成本最优化

TDengine

数据库 大数据 tdengine 后端

DialogFragment探索与实现,android高级工程师面试题

android 程序员 移动开发

Flutter _ 你真的会用 Slider 组件吗?(1),androidapp开发入门

android 程序员 移动开发

Flutter 命令本质之 Flutter tools 机制源码深入分析,kotlin实战

android 程序员 移动开发

Flutter 网络请求框架封装,android源码设计模式解析与实战

android 程序员 移动开发

esp8266~lwip突破MTU最大1500限制,apt编译时期自动生成代码&动态类加载

android 程序员 移动开发

Flutter _ 你真的会用 Slider 组件吗?,kotlin中文文档pdf

android 程序员 移动开发

Flutter-可以缩放拖拽的图片,安卓内存优化管理器

android 程序员 移动开发

Flutter App的启动流程,kotlin单例模式

android 程序员 移动开发

Flutter 扩展NestedScrollView (二)列表滚动同步解决(1)

android 程序员 移动开发

Flutter-可以缩放拖拽的图片(1),android最新开发语言

android 程序员 移动开发

Flutter 1,基于h5框架的移动app开发

android 程序员 移动开发

Flutter Dio二次封装,Android开发还不会这些

android 程序员 移动开发

上万规模数据湖如何在实验室测试

华为云开发者联盟

容器 数据湖 测试 MRS 集群

Flutter 扩展NestedScrollView (二)列表滚动同步解决

android 程序员 移动开发

模块七:王者荣耀商城异地多活架构设计

apple

新一代云原生的微服务架构分享

鲸品堂

云原生

Flutter 2,面试官问的那些Android原理你都懂吗

android 程序员 移动开发

Flutter 性能优化 Tips,Android攒了一个月的面试题及解答

android 程序员 移动开发

Flutter 扩展NestedScrollView (二)列表滚动同步解决(2)

android 程序员 移动开发

DialogFragment探索与实现(1),2021年是做安卓开发人员的绝佳时机

android 程序员 移动开发

Python代码阅读(第53篇):字符串重复拼接

Felix

Python Code 字符串 阅读代码 Python初学者

Flutter 2(1),字节跳动高工面试

android 移动开发

Flutter 中 Wrap 的使用详解(含对比图) _ Flutter Widgets

android 程序员 移动开发

Flutter 中获取屏幕以及 Widget 的宽高,flutter小程序开发

android 程序员 移动开发

架构训练营模块七作业-王者荣耀商城异地多活架构设计

李焕之

FFmpeg之OpenGL绘制与Native Window绘制(五),安卓面试题及答案2020百度

android 程序员 移动开发

百度爱番番数据分析体系的架构与实践

百度Geek说

架构 数据分析 后端

Flutter 插件使用必知必会,我的阿里春招之路分享

android 程序员 移动开发

Flutter GetX使用---简洁的魅力!,Android高级

android 程序员 移动开发

Flutter 与 原生交互(Android),含BATJM大厂

android 程序员 移动开发

如何避免DevOps变革的六大“焦油坑”_DevOps & 平台工程_华为云产品与解决方案_InfoQ精选文章