做到这4点,才是真正的持续交付| 研发效能提升36计

简介:全线专栏《研发效能提升36计_持续交付篇》上线啦!本专栏将通过10-20篇文章,系统分享云原生时代,企业如何落地持续交付。本文是该专栏的第2篇。 什么是真正的持续交付?

编者按:全线专栏《研发效能提升36计_持续交付篇》上线啦!本专栏将通过10-20篇文章,系统分享云原生时代,企业如何落地持续交付。本文是该专栏的第2篇。

什么是真正的持续交付?

首先,我们先看一下什么是持续交付。我们认为,持续交付至少应该包含这4点:

● 持续:顾名思义,是均匀的、分散的。具体来说是要:

粒度小: 持续发布的粒度一定要很小,大了便很难做到“持续”。

频率高:发布频率要非常高。

● 快速: 持续交付中整个的交付过程是很快的,交付频率也是很高的。要做到快速需要。

工序短:在测试、发布、开发等各个阶段中都要做到“短”。这样才能做到快速地反馈、快速地响应。

等待少: 工序和工序之间、工序和其他流程之间的等待应做到“少”。

反馈快: 提交代码后,应在尽短时间内反馈此次提交的问题,应尽快修复问题再尽快得到又一次的修复反馈。

● 高质量:持续交付是要能够保证质量的,一定要做到高质量。高质量需要保证:

质量可见性: 判断做得好不好,首先我们要看到它,所以可见性是非常重要的。

缺陷少: 软件应是按照预期设计去运行的,而不是有很多潜在的缺陷在里面。

故障少: 每次软件故障带来的不仅仅是客户的损失,也是软件团队的损失。很多客户机会、业务资产会因为故障太多而白白损失掉。

● 低风险:在现在的互联网环境下,风险无处不在,所以我们要做到安全、合规且可信。

软件可观测: 要知道软件的风险,最重要的一点就是可观测,知道软件当前是什么样子的。

发布可控: 我们后续会专门讲到。

问题可回溯: 如果出现了发布问题或软件故障,我们能够回溯整个问题的来源。从哪开始、从哪个地方引入的,都需要能回溯起来。

系统可回滚: 如果有问题真的解决不了或没法快速解决,我们需要能够快速把它回滚掉,以避免造成更大的风险。

以上是持续交付的4个关键点,只有满足了持续、快速、高质量、低风险这4点才是实现了持续交付。 这4点是缺一不可的。粒度小、频率高,是快速的前提。相应地,只有质量高了,风险才能够低一些。

问题是:如何做到呢?

基于云和云原生技术的持续交付

我们认为,云原生时代,要实现持续交付需要做到这3点:不可变基础设施、持续交付流水线、安全可信发布。

1、不可变基础设施

有一本书叫做《集装箱改变世界》。这本书讲述了集装箱的发明让原本零碎松散的货物运输体系变成以集装箱为单位,并由此带来了整个货运成本的95%的降低。

如果我们看软件交付,以往我们的开发语言构建方式是各种各样的,程序的打包、运行、管理方式也都不一样,这些不同使得我们的软件交付面临着很大的风险。

在容器出现之前,大家在运维工具、部署工具上做了很多尝试,但是都不太成功,整体也不如容器流行。其原因便是容器做的就像集装箱做的事情——标准化。

基于容器我们又做了K8S,做了容器的分发和整个部署运维体系,运行的环境也做掉了。在此基础上,诞生了各种各样的云原生的数据库、云原生的中间件。这样云原生的整体标准就出来了。就像集装箱带来的改变一样,研发体系实现了标准化,由此我们便可以以相同的方式去对待不同技术栈写出的程序。

整体来看,不可变基础设施的应用为我们带来了以下几点“红利”:

(1)消除了不一致带来的不确定性: 以前一个程序换了一个环境可能就跑不动了,其中的问题便是底层出现了不一致带来的bug。

(2)减少不一致的风险: 风险很难预估。像一个Java程序里面,你大部分跑的是对的,但是在某些情况下,它会出现异常,小版本的差异会产生更多异常的风险。这种情况下你会发现风险是非常难排查的,而且风险带的后果很严重。

(3)减少维护成本: 因为很多底层的东西被标准化了,就不用我们去做了。比如K8S就做了很多这样的事情。

