首页 > 其他分享 >企业如何落地DevOps(上)

企业如何落地DevOps(上)

时间:2023-02-28 15:00:44浏览次数:28  
标签:落地 devops DevOps 如何 质量 交付 版本 度量

这是devops系列的第四篇文章。

前面几篇文章,分别从devops的定义和价值、落地路线图以及落地三要素进行了分析。

这篇文章开始,我会分享devops在企业或团队中具体的落地实践以及落地过程中的一些关键动作。 

业内关于devops成熟度模型以及落地实践的关键能力,有不同的定义。比如信通院牵头制定的devops过程模型:

当然,一线大厂及一些软件服务咨询机构也有自己的模型。没有完全标准的模型,只有适合自己的实践。

结合网上的公开资料及我自己的学习实践,我总结了如下几个比较通用的落地实践和关键能力。

版本和配置管理

这一部分可以分为两个角度来讲,但版本和配置管理又有很高的关联度。

所谓的版本管理就是从软件研发交付的整个生命周期出发,从需求到研发再到线上交付,都进行规范管理,达到信息一致可追溯,版本信息标准化。

从软件工程的角度来说,每次线上交付的软件产品,都是一个完成的制品,与它相关的信息,比如需求文档、设计方案、代码分支、测试用例、bug清单等,都应该与该制品关联起来,保证交付的完整性。

配置管理则比较容易理解。版本来源于变更,每个版本都有很多不同的配置信息。而且我们所谓的线上风险线上故障,大多是由变更引起的。因此配置管理也是风险控制和质量管理的一部分。

 

部署和环境管理

在软件研发测试阶段,总免不了频繁的编译构建和部署,特别是业务线众多,迭代频繁的企业而言,往往具有多套环境,常规的有开发环境、测试环境、uat环境、灰度环境和生产环境。

为了满足多版本并行和满足不同的技术需要,往往测试环境就能分出很多套。

以我之前就职的一家公司为例:两周一个国内版本,一周一个国外版本,国内国外版本之间业务有依赖调用关系,且同时又有很多探索创新的业务是通过独立项目来快速迭代的。

这部分独立项目的发布时间和固定的版本又是重叠交错,导致了服务部署和环境资源分配经常出现冲突。

我之前写过一篇文章,专门聊过这个问题,详情见:《被忽视的问题:测试环境稳定性治理》

因此我将版本和配置管理放在了第一项,因为只有先规范好标准的版本和配置管理,才方便在软件部署时,更好的利用好不同的环境资源。

但这并不代表部署和环境管理不重要,恰恰相反,部署和环境管理,可以看作是一个公司软件研发的基础能力,如果最基础的能力建设做的不好,那更上层的技术实现和高效保质交付,就很难谈起。

 

质量内建和门禁

很多公司将产品质量的责任推给了测试团队(或者说质量保障团队),但本质来说,测试部门更多的是通过一系列手段去验证产品是否满足预期设计和要求,尽可能发现和暴露已经存在的问题。

而产品的质量,从设计阶段就开始定性,编码实现阶段定量,绝不能像前文提到的在最后一环让人用锤子去保证质量。

衡量产品价值的一个关键因素是质量,产品质量也是一个长线递增的价值维度,因此质量内建的作用就凸现了出来。

质量内建的本质,和devops的文化其实很类似,目的都是让整个团队认识到质量的重要性。

从最初的需求和设计环节就关注产品质量,在研发编码阶段开始定量去多维度评估,测试团队需要做的是牵头去推动质量内建的文化,建立流程制度,

设定软件产品每个流转环节的准入准出标准,做好把关,并及时的协同其他团队一起去做风险预防,以确保最终线上交付的产品是高质量的。

 

持续集成和交付

持续集成和持续交付可以说是软件工程领域的一个重要实践,它提倡的是频繁的将团队成员提交的代码快速的进行编译构建,并且每次集成后自动进行自动化测试的验证工作,以期尽早更快的发现问题并快速修复。

持续交付并不意味着线上发布才是交付,而是在整个软件生命周期中,每次提交、编译都进行快速的验证,在每个流转环节进行快速验证,这样可以更好的保障最终交付给用户的产品,经历了多轮高密度的验证后,质量更符合预期。

 

可视化和可追溯

IT或者说技术人员的很多生产研发过程是不可见的,因此可视化和可追溯成了一个很好的评估devops的视角。

可视化指的是将整个研发交付过程改善为进度明确、结果可量化、过程自动化的动作。这样做的好处在于一方面避免由于人这个个体的差异导致的信息差以及误操作风险;

另一方面通过标准的可视化展示,识别过程中的低效环节,这样也更利于对低效环节进行风险识别和改善。这也是我在前文《落地DevOps的路线图》中提到过的devops落地的切入点。

通过过程可视化自动化,更直观的展示,从全局视角进行风险评估和识别,驱动结果度量和持续的改进,最终确保整个交付的过程和结果是更高效,质量更好。

 

持续度量和改进

持续度量的目的不是为了KPI,而是结果可量化。

一个软件产品经过需求设计评审、技术设计、代码开发、测试验证等很多环节,才能保障最终的交付。

这就是一个将不确定性(需求)转化为确定性(具有严密逻辑的软件系统)的过程。确定性需要一定的衡量标准来评估它是否满足预期的设计,因此是需要一定的数据度量的。

