写点什么

华为大规模敏捷开发实践:如何从 0 到 1 落地 DevOps?

  • 2019-05-31
  • 本文字数:3731 字

    阅读完需:约 12 分钟

华为大规模敏捷开发实践:如何从0到1落地DevOps?

根据 Gartner 报告,2015 年 DevOps 还处于技术关注的最高点,转眼到了 2018 年,DevOps 以及 DevSecOps 都已经从关注度高峰下沉到了具体实践阶段,而正在攀爬关注度高峰的是 DevOps 工具链和工具链的编排。华为云 DevCloud 首席技术布道师在 QCon 全球软件开发大会(广州站)2019 上发表了相关演讲,他的分享主要介绍了中大型企业如何落地敏捷 + DevOps,有效提升研发效能的经验和实践。



本文整理自 QCon 全球软件开发大会(广州站)2019 的演讲,出品人希望我能够分享大型企业如何进行大规模敏捷开发的议题,于是我将分享话题定为《大到不能慢——敏捷 +DevOps,大企业也能高效能》。

为何需要快速灵活的研发响应能力?

首先,我们来拆解本次的演讲题目。


大到不能慢,这与现在的时代背景相关。开发者可能也有体会,生活和社会的节奏越来越快,变化越来越快,企业越来越需要更快、更频繁地创新,才能够在这个竞争越发激烈的 VUCA 时代存活下去。任何已经占据江湖地位的大公司都无法松懈,必须持续提升企业自身的响应速度和能力。


按照敏捷宣言诞生之日来计算,敏捷已经 18 岁。按照敏捷在国内开始萌芽的日期计算,也已经 13 岁了。前两年,IT 领域、软件领域各种新趋势频出,敏捷颇让人有种廉颇老矣的感觉。然而,哈佛商业评论先后于 2018 年 3 月刊载《HR 迈向敏捷》、5 月刊载《规模化敏捷》;麦肯锡也在其季刊中连续刊载有关敏捷银行的文章。敏捷像老树新枝一般,再次成为热门议题。只是其内涵相比刚开始限于在敏捷软件开发领域,已经有了很大扩展。


至于 DevOps,简单来说,已经进入深水区,即快速成熟阶段。以 Gartner 的报告来看,2015 年,DevOps 还处于技术关注的最高点,市场对其期望很高。转眼到了 2018 年,DevOps 以及 DevSecOps 都已经从关注度高峰下沉到具体实践阶段,开始啃硬骨头,而正在攀爬关注度高峰的则是 DevOps 工具链和工具链的编排。


接着我们再来看“大企业”,到底什么叫大?参照国家统计局的说法,根据《统计上大中小微型企业划分方法(2017)》的标准,软件和信息技术服务业,只有企业从业人员规模在 300 人以上的,才能算是大企业。


再来看高效能,度量是一件非常重要、非常难做好的事情。根据所处行业、企业自身的业务特点和企业特点、当前关键问题等各方面差异会有不同定义,但我们可以倾听业界的一些声音。VersionOne 的年度敏捷报告是敏捷圈的权威报告,填写者反馈了他们度量敏捷项目成功的标准,包括客户 / 用户满意度、业务价值交付、速率等指标,不过报告并没有给出一个基准值。DevOps 部分,在 DORA 发布的 2018 年《加速度:全球 DevOps 现状调查报告》中,DORA 提出了软件交付和运维效能的概念,它包括以下五项关键指标:前置时间、部署频率、变更失败、恢复时间、可用性。我们可以参考这些观点,但是要靠自己找出适合企业现状的效能指标作为指引。

DevOps 实践

规模化是硬骨头,审视自身、因地制宜,最适合的办法才是最好的

那么,解决方案在哪里呢?我们可以看看目前的规模化敏捷方法论和 DevOps 方法论,看看有什么启发。


  • LeSS:大规模 Scrum,以 Scrum 为基础。LeSS 分两个模式,LeSS 模式宣称适合 8 人团队、最多 8 个团队共 64 个人的情况,LeSS HUGE 模式则号称可适应数千人规模的产品研发;在敏捷方法方面,LeSS 以 Scrum 为核心,工程实践维度,有实践指导材料,DevOps 的部分则没有发现什么详细介绍的内容;

  • SAFe:大规模敏捷框架,完整的 SAFe 框架可以分为四个层级,团队级适合 5~9 人团队、项目群级适合 5~12 个团队(约 50~125 人)、大型解决方案级适合数百人规模、组合级适合 500~1000 人规模;敏捷方法论方面,介绍了 Scrum、XP、Kanban 方法,主张团队自主选择,工程实践方面有所提及、但没有特别详细的介绍,DevOps 部分也只是有所介绍而已;

  • DevOps:目前来看并没有所谓的某个标准或是一统天下的方法论,各家厂商甚至各家企业都有自己的说法,也没有什么可供参考的标准文献去判断 DevOps 方法论适合多大规模的企业。


接下来,我们需要审视自身是什么情况?客观地看待自己,才能够找到靠谱的解决办法。