(4)部署简化了: 都是同样一套东西,就像集装箱一样,运输就是了。

(5)环境维护成本降低了: 普遍使用标准化后便不需要有太多的负担,只要遵照这个标准就行。

(6)工具的开发和学习成本的降低了。

不可变基础设施带给我们非常大的技术红利,我们生态越来越完整。只是这时,我们原来的习惯、思维或者工作方式都要发生变化。

2、持续交付流水线

持续交付流水线一定程度上是把我们的整个软件交付的过程完整地串接在一起。

上图展示的是一个非常典型的流水线:从代码提交到合并、构建、生成一个制品、接口测试、功能验证、类生产环境部署验证到最终验收、上线。

这个流水线是一个完整的过程。没有间断、没有跳过,是一层层往后走的。

有了这个流水线之后,如果代码质量很好、自动化率很高,整体就会自动地在很短的时间内告知我们上线成功。这是一个非常美妙的体验,流畅而省力。

要想达到上面流畅的体验,我们对流水线是有要求的,具体来说有如下几点:

(1)可描述性

流水线是研发模式的具象化表达: 流水线应该是一个可描述的东西。研发模式其实是通过流水线或其他一些手段描述出来的。

发布流程的一致性: 有了流水线之后,每次的发布流程都是一样的。

最佳实践可快速复制: 在一个公司里,不同团队的研发实践差别往往非常大,因为很多东西是在口口相传或者是文档里的,不同的人对其中内容有不同的掌握、解读方式。但是流水线可以实现快速的复制。把流程用文章写出来不如让它落实在流水线中效果好。

(2)可观测性

开发、发布过程可见: 在流水线中,不仅仅是当前的发布、开发过程是可以看到的,历史发布过程、开发过程也是可以看到的。每一次的发布经过了哪些阶段、每个阶段是什么结果,都是可以看到的。如此便可以知道整个流程是什么样子,整个流程的质量是什么样子,中间哪个节点有可能出现问题。

发布过程有保障: 整个流水线中我们看到有很多的验证节点、接口测试、预发验收。所有这些节点的成本都不小,但是它们却能保证最后发布上线的结果是成功的、稳定的。如此,有了流水线的运用,整个发布过程就有了保障。

(3)自动化

自动化顾名思义就是尽量减少人工在过程中的干预。若每一次阶段间的衔接是靠人工完成的,它中间的等待时长以及它的协同成本就会比较高,会带来各种各样的风险,所以我们应该做到整个发布过程是完全自动化的。从代码提交到最后上线,全过程是完全由流水线牵动的。即使中间有些步骤需要人去做验收或者测试,但是这也只是一个工序。这个工序完了之后执行人点个确定,说我验收成功了,之后就会自动地往下发。因此,整个过程是一个自动化的过程。

3、安全可信发布

在软件交付中,一个代码、配置,甚至是一个依赖的变化,都会引发制品的改变。制品的改变会经过流水线的一系列节点。这些节点中间有很多需要去验证、关注和管控的点,例如代码审查、测试验证、评审、发布管控;也会有很多的规则、检测项,例如代码质量合规、安全检测。

这些规则加上这些检测项,会最终形成一个反馈,表明这次发布是不是可信的。如果反馈有问题,那就不应该发布,如果反馈没有问题那便可以继续往下走。

作为安全可信发布来讲,首先它要能够降低发布的风险,防止缺陷带来的业务损失。更重要的是降低发布的心智负担,不会不敢发布。

同时,通过安全可信发布我们可以获得质量的反馈,让质量是看得见的。让我们能做到及时反馈、及时修复,整个开发效率就会变高。

享受持续交付的红利

持续交付可以带来很多的好处,例如:

(1)消除对个人的依赖: 所有的信息都是共享的,可见、可控、可度量、可加速

(2)降低团队之间的损耗: 流程一致,所有版本一致,出现故障时更好处理。

(3)降低测试成本、提升质量: 自动化的测试是可以回归的,可以不断地运行的,也可以重复的,成本远低于手工测试。在微服务架构下如果出现问题,也可以更清晰、方便地定位。

(4)降低发布风险: 版本可以回溯,一致性也比较好,因而发布风险也会很好地被控制。另外,有了可信发布的支持,整体的发布成功率也会更有保障。