而持续度量的原因,是业务和技术本身就处在一个不断变化发展的状态,需要持续的度量和评估,才能保障软件系统的质量长期处在一定的水准之上,满足用户需要和保障业务目标达成。

度量的本质,是具体的定量,而非抽象的定性。

只有持续度量,才能发现过程中的低效环节以及存在的问题,然后持续进行改进,以保障最终的交付质量。

我之前写过的质量度量相关文章,详细聊过这个话题,具体内容见:

《聊聊我对质量度量的看法》、《TMMI角度谈谈质量度量》

 

风险评估和兜底

软件的设计、构建和交付都是存在风险的,而每次的变更也会引入很多可能的新的风险。因此需要引入机制和方法,通过团队配合,加上工具辅助来做好风险评估和兜底。一般可以从如下五个阶段来开展:

  1. 风险评估:在前期设计阶段让相关人员进行充分的风险评估,而不是等到上线阶段;
  2. 风险预防:在技术方案设计和代码编写阶段即考虑可能出现的风险,并做好对应的冗余措施;
  3. 风险验证:在测试环节尽可能的去覆盖可能出现风险的点,并进行大量快速的验证,尽快发现和改善;
  4. 技术债务:长期迭代的后果就是背负技术债务,而持续的小范围的优化和定时的重构,则能改善大部分技术债务;
  5. 可用性策略:线上业务的稳定性是最重要的,业务的稳定性依托于服务的可用性,因此可以借助如混沌工程、全链路压测等手段,不断的发现线上存在的风险,并针对性做好保障可用性的措施如:限流、降级、熔断、隔离等。

devops组织文化

devops的落地需要制定一定的流程机制,来让参与的具体人员在行动中践行这些文化,潜移默化的形成工作的行为准则。而这些行为准则组合在一起,就构成了我们宣讲的devops文化。

而devops组织的作用,则是负责文化建设+团队赋能+方向引导+创造环境。通过制定落地实施流程,形成行动和响应机制,在关键节点推动项目进度,在行动中不断践行和树立devops的工作实践准则。

总结一下,统一人员认知就是树立共同目标,组织机制流程建设就是保证团队沿着正确的道路向既定目标前进,而工具和平台则是这个前进过程的支撑和加速器。

 

标签:落地,devops,DevOps,如何,质量,交付,版本,度量
From: https://www.cnblogs.com/imyalost/p/17164280.html

相关文章

  • 如何在CAD中徒手画不规则图形?你用过SKETCH命令吗?
    CAD画图过程中,当需要从扫描图上描绘出一些不规则的图形时,用直线或多段线命令绘制又很麻烦,那么,有什么办法可以快速在CAD中徒手画不规则图形呢?一看你就没有用过SKETCH命令,本......
  • Python中如何读写.bin文件?
    我们知道numpy的array是可以保存到文件的,一个常用的做法是通过to_file()保存到而进行.bin文件中,然后再通过from_file()从.bin文件中将其读取出来,下面看一个例子。data_in......
  • 《话糙理不糙》之如何在学习openfoam时避免坑蒙拐骗
    今天开启一个单独的系列《话糙理不糙》这个系列可听可不听,只渡有缘人要是真有人来杠,我真是非常懒得理-谁要和你说学openfoamC++基础不重要,那就是放氨气,非常误人这......
  • 如何实现延迟任务,这11种方式才算优雅!
    大家好,我是三友~~延迟任务在我们日常生活中比较常见,比如订单支付超时取消订单功能,又比如自动确定收货的功能等等。所以本篇文章就来从实现到原理来盘点延迟任务的11种实......
  • 如何挑选手游SDK?
    手游SDK是手游联运平台的重要组成部分,主要负责游戏平台的注册登录、充值支付和数据管理分析,当游戏平台接入游戏时,需要统一进行账号的创建、支付等,此时游戏SDK就可以将这些共......
  • httpclient如何一起上传内容和图片
    以文件的形式传参/***通过拼接的方式构造请求内容,实现参数传输以及文件传输**@paramactionUrl访问的服务器URL*@paramparams普通参数......
  • 虚拟主机中,如何知道服务器上已安装的所有字体的列表?
    很久以前,我曾写过一篇“网页中如何获取客户端系统已安装的所有字体?”之后,有一些朋友问我:在使用虚拟主机的情况下,如何获取服务器上已安装字体的列表?实际上,非常简单!在支持asp.......
  • IM即时通讯开发如何正确理解HTTP短连接中的Cookie、Session和Token
    众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动端IM)的数据流交换方式都是Http短连接+TCP或UDP长连接来实现。Http短连接主要用于从服务器读取各种持久化信......
  • 如何在IIS中启用HTTPS
    在上篇文章中,介绍了如何安装typecho博客系统,默认是没有启用https访问的,这篇文章介绍如何在IIS中开启https访问。 开启https访问需要两个步骤:1、申请一个ssl证书,我这......
  • 如何解决7z: command not found问题
    7z是一种常见的压缩文件格式,如果你想要压缩或解压缩7z文件,你需要在你的系统上安装p7zip和p7zip-full。但是,有时候你会发现当你尝试运行7z或7za命令时,它会显示“bash:7z:c......