首先要明白,组织结构需要跟随战略。创业阶段企业的业务单一、所以组织结构通常是扁平化的,成长阶段企业会快速构建起层级组织结构以适应不断增长的企业规模,成熟阶段的企业往往采取矩阵式组织结构以支撑企业多元化的业务,转型阶段的企业必须通过组织创新为各个业务单元赋能,激活组织和个体,才能在庞大的业务体量和灵活的组织机能之间取得平衡。


只要企业规模不同,所谈论的敏捷、DevOps 就有所不同。在《规模》书中,作者论证认为我们不可能将艺术界或自然界中组织的规模扩大到巨大无比的尺寸。对研发组织来讲,即无法把一个运转良好的 10 人团队的角色分工、协作模式、工具等各方面的结构直接复制并线性扩展用于一个 100 人的大项目或大部门,这样做是无效的。我们需要针对不同的规模,选择和设计相对应的整体方法才行。


DevOps 是实现规模化高效研发的重要一环。人多了,协作起来就会有很多麻烦,比如代码提交时的冲突,超高量级测试用例的执行效率问题等。但在 DevOps 模式下,做好正确的架构、技术实践、文化规范,高绩效的大型组织仍能支撑其小团队维持极高的生产率以及每日的高频度部署 。

执行落地,要有方法有理论,更要脚踏实地、步步为营

好,那么具体应该怎么做呢?


指导思想是要高瞻远瞩、考虑周全,但同时要脚踏实地、步步为营,扎扎实实地实现目标。可以参考如下公式来建设各方面能力:


(工程方法 + 最佳实践 + 生态) x 工具平台 = 能力



具体操作层面,可以参考如下过程:


  • 首先选定一个方法论 / 流程 / 套路,学习消化:如果敏捷、DevOps 对组织来讲是新的知识,那我们就必须考虑学习本身的特点,在尚不理解的时候是很难去进行所谓的适应性调整的,所以最好是先选定一个模型,从僵化执行开始,晚些再复盘改进;

  • 然后选择团队 / 项目,敲定整体实施方案,开启试点:前面选定的是主体方法论,但还需要用其他实践来辅助填补单个方法论的空缺,比如以 Scrum 框架为主,辅以部分极限编程的工程实践以及 DevOps 实践作为补充;

  • 接着就是在试点执行过程中,组织层面要为后续扩大范围打造基座:包括方法论落地的相关经验教训要提炼并转化为可复用、适合推广的智慧资产,以及一批种子选手,后期扩展至更多团队时,他们可以发挥榜样带头作用辅导团队,还有一些能力最好能固化到工具里面;

  • 扩大范围时,要考虑扩展策略,是横向扩展还是纵向扩展,也有可能是同时开展:即有经验可以横向扩展至其他团队 / 项目,直接参考实施,也可以考虑将团队级试点纵向扩展应用于更大规模的项目 / 项目集,这就需要在即有经验基础上进行调整和完善,补充一些实践解决更大规模研发才会面临的问题;

华为云 DevCloud 团队转变历程

以华为云 DevCloud 团队的转变过程来介绍,除了进行团队协作模式的服务化转型,还有很多其他实践也都需要一并落地才行:


实践 1:组织结构和产品架构螺旋相适配;


实践 2:Two pizza team,全功能团队,特种作战;


实践 3:按周迭代,小步快跑,持续规划;


实践 4:服务自治,独立需求排序,开发,部署上线;


实践 5:兼听则明,持续规划,价值排序;


实践 6:与客户联合敏捷,众创,对齐客户商业价值;


实践 7:架构解耦,服务 / 微服务化;


实践 8:云基础设施下,猴子军团出没,耐抗才能高可用;


实践 9:兼顾效率与安全的软件仓库,高速下载,便捷实用;


实践 10:自动化流水线,缩短上线时间,Built-In Quality;


实践 11:企业级仪表盘,基于数据科学决策;


实践 12:运维、监控、运维专家经验沉淀到系统;


实践 13:灰度发布,友好 / 公测,运营运维配合;


实践 14:VoC 驱动,持续规划,数据分析,动态调整,有错就改。

优化组织结构

待上述一切落地,我们要考虑进行组织结构调整或者说落实组织结构调整的事情。麦肯锡在其季刊中表明观点,认为企业必须转变经营模式和组织结构,才能大规模推广敏捷模式。总之,如果敏捷 +DevOps 对组织和业务发展有益,那正如前面讲过的,这个组织结构和模式就需要落到实处,以便能够长期支撑新的业务战略落地,形成竞争优势。


上述过程可能比较耗时、较为漫长,所以很多人会关心是否可以加速?能否一步到位?我们称之为 Big-Bang 模式,这不是不可能,只是相比循序渐进的方式,前期准备需要更全面、更长时间。因为,引入敏捷和 DevOps 对于大多数企业来讲都是一种外来元素,会带来变化,而借鉴萨提亚变革模型,我们知道人们面对变化的第一反应是抗拒、然后是陷入混乱和痛苦挣扎,如果没有充分准备,组织整体就会长时间陷入变革混乱期,且士气低落,那可就不妙了。


