首页 > 其他分享 >《敏捷无敌之DevOps时代》读后感

《敏捷无敌之DevOps时代》读后感

时间:2023-07-26 09:33:59浏览次数:43  
标签:需求 读后感 周期 迭代 DevOps 无敌 交付 敏捷

 

背景:

2020年基于我司业务形态,我开始实行敏捷项目管理。以敏捷为道,Scrum为法,迭代为术,禅道作器,大张旗鼓的搞了2年敏捷开发。随着时间推移,问题出现在2022年,当时我们已经完全按照Scrum的模式在运作着10个项目,以及项目团队。我们基于禅道提炼了如:任务准期率、任务准交率、计划偏差率等指标。但是其中一项指标成了我们10个团队的核心痛点,即:需求交付周期。我们在2022年年底复盘的时候发现全年下来,需求交付的平均周期为40天,也就意味着一个需求从登记到禅道到关闭的平均周期是40天。这是我们无法接受的,也是业务部门(内部甲方)无法接受的。

问题出在我们的发布与迭代是强关联的,我们的迭代是2周一次,然后一个迭代就发布一次,也就是说一个需求在理论上最快发布周期是21天(3周),这里说的是理论值如下图:

 

除非刚好,提出需求的那天正好是迭代开启的头一天,那样可以做到14天,但是那种情况太极限了。另外也不是刚刚提出需求,下个迭代就可以安排开发。所以普遍性来说,算上排期,一个需求平均交付周期在这种模式下最快就只能做到21天。

但是,不可接受的事情是我们10支项目团队,平均需求交付周期是40天,甚至比21天还要多2周。一个经典的案例是用户需求增加一个Excel导入导出的功能,问我们要多久。我们开发人员评估的工时是2小时,但是客户问我们什么时候能用上,我们回答却是2周以后。用户不理解,我们也不理解。至此,如何将迭代与发布脱钩,就成了我研究的课题。

摆在我们面前的有两条路线可以选择一条是SAFe,一条是DevOps。 由于我们在2020~2022年期间先后取得了Scrum Master 和 PMI-ACP的认证。所以思维定式上会去靠拢SAFe, 完全实行SAFe对人员的要求很高,转型也很痛苦。因此,我只采用了SAFe中的“发布火车”这一重点实践。 固定每周2、4 为发布周期。 在试行2个月后,研发人员抱怨声音越来越大,抱怨的主要原因是开发人员根本跟不上。其实这里所谓的跟不上,经过我后面的调研不是指开发能力不行,而是对代码没有基于需求做主分支管理。至此,我开始研究另外一条路线:DevOps 。

写在前面:实施DevOps两个月之后,我将需求平均交付周期从原来的40天,成功的缩短到了23天,并且后续任然有信心降低到15天内


正文:

 

我入手的第一本书籍是《DevOps实践指南》。说实话,这本书把我整的有点懵逼。书中讲了很多运维人员和开发人员的实操案例。虽然我本身具备10年的.Net开发经验,但是我现在本职工作是项目经理,这对我来说并没有解决我的核心痛点。也可能是我们目的性太强,造成了我耐不住性子去读这本书。不过,这本书在我小白阶段的时候,至少跟我说清楚了什么是:DevOps?

早期在百度搜索DevOps,多数解释就是:开发运维一体化,打通开发与运维之间的部门墙之类的。其实,这只是狭义的DevOps的理解。通过潜伏到各种微信群中,听到各种大佬对DevOps的解释,有的说是工具链有的说是是流水线有的说是实现自动化,有的说是实现CI/CD(持续集成/持续部署)

这种浑浑噩噩的阶段,直到读完《DevOps实践指南》才慢慢好转,那么究竟什么是DevOps?

我认为现在最好的定义是:研发效能。 特别是这个“效能”,不是研发效率,效率指的是团队的产能,速度。 而效能是这个“能”字是指的:赋能。 这样才解释清楚,在广义的DevOps是怎么适配到IT的研发场景。紧接着问题又来了,怎么个赋能法才叫DevOps?还是没说清楚什么是DevOps?我们先把这个问题先放一下,先来回答另外一个问题:什么是敏捷?

