为什么应用发布的成功率会这么低?|学习笔记

简介: 快速学习为什么应用发布的成功率会这么低?

开发者学堂课程【ALPD 云架构师系列-云原生 DevOps36计为什么应用发布的成功率会这么低?】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/82/detail/1288


为什么应用发布的成功率会这么低?

 

一、做到安全可信的发布

C++工程实践基本分为三个部分,不可变基础设施,不可变制品,不可变环境,不可变的发布流水线的过程。本次内容是做到安全可靠的发布,质量是非常重要的一个点,当然安全等因素也很重要。

终态需要提供稳定、可预期的系统。可预期的系统,需要确保环境和软件制品(例:容器镜像)一致性。这是在终态提供服务的角度来看的,有的服务是这样的。但在整个软件协作的过程中,软件的协作是工程师围绕着代码协作的过程,在整个协作的过程中,制品、环境、发布过程都是定义在代码里的。软件交付能力的目标是发得容易,发得频繁。发得频繁属于增量,发得容易是因为每次发布时间比较少。下图的发布成功率达到30.63%,横轴代表时间,纵轴代表每次发布消耗的时长,越往上,发布所需时间越长,越往下就越短,红色的点代表发布失败,绿色的点代表发布成功。

看到这个图之后,能发现什么问题?首先是成功率只有百分之三十左右,发布成功率为什么这么低,有什么问题? 

 image.png

为什么发布的不频繁,也不容易,每次发布都需要那么长时间并且成功率也不高。在实际操作过程中,有很多的理由会导致发布成功率特别低,因为出现bug没有修复,因为有很多冲突,有等待会导致这样的问题。

除了上面这些之外,第一,无法按期交付、挤占需求开发时间。可能无法做到按期交付,不是开发组或测试组不愿意,而是在实际过程中,开发和测试可能占据大量的时间,让维护没有太多的时间,或本身软件质量特别差,有很多缺陷,需要修改相应的缺陷,需要响应一些故障,导致无法在前期做好工作,随着过程的推进,会发现花在维护上的时间特别多,导致没有多长时间做功能上的开发,从而形成恶性循环,会让维护的工作在后期堆得更多。在互联网行业里大家的做法都是操,快,猛,一开始为了响应业务,基本所有的时间都在做开发,但等到业务扩大,再继续开发就很难向前前进,这时绝大多数人都放在维护阶段,但维护的成本是很高的。基本没有太多时间开发新的项目,而且在一个非常脆弱的系统里,增加一个新的东西是很难的。

 image.png

第二点,问题发现的越晚,修复成本越高。随问题发现时间的延后,修复成本呈指数级上升。在电信行业,一旦问题留到客户那里,成本是非常非常高的。有一年在法国出现电信的故障,电信级别软件的交互与生产环境和开发环境是打不通的。一旦出现问题,要去生产环境中解决这个故障,意味着要派工程师从中国飞到法国,再做相应的调研,出相应的解决方案进行修补。在这个过程当中,对于电信设备来说,是无法提供正常工作的,如果这时出现紧急状况需要拨打电话,电话又打不通,这时就会产生很高的成本。站在商业的角度,运营商很容易提出要求赔偿,一小时赔付多少签,这时成本会越来越高。在互联网行业中,也是这样。上线之后,造成的成本,带来的疑情,带来的故障等导致的成本是很难的,称这个成本为交付质量成本,另外一个成本是在交付过程中产生的成本,也是问题发现的越晚,成本越高,研发团队的角色,职能就会越多,最终形成的道理就是问题发现的越晚,修复成本越高。

 image.png

基于上面两点,问题对交付效率和结果是有特别大的影响的,只有发布内容的质量得到了保证,才能做到发的容易、发得频繁。发布内容包括制品,发布的策略、环境、配置。可运行的系统就是待发布的内容,所以要保证待发布的系统的质量。要做到这一点会通过全方位的测试质量守护体系,保障交互质量。

image.png

相关文章
|
4天前
|
设计模式 小程序 物联网
社区每周丨商家券开发接入流程描述优化及上周建议反馈(2.20-2.24)
社区每周丨商家券开发接入流程描述优化及上周建议反馈(2.20-2.24)
30 0
|
8月前
|
Java 程序员 开发者
太卷了!这份Java性能调优手册仅上线1小时,竟被恶意封杀下架
在各大厂的面试中,性能优化的问题肯定不会缺席,这足以说明其重要性。今天给大家带来的便是由资深程序员葛一鸣老师写的《Java程序性能优化实战》,同样是没有开源版本,我会将领取方式放在文末 Java程序性能优化实战 我看过几篇讲解Java程序性能优化的图书,要么是内容不够深入,要么是过于晦涩难懂,不够浅显,而这本书却让我眼前一亮,很多困扰我的问题都能在书中找到答案。它涵盖了各种程序员所需的性能优化知识点,是Java开发者提升水平的必读佳作 来看看目录内容,里面一定有你想看的 亮个相吧(狗头.jpg) 想要更进一步的Java开发者一定不能
52 0
|
9月前
|
Dubbo Java 应用服务中间件
发布稳定性-优雅上线
之前的文章讲了优雅下线,今天讲优雅上线
115 0
发布稳定性-优雅上线
|
12月前
|
测试技术
测试时间不够,项目要如期发布如何保证测试质量
1.定下测试优先级,测试策略,即优先测试哪些功能,是不是保主要流程和界面样式,其他分支流程和细节可以留待后面测试优化?2.bug是不是只确保严重等级以上的完全修复,其他尽量修复,不行留待后续版本解决?3.人员是不是可以借用,比如拉上产品、运营一起测试?4.协调好万分无奈的加班计划,尽可能给测试留下时间。
|
12月前
|
数据采集 存储 Java
支付宝客户端体验度量与诊断
支付宝客户端体验度量与诊断
144 0
|
Cloud Native 安全 架构师
为什么应用发布的成功率会这么低 | 学习笔记
快速学习为什么应用发布的成功率会这么低
115 0
为什么应用发布的成功率会这么低 | 学习笔记
|
Web App开发 运维 前端开发
【分享】前端线上紧急排查工具
【分享】前端线上紧急排查工具
299 0
【分享】前端线上紧急排查工具
|
消息中间件 自然语言处理 监控
全链路灰度这样做,新需求迭代上线也能放心干饭
MSE 的全链路灰度能力随着客户场景的深入而不断扩展与迭代,只有经过客户打磨的产品才会愈发历久弥新,欢迎大家尝鲜体验。
全链路灰度这样做,新需求迭代上线也能放心干饭
|
测试技术 应用服务中间件 数据库
灰度发布的系统架构设计
互联网产品需要快速迭代开发上线,又要保证质量,保证刚上线的系统,一旦出现问题可以很快控制影响面,就需要设计一套灰度发布系统。
灰度发布的系统架构设计