这是软件工程系列知识总结的第七篇文章,也是最后一篇。

前面的文章,聊了软件工程的基础理论、项目管理、需求分析、架构设计、软件测试以及线上服务的质量保障。其中在架构设计和线上服务的质量保障中,我也提到了关于持续集成持续交付相关的内容。软件工程的本质是用工程化的方法去规范软件开发,让软件开发项目可以按时保质完成的同时且成本可控。

交付的软件产品除了质量之外,交付效率对团队来说也是很重要的一点,而持续高效的交付高质量的软件产品,更需要一个高效的持续交付技术体系支撑。

理解持续交付体系

无论是保障质量,还是提升效率,都需要某些持续的能力来支撑他们。

这种支撑能力,可以看作是一种工厂化的流水线能力,业内通常将其统称为持续交付。

从质量保障的角度总体来说,我将其分为:CI持续迭代-CI持续集成-CD持续发布-CO持续运营-CM持续度量。

持续迭代(Continuous Iteration)

技术是什么呢?技术是工具,技术服务于架构设计,架构设计服务于产品,产品服务于业务,业务服务于商业。

这里的持续迭代,更多指的是业务或者需求上的一种可持续的变化,通过需求不断变化来驱动,持续迭代软件产品,为用户提供更好的服务,达成商业价值变现。

持续集成(Continuous Integration)

持续集成可以帮助技术团队更加频繁的将代码更改合并到共享分支或"主干"中。一旦对应用所做的更改被合并,系统就会通过自动构建应用并运行不同级别的自动化测试(通常是单元测试和集成测试)来验证这些更改,确保这些更改没有对应用造成破坏。如果自动化测试发现新代码和现有代码之间存在冲突,CI 可以加快修复这些错误的过程。

持续发布(Continuous Deployment)

这里的持续发布包括持续交付(Continuous Delivery)和持续部署(Continuous Deployment)。

完成 CI 中构建及自动化的测试流程后,持续交付可自动将测试通过的代码发布到存储库。持续交付的目标是拥有一个可随时部署到生产环境的代码库。在持续交付中,每个阶段都涉及测试自动化和代码发布自动化。在流程结束时可以快速的将应用部署到生产环境中。

对于一个成熟的 CI/CD 管道来说,最后的阶段是持续部署。作为持续交付的延伸,持续部署可以自动将应用发布到生产环境,持续部署在很大程度上都得依赖精心设计的测试自动化。持续部署意味着开发人员对应用的更改在编写后的几分钟内就能生效(假设它通过了自动化测试)。这更加便于持续接收和整合用户反馈。

所有这些 CI/CD 的关联步骤都有助于降低应用的部署风险,因此更便于以更快的节奏发布对应用的更改。不过,由于还需要编写自动化测试以适应 CI/CD 管道中的各种测试和发布阶段,因此前期建设需要很大的资源投入。

持续运营(Continuous operation)

应用在生产环境发布后,需要持续的跟踪线上质量、用户反馈建议以及线上可能发生的一些问题或者故障。

所有线上的用户建议、可能发生的问题或者故障,其实从本质来说,和交付质量都息息相关。因此这里提出了持续运营,就是提倡质量的把控、验证、度量即使到了生产环境,也需要持续不断的将这套机制运行下去。

持续度量(Continuous measurement)

脱离数据讲质量是空中楼阁,从需求质量到交付质量整个周期中,将每个阶段的要做的事情,出现的问题,发生的风险以及结果都进行可量化的记录展示,然后从中进行分析评估,找到不足之处。这就是持续度量,需要持续的投入。

持续交付优势

  • 尽快暴露问题;
  • 极大提升效率;
  • 提升交付质量;
  • 降低项目成本;

持续交付体系工具


持续交付的前提是整个研发测试发布流程要做到高度自动化。要实现持续交付,项目一般需要满足这些条件:

代码构建的过程可以反复高频进行,且每次构建结果是一致稳定的;

所有环境配置信息都存于源代码管理工具中(现在有配置中心组件如Nacos/Apollo);

针对不同环境需要部署的代码包,需要自动编译和创建不同版本;

所有环境的构建编译部署发布步骤必须是自动化完成;

DevOps和持续交付的关系

持续交付要求代码可以反复高频的构建编译,代码包的测试部署发布需要自动化来完成,但传统的研发交付流程已经渐渐不适应当下的业务变化,因此才有了近几年的DevOps,甚至万物皆可Ops。

其实DevOps并不是一种岗位,可以理解为一种紧密协作的高效工作方式。无论是DevOps,还是所谓的TestOps,其实都指的是开发/测试和运维同学一起通过高效协作的方式来更快的构建、测试和发布软件。

DevOps的优势

以DevOps为例,当团队采取这种工作协作方式后,带来的好处如下:

  • 软件的构建测试和发布过程高度自动化;
  • 信息更加透明,交付质量更易于度量评估;
  • 跨团队和跨职能协作的效率和氛围会更好;

要实践DevOps,意味着团队需要去做这些事:

  • 构建自动化流水线系统,从构建测试到部署实现高度自动化;
  • 建立完善精确的监控体系,尽力让信息变透明,数据可度量;
  • 建立跨团队跨职能的沟通协作机制,形成团队的流程和文化;