其实,在我入门敏捷的时候,也具有同样的困惑,什么是敏捷?是Scrum?是Xp?还是水晶? 后来明白了,符合敏捷宣言的都是敏捷。

 

 

再回到前面那个问题,什么是DevOps ?如何为研发效率赋能?是否也有类似敏捷宣言这样更具体的解释,答案是有的《DevOps实践指南》给出了DevOps 三大原则: 流动、反馈、持续学习。 简单来说符合 流动、反馈、持续学习的就是DevOps,并且DevOps自身也在不断进化更新。

可是,还是有点抽象。这个持续学习还好理解,无论是理论指导实践,还是实践完善理论,持续学习始终是向上的攀升的正确途径。

那么剩下的两个问题:

1,流动是什么?

2,反馈是什么?

带着这两个问题我又分别入手了《价值流动》、《敏捷无敌之DevOps时代》这两本书。

关于《价值流动》我之前写过另外一篇读后感,这里不做赘述,总之该书解释清楚了流动的是啥,如下图:

 

描述

交付物

特性

为推动业务结果而增加的新价值;对客户可见

新的业务价值

缺陷

为修复影响客户体验的质量问题

质量

风险

致力于解决安全、隐私和合规风险

安全、治理、合规

债务

软件架构和运维架构的改进

消除未来交付的障碍

 

到这里我的问题更多了,前面我们要解决的问题是如何将迭代与发布脱钩? 如何将需求交付周期从40天降下来?我们通常认为的需求就是上表中的特性,这里一看不但需求对应的特性没有 透明化另外的缺陷、风险 和债务也是不透明的。但是总而言之,一句话:当前我是看不见需求的流动, 这也就解释了为什么我潜伏微信群的时候,有大神解释DevOps 就是流水线,流动的东西就是上面的四大流动项。

上面解释清楚了什么是流动,以及流动的是什么。那么转换成为行动任务就是,打造一套体系让流水线,实现可视化、透明化。这让我们想起了考ACP的时候的 “价值流图” 有异曲同工之妙。

就像木桶定理一样,决定一个木桶能装多少水,取决于那么短板。 无论是特性、缺陷、风险、还是债务。对应的是四条处理流程(流水线),而将这个流程以进行可视化,就能发现过程中的短板,并加以改善。根据我浅薄的理解,我悟到这里,算是对“流动”有了一个较为具体的认知。

那么反馈又是什么? 基于我对敏捷的认知,反馈就是以最小可行产品实现快速上线,获得用户反馈,并立即优化调整。通过阅读《敏捷无敌之DevOps时代》之后,我有新的理解。通过各种工具建设对 观测指标 进行提炼对各项指标进行治理形成反馈并利用这些反馈进行改进和优化,从而形成犹如PDCA的正向循环。

所以,这里又说明白了为什么我潜伏在微信群中,大佬说DevOps是 工具链

 

 

说到工具链,不得不说我们潜伏微信群时候,大佬的另外一个解释:自动化前面讲的基于四大流动项,可以打造四条流水线。那么流水线除了做价值流图分析过程短板以及等待浪费以外,还可以针对流程本身进行提速。 这里我们可以简单的映射一下现实生活中的工厂,手动流水线自动化流水线

至于怎么自动化,说来也简单。就是把重复劳动的事情交给机器去做,现实生活中的流水线不也是这样的吗?这里对于解决了哪些重复劳动不做篇幅(PS.前期在B站一搜DevOps,老是出来一堆工具的实操教程,一直给我整的挺懵逼。)

这里再回头说一下,发布与迭代怎么脱钩,通过我对这些DevOps工具的了解,接触到了CI/CD

  CI (Continuous Integration):持续集成。它涉及将开发人员的代码频繁地集成到共享存储库中,并使用自动化构建和测试工具对代码进行验证。

  CD (Continuous Delivery/Continuous Deployment):持续交付/持续部署。它涉及自动化地构建、测试和部署应用程序以实现快速且可靠的交付。