敏捷 DevOps 学习建议

最后,还有一些建议给到组织和开发者:


  • 把握趋势,方向大致正确,组织充满活力:我们认为未来是万物互联的数字世界、是智能化的世界,而软件工程则需要解决可信的问题,盯准大方向,才不会做无用功;

  • 借力成熟的实施方法,避开常见陷阱;

  • 站在巨人的肩膀上,省力:借鉴业界的成熟经验,减少自己趟坑的各种代价;

  • 利用各种学习资源,提升自身能力;

  • 千里之行,始于足下,DevOps 之旅,健康自检起步:在 DevCloud 我们用自己的专家服务 DevOps 成熟度评估进行自检,并参考建议持续改进,企业可以通过一些手段对自身的 DevOps 实践能力进行自查并根据结果制定战略。


2019-05-31 18:0618126

评论 2 条评论

发布
用户头像
分享很干,从落地敏捷与DevOps的结合讲述了如何有效提升研发效能,受益匪浅,不过我们在用的落地工具是Worktile,但是和题主的理念是一样的
2019-07-19 00:31
回复
用户头像
很实用也很全面的分享
2019-05-31 18:14
回复
没有更多了
发现更多内容

Kubernetes资源编排系列之四: CRD+Operator篇

阿里云大数据AI技术

大数据 运维

结合“xPlus”探讨软件架构的创新与变革

BizFree

敏捷开发 软件架构 数字化 信息化 软件定制

使用类似搭积木的低代码开发方式进行 SAP API 开发

汪子熙

低代码 云平台 SAP 8月月更 low-code

在SAP分析云里根据业务数据绘制词云(Word Cloud)

汪子熙

SaaS SAP 词云 8月月更 word-cloud

Java 在Word中合并单元格时删除重复值

在下毛毛雨

java; 合并单元格 删除重复值

易周金融分析 | 互联网系小贷平台密集增资;上半年银行理财子公司综合评价指数发布

易观分析

金融 分析 易周金融

写给 Java 程序员的前端 Promise 教程

江南一点雨

Java spring 前端 springboot Promise

云原生系列五:Kafka 集群数据迁移基于Kubernetes的内部

叶秋学长

kafka 开源 Kubernetes 8月月更

一名合格的程序员是如何优雅地解决线上问题的?

程序员小毕

Java 程序员 架构 程序人生 后端

K8S之Flannel的vxlan网络模式初步源码解析

k8s flannel 签约计划第三季

如何用建木CI构建前端E2E质量自查

Jianmu

DevOps 前端 持续集成 代码质量 自动化测试

海外邮件发送指南(一)

极光JIGUANG

消息推送 邮件 SendCloud

PWA 应用 Service Worker 缓存的一些可选策略和使用场景

汪子熙

typescript 前端开发 angular Service Worker 8月月更

Dapr在Java中的实践 之 环境准备

万猫学社

微服务 dapr Sidecar

Dapr在Java中的实践 之 服务调用

万猫学社

微服务 dapr Sidecar

鲲鹏开发者创享日2022:鲲鹏全栈创新 与开发者共建数字湖南

科技热闻

转转商品系统高并发实战(数据篇)

转转技术团队

分布式 高并发

RT-Thread记录(三、RT-Thread 线程操作函数及线程管理与FreeRTOS的比较)

矜辰所致

RTT RT-Thread 8月月更 线程操作

游戏开发常遇到数据一致性BUG,怎么解?

华为云开发者联盟

数据库 后端 游戏开发

看到这个应用上下线方式,不禁感叹:优雅,太优雅了!

华为云开发者联盟

云计算 开发 CCE

一文读懂配置管理(CM)

SEAL安全

企业安全 企业it安全 代码安全

leetcode 155. Min Stack最小栈(中等)

okokabcd

LeetCode 数据结构与算法 栈和队列

Dapr在Java中的实践 之 状态管理

万猫学社

Java 微服务 dapr Sidecar

自动驾驶中的SLAM

博文视点Broadview

C++面向对象友元,全局函数、类、成员函数做友元

CtrlX

8月月更

以技术御风险,护航云原生 | 同创永益 X 博云举办产品联合发布会

BoCloud博云

云计算 容器 云原生

分分钟快速定制您的专属个性化软件应用——BizTool自动化工具简介

BizFree

软件开发 快速开发 低代码开发 个性化 应用开发

5S软件就是将软件应用全维度简单化的软件系统

BizFree

k8s 敏捷开发 软件架构 高性能 快捷调试

STM32的内存管理相关(内存架构,内存管理,map文件分析)

矜辰所致

内存 stm32 Flash 8月月更

开源一夏 | 使用 JavaScript 和 CSS 做一个图片转 PDF 的转换器

海拥(haiyong.site)

JavaScript 开源 前端 8月月更

Spring(五、注解开发)

开源 8月月更

华为大规模敏捷开发实践:如何从0到1落地DevOps?_服务革新_华为云布道师团队_InfoQ精选文章