DevOps工程师要做的事情

  • 帮助团队建立持续交付工作流程和工具;

  • 建立一套完善的监控报警系统和故障响应流程;

  • 构建适用于团队研发交付流程的基础技术设施;

  • 推动DevOps流程和文化在团队落地;

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以加入我们的QQ群:746506216,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

构建高质量的持续交付体系相关推荐

  1. 构建持续交付_如何使交付成为您的重点将如何帮助您构建高质量的应用程序

    构建持续交付 by Simon Schwartz 西蒙·施瓦茨(Simon Schwartz) 如何使交付成为您的重点将如何帮助您构建高质量的应用程序 (How making delivery you ...

  2. 持续交付体系在高德的实践历程

    1. 前序 对于工程团队来说,构建一套具有可持续性的.多方面质量保证的交付体系建设,能够为业务价值的快速交付搭建起高速公路,也能为交付过程中的质量起到保驾护航的作用.本文为大家介绍持续交付体系在高德的 ...

  3. 医疗数据治理——构建高质量医疗大数据智能分析数据基础

    医疗数据治理--构建高质量医疗大数据智能分析数据基础 阮彤,邱加辉,张知行,叶琪 华东理工大学计算机科学与技术系,上海 200237   摘要:以专病真实世界研究为背景,分析了医疗数据治理和数据可用性 ...

  4. 【Insights直播】3D建模服务,快速构建高质量3D模型

    2021年7月15日,HMS Core 6.0面向全球开发者正式上线.华为在HMS Core 6.0中,为开发者开放了一个全新的服务--3D建模服务(3D Modeling Kit),为应用开发者提供 ...

  5. 使用Amazon SageMaker构建高质量AI作画模型Stable Diffusion

    使用Amazon SageMaker构建高质量AI作画模型Stable Diffusion 0. 前言 1. Amazon SageMaker 与机器学习 1.1 机器学习流程 1.2 Amazon ...

  6. 如何构建高质量的 QA 问答知识库

    NLP 技术落地最普遍的场景就是智能客服,如阿里的"小蜜",京东的"JIMI"等等.NLP 技术也广泛应用于搜索系统.无论是"智能客服",还 ...

  7. 华为3D建模服务(3D Modeling Kit),轻松构建高质量3D模型

    华为3D建模服务(3D Modeling Kit)是华为在图形图像领域又一技术开放,面向有3D模型.动画制作等能力诉求的应用开发者,基于AI技术,提供3D物体模型自动生成和PBR材质生成功能,实现3D ...

  8. 三、如何构建高质量的用户画像

    1.如何构建高质量的用户画像 1)人口属性 != 用户画像 2)用户的行为是构成用户和用户之间差异化的核心 3)观察用户行为不是观察他做了什么事情,而是观察他做这件事情动机是什么2. 4) 什么是无用 ...

  9. 以人为本 | 如何保证高质量的软件交付

    软件团队想要保证高质量的软件交付,一般情况下会想到以下几点: - 多的测试人员 - 高薪资.福利 - 各种质量管理工具和手法 - etc- 我们有大量的实际经验表明,这些方法往往没有达到预期值,更有甚 ...

最新文章

  1. ssh远程执行多个命令
  2. Java自学路线总结,已Get腾讯Offer
  3. 学习第七天——培训开始
  4. android NDK 二、编译方法
  5. linux的/etc/hosts的作用
  6. matlab 3D绘图详解
  7. Chrome Native Client 原理
  8. 线程监视器模型_为什么模型验证如此重要,它与模型监视有何不同
  9. mysql数据库主要用来做什么的_水晶头骨用来做什么的?
  10. 两个队列实现一个栈思路c语言,两个栈实现队列功能C语言实现能运行!
  11. uinty粒子系统子物体变大_新Unity 最新粒子系统如何用代码改变参数
  12. (二)为AI时尚分类准备数据
  13. spring 配置属性细节
  14. 基于vscode编写markdown导出带书签(目录)的pdf
  15. 优科豪马冬季SUV轮胎G072的性能特点全解
  16. Emmagee工具的使用以及csv数据分析
  17. excel查标准正态分布_利用Excel的NORMSDIST计算正态分布函数表1
  18. 最彻底的玩客云绝育方法-避免持续读写损伤硬盘和资料
  19. lua之诡异的tonumber
  20. 回收站里的文件都清空了应该怎么恢复?

热门文章

  1. 丹佛斯变频器al14故障代码_丹佛斯VLT2800型变频器上电后显示故障代码“Err14”(接地故障)...
  2. 电容触摸控制器IT7259Q-13,IT7259EX-24 I2C 接口
  3. python爬虫——用Scrapy框架爬取阳光电影的所有电影
  4. 银联小程序支付 提示“认证失败”
  5. linux系统基础回顾(二)
  6. unity3d开发 打飞机小游戏(三)(飞机子弹设置)
  7. 基于RTL8211E的千兆以太网收发verilog程序(已经硬件验证,初学=语法注释较多)
  8. 转】用Maven构建Hadoop项目
  9. 二十四节气和计算机专业,墨迹万年历专业日历“二十四节气”带你行走不一样的2021...
  10. 虚幻引擎图文笔记:使用指数级高度雾(Exponential Height Fog)实现体积光