本身,CI/CD 概念并不复杂,为什么我们前面用发布火车团队反应这么大呢? 前文中也有描述,没有基于需求创建分支这是其一,创建分支缺乏管理,无法有效的实施持续集成、持续部署这是其二。

通过建设CI/CD,基于需求创建分支,配合工具使用。做好的功能通过测试,就发布。不再等到迭代结束再发布,一下子就把需求交付与迭代脱钩了,我们的交付周期也很快的从40天降低到了30天内。

写到这里,我再提炼几个关键词: 流动、反馈、持续学习、透明化、可视化、自动化、工具链、流水线,CI/CD。

到这里,还不是DevOps建设的全貌,接下来就要大刀阔斧的动起来了~!

 


感悟:

前面已经讲过,由于在团队内部实行“发布火车”,造成的团队各种抱怨。为了达成共识,这次我选择了外来和尚念经。由于市场上也有不少的成熟的DevOps解决方案,我先后组织了4场“解决方案供应商" 线上交流会,让团队对DevOps有了一致的认知,也成功勾起了大家对组织改善的意愿。

这里我规划了三条建设路线同步进行:

其一,是工具链。包括:禅道18.0、GitLab、SonarQube、Jenkins、Selenium、Jmeter、K8s、Docker、Zabbix、WebFunny

其二,是流程与规范,包括:项目管理流程、需求管理流程、缺陷管理流程、敏捷运作机制、禅道使用规范、.Net编码规范、JAVA编码规范、GtiLab使用规范、持续集成规范、持续部署规范、测试管理规范、制品管理规范、服务器监督管理规范、应用系统监督管理规范。

其三,是过程性指标与结果性指标。包括:需求总数、需求从登记到设计周期、需求从设计到评审周期、需求从开发到提测周期、需求从测试到发布周期、代码提交次数、部署频率、部署成功率 等指标。

紧接着趁热打铁,直接把DevOps转型当做项目来做,发起了对DevOps的立项:

项目背景:

数字运营中心是敏捷型交付组织,具有边设计边生产边实施、用户需求多且变更频繁、软件使用过程中需要快速响应等组织特性。随着部门业务量的倍速增长,管理复杂度不断增加,同时需要更精细化的观测指标进行管控,产品设计、项目管理、软件开发、质量测试等过程缺乏规范性,尤其对细节管理需要实现过程与结果透明化,需要一套适合自己的面向企业服务的软件生产管理体系与工具,同时拉通各个职能角色,使软件生产业务数据透明可视;缩短需求生产周期,降低开发成本,进而实现开发运维一体化,提升管理效率。

项目目标:

目标1:需求平均交付周期从40天降低至25天。

目标2:需求按期交付率从90%提升至95%。

目标3:人均需求交付数从1.5提升至1.8。

目标4:软件发布一次成功率实现透明化,并提升至80%

项目收益:

投入180人天,获得约14人编制的产能,计算如下:

数字运营中心以70人为基准,当前月度人均交付需求数为1.5。 通过建设DevOps研发效能体系,预计产能提升至月度人均交付需求1.8。

通过计算可知:

当前产能:70*1.5=105

目标产能:70*1.8=126

提升产能:126-105=21

释放同等人力:21/1.5=14人,以人均薪资1万元计算,约每月降本14万元全年降本168万

项目蓝图:

 

 

成果:

再回到一开始的问题,我们通过建设蓝图里的一系列工具,成功实现了基于需求做代码版本的主分支管理,实现了一周2发布的频次。自此也完成了发布与迭代脱钩,虽然目前DevOps研发效能这个项目还没有完全结束。但是我们已经成功实现了交付周期从原来40天缩短到了23天。大致成果如下图:

 

 

 

 

标签:需求,读后感,周期,迭代,DevOps,无敌,交付,敏捷
From: https://www.cnblogs.com/demon28/p/17581575.html