接下来我们将从:不可变基础设施、持续交付流水线、安全可信发布3个层面,逐一深入, 通过系列文章,为大家一一讲解。

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle打patch,Oracle初学者入门指南-How to get Oracle Patch?

Oracle初学者入门指南-How to get Oracle Patch?怎样获得/找到Oracle的Patch,这是一个朋友在Itpub上问到的问题。他还举了一个生动的例子:比如我要使用oracle的全文检索功能,但是这个全文检索在9201里不支持中文,中文的无法检索,…

e签宝:借助钉钉宜搭变革传统项目管理模式,交付效率显著提升

简介:通过钉钉宜搭,e签宝在半个月内搭建了项目交付管理平台,提升了项目管理的效率和质量,推进了团队核心业务的信息化建设。e签宝在有效梳理了各环节的工作进度、质量、成本、职权后,通过宜搭平台保障了内外通畅&#…

24 张图一次性说清楚 TCP

来源 | 杰哥的IT之旅做IT相关的工作,肯定都离不开网络,网络中最重要的协议是TCP。无论是实际工作还是笔试面试,你看哪里能少得了TCP?我看过RFC中与TCP相关的文档,也看过linux中TCP相关的源码,也看过不少框架中的TCP相…

php 实例化模型出错,实例化model出错了