相关文章

  • 《京东敏捷实践指南》读后感
        背景:2022年5月,践行敏捷已经有一年有余,自认为在Scrum这套框架下已经玩明白了。就老想着找个参照物来验证一下我们团队的敏捷成在什么水平,也找过类似AMM这样的框架来评估成熟度。但是整体得分不高,这让我在心中种下了一个疙瘩,评分不高如何改善?其他的公司敏捷是怎么做......
  • 《大道至简》读后感
    《大道至简》读后感《大道至简》是一本经典的软件工程读物,作者通过深入浅出的方式传达了简洁的编程原则和设计哲学。读完这本书,我深刻地意识到简洁和清晰的代码对于软件开发的重要性,以及简单之美在软件工程中的力量。首先,作者强调了简洁代码的重要性。在软件开发过程中,我们经常......
  • 《大道至简》读后感
    《大道至简》读后感   我利用暑假期间阅读了一本软件工程经典读物——《大道至简》,其中有一些思想令我受益匪浅。它从编程、团队、与客户的沟通和具体工程等方面的思想都令我耳目一新。下面,我就谈一谈我的具体感受。一、编程方面   程序其实就是算法+结构+方法,本书......
  • 从零开始针对 .NET 应用的 DevOps 运营实践 - enkins & SonarQube自动化
    从零开始针对.NET应用的DevOps运营实践-MSbuild&Java环境搭建 一、Overview#最近的一段时间,在公司里我都在进行基于Jenkins和SonarQube配合已有的Gitlab搭建部门的持续集成环境的工作,虽然之前有使用过GitHubActions和AzureDevOps,但是从头开始搭建这样的一......
  • 研发效能|DevOps|平台工程
    欢迎加入我们的「研发效能DevOps」群。我的文章主要首发在scmroad主要关注领域{研发效能、研发工具链、持续集成、交付、DevOps、效能度量、微服务治理、容器、云原生}欢迎添加我(xueliuan)入群,添加请备注公司、职位......
  • DevOps | 产研协同效能提升之评审、审批流、质量卡点
    研发过程中有各种需求的评审、审批流和质量卡点,有的是为了质量把关,有的是为了彰显权力,还有一些是为了信息告知。本文主要讨论在软件开发过程中涉及的评审、审批和质量卡点三种情况,同时探讨对研发流程的影响,在这过程中如何去提效。 同团队内部评审同团队之间的评审包括产品团......
  • 浅谈DevOps
    1.DevOps概述1.1定义DevOps(DevelopmentandOperations)是一种软件开发和运维的方法论和实践,旨在通过加强开发团队和运维团队之间的协作和整合,提高软件交付和运维的效率、可靠性和质量。传统上,开发团队负责软件开发、功能实现和变更管理,而运维团队负责部署、配置和维护生产环......
  • 大道至简读后感
    大道至简读后感    在读书过程中,阐述了一个观点是懒人造就了方法,我不是很认可,我认为是高效和时代的发展与竞争成就了方法,方法的诞生可以让工程更加的高效竞争力也大大加强,懒人只是方法的受益者或者是方法的创造者,方法的创造者才是有智慧的人。    在过去,我一直坚......
  • 大道至简读后感
    读了《大道至简》,我发现软件工程的的学习生涯似乎并不是想象中的那么枯燥,每天对着代码苦苦哀叹,烦躁无比。他们也可以是很生动形象的东西,例如开篇的愚公移山的比喻,就把软件工程的世界叙述地更加有意思又易于理解。编程的第一要务是先把事情分析清楚,事件先后的逻辑关系和依赖关系要......
  • kubesphere devops部署springboot项目
    一:使用流水线devops部署springboot项目的流程: 二、本次项目结构: 其中Dockerfile:FROMopenjdk:8-jdkLABELmaintainer=leifengyang#dockerrun-ePARAMS="--server.port9090"ENVPARAMS="--server.port=8080"RUN/bin/cp/usr/share/zoneinfo/Asia/Shanghai/et......