我是按照老师所说的做的。在function user 中写入了这些<?php namespace Home\Controller;use Think\Controller;class IndexController extends Controller {public function index(){//省略了}public function user(){//其实新版的url应该这么写&#xff1a;http://www.t…

作业帮基于 DeltaLake 的数据湖建设实践

简介&#xff1a;作业帮是一家以科技为载体的在线教育公司&#xff0c;其大数据中台作为基础系统中台&#xff0c;主要负责建设公司级数仓&#xff0c;向各个产品线提供面向业务主题的数据信息。本文主要分享了作业帮基于 DeltaLake 的数据湖建设最佳实践。 作者&#xff1a; 刘…

iLogtail 与Filebeat 性能对比

简介&#xff1a;前段时间, iLogtail 阿里千万实例可观测采集器开源&#xff0c;其中介绍了iLogtail采集性能可以达到单核100MB/s&#xff0c;相比开源采集Agent有5-10倍性能优势。很多小伙伴好奇iLogtail具体的性能数据和资源消耗如何&#xff0c;本文将针对目前业界使用度较高…

如何快速开发 Serverless Devs Package ?

简介&#xff1a;目前&#xff0c;开发者开发 Serverless Package 的流程相对来说是比较简单的。因为在 Serverless Devs 开发者工具中&#xff0c;已经提供了相对完整的脚手架能力&#xff0c;一文了解详情~ 作者 | 江昱&#xff08;阿里云 Serverless 产品经理&#xff09; …

首发苹果 M2!MacBook Pro 正式开售,更像是一个增强版的 A15?

作者 | Ryan Smith 译者 | 弯月出品 | CSDN虽然一年一度的WWDC主要是一个软件发布会&#xff0c;但也总是时不时地给出一些硬件惊喜&#xff0c;今年也不例外。在WWDC22上&#xff0c;苹果公布了用于Mac&#xff08;和iPad&#xff09;平台的第二代苹果系统芯片——M2。这个…

专题实战 | 如何快速构建高质量电商行业搜索?

简介&#xff1a;本文详细介绍如何快速接入智能开放搜索&#xff08;OpenSearch&#xff09;电商行业增强版&#xff0c;助力企业实现高质量搜索效果&#xff0c;提升业务转化率及用户产品体验&#xff01; 电商搜索特点 1. 关键词堆砌 例如&#xff1a;明星同款夏季连衣裙包…

Linux 网络性能的 15 个优化建议!

作者 | 张彦飞allen来源 | 开发内功修炼那么具备了对网络的深刻的理解之后&#xff0c;我们在性能方面有哪些优化手段可用呢&#xff1f;我这里给出一些开发或者运维中的性能优化建议。这些建议都是从书中摘录的。不过要注意的是&#xff0c;每一种性能优化方法都有它适用或者不…

Flink Sort-Shuffle 实现简介

简介&#xff1a;Sort-Shuffle 使 Flink 在应对大规模批数据处理任务时更加游刃有余 本文介绍 Sort-Shuffle 如何帮助 Flink 在应对大规模批数据处理任务时更加游刃有余。主要内容包括&#xff1a; 数据 Shuffle 简介引入 Sort-Shuffle 的意义Flink Sort-Shuffle 实现测试结果调…

「现代C++设计魅力」虚函数继承-thunk技术初探

简介&#xff1a;工作中使用LLDB调试器调试这一段C多继承程序的时候&#xff0c;发现通过lldb print(expression命令的别名) 命令获取的指针地址和实际理解的C的内存模型的地址不一样。那么到底是什么原因呢&#xff1f; 作者 | 扬阜 来源 | 阿里技术公众号 一 问题背景 1 实…

万物互联时代到来,锐捷发布场景化无线零漫游方案

数字化和万物互联时代到来&#xff0c;物联网与 IoT 设备发展迅猛&#xff0c;以往只在办公区域主要由手机等移动设备使用的无线网络&#xff0c;正在接入更多核心业务生产、物流仓储等各类的生产设备。据分析机构 IDC 预测&#xff0c;无线网络优先是当下智能园区网络建设投资…

阿里云田涛涛:高效智能的云,CloudOps让运维更简单

简介&#xff1a;CloudOps:以应用为中心的自动化运维新趋势 12月21日&#xff0c;在阿里云弹性计算年度峰会上&#xff0c;阿里云弹性计算体验与控制系统负责人田涛涛发表了主题为《高效智能的云&#xff0c;CloudOps让运维更简单》的演讲&#xff0c;深度解读了云上运维新趋势…

打造南沙“强芯”,南沙首届IC Nansha大会召开

6月25日&#xff0c;2022 中国南沙国际集成电路产业论坛在广州南沙召开。本次峰会由广州南沙经济技术开发区管理委员会、广州市工业和信息化局主办&#xff1b;支持单位为广州湾区半导体产业集团有限公司、广东省集成电路行业协会、广州市半导体协会&#xff1b;广东省半导体及…

OpenAI开发者大会简介

文章目录 GPT-4 Turbo 昨天晚上 OpenAI的首届开发者大会召开 Sam Altman也做了公开演讲&#xff0c;应该说 这是继今年春天发布GPT-4之后 OpenAI在AI行业又创造的一个不眠夜 过去一年 ChatGPT绝对是整个科技领域最热的词汇 OpenAI 也依靠ChatGPT取得了惊人的成绩 ChatG…

阿里云贾少天:大规模云服务器高效使用及管理实践

简介&#xff1a;本篇内容分享了大规模云服务器高效使用及管理最佳实践。 2021年10月22日&#xff0c;在云栖大会的《云上运维最佳实践》分论坛&#xff0c;阿里云高级技术专家贾少天发表了主题为“大规模云服务器高效使用及管理最佳实践”的演讲&#xff0c;本篇内容根据他的…

发现新视界——视觉计算将如何改变生产方式

简介&#xff1a;本篇内容将从3个部分为读者介绍关于视觉计算如何改变生产方式&#xff0c;进一步阐述可视化业务方面的挑战及阿里云视觉计算的解决方案与优势。 编者按&#xff1a;在2021年10月举办的云栖大会的《数字孪生&Cloud XR技术助力产研创新论坛》上&#xff0c;…

容器监控指南:三剑客轻松实现 Docker 容器监控

作者 | Milan Mahat在本指南中&#xff0c;我们将学习如何使用 docker-compose 在容器中设置 cAdvisor&#xff0c;将其与 prometheus 连接&#xff0c;并通过 grafana 监控服务器的容器。CAdvisor 是一种流行的工具&#xff0c;用于收集容器的信息。它是 prometheus 和 grafan…

N个技巧,编写更高效 Dockerfile|云效工程师指北

简介&#xff1a;云原生时代下软件的构建和部署离不开容器技术。提到容器&#xff0c;几乎大家下意识都会联想到 Docker 。而 Docker 中有两个非常重要的概念&#xff0c;一个是Image&#xff08;镜像&#xff09;&#xff0c;一个是Container&#xff08;容器&#xff09;。前…