草庐IT

云原生时代,软件交付有何不同 | 研发效能提升36计

云效DevOps 2023-03-28 原文

编者按:从今天起,我们将开启一个新的专栏:《研发效能提升36计_持续交付篇》。专栏将通过10-20篇文章,系统分享云原生时代,企业如何落地持续交付,本文是该专栏的开篇。

 

  策划&编辑|雅纯

Dora在2018年DevOps年度报告中对软件交付效能提出了一组度量指标,以衡量一个企业的软件交付水平。

 

 

  • 部署频率。指应用将变更部署到生产环境的频率。如每天都有部署,一天能部署十次,还是一天部署一次,或者一个月才部署一次。
  • 变更前置时长。指从代码提交到部署上线并在生产环境运行起来的时长。
  • 服务恢复时间。是服务中断之后到下一次服务能够恢复以继续服务的时长。
  • 变更失败率。是指对生产环境的变更失败的比率,总共变更了多少次,其中有多少次是失败的。

可以看到,“精英”团队的部署频率基本上是按需——只要想发布,就可以随时发布上去。我们将“低效能”和“精英”之间一比较,再对照一下自己的团队,就可以看到自己是属于哪一个象限里,是属于精英、低效能、高效能,还是中等效能。

当然,对于变更失败率一项,有些同学会说:“我每次发布都成功了,我是百分百的。”其实不然,一次完成发布过程,且中间没有任何的干预,也没有事后的修复、回滚是很难的。

在跟很多业务团队、包括外面公司的同学交流时,我们发现,无论是CTO、CIO、还是一线的研发人员,大家都面临一个问题:“我想改变”、“我想做得好”、“我想成为精英”,但是实际做到却很难。为什么?

因为:

1.管理成本越来越高。 人越来越多,管理成本越来越大,协作复杂度也越来越高,开会的时间比干活的时间还多。

2.技术债务也越来越高。 实际生产中,业务往往不会给你很多时间去在一开始就做得很好。于是便有了“我不管怎么样先把业务它跑起来。”但是可能过了一年或者两年之后,你会发现它跑不动了。这种情形在互联网创业里头叫糙快猛。技术债务越来越高之后,要再去做一些事情,就要连本带息要一起还了。

3.新技术引入非常困难。 有一些比较好的技术因为人员的成本的问题,找不到非常优秀的人。另外,有一些技术的门槛较高,需要的技能也纷繁复杂。

不仅如此,软件交付形态的变化也对软件交付效能提出了挑战。

 

 

1.持续的产品交付对软件研发模式要求更高

以前的软件交付是有里程碑的,但是现在不一样了,我们希望每天都有新的东西出来,而不是去完成几个里程碑、或者是三个月、一两年后再出一个东西。我们希望软件的交付是持续地、增量发生的。

以电信设备为例,电信设备的交付,开发环境和生产环境网络是不通的,换而言之,去做一次发布和实施的成本特别高。

这时候,持续的交付就对软件的研发模式提出了更高的要求。不可能再有很长时间的plan,然后等到半年后或者两年后做一个集成来交付实施。它要求你每个迭代都有东西出来。

2.持续升级的服务对可用性提出了更高的要求

当软件可以做到持续发布、升级了,软件的可用性也会相应地被提出更高的要求,不能动不动就断了。对客户来讲,他看到的就是你的一个服务,他对你提供的服务是有感的,因此你的服务需要非常高的可用性。

3.持续的交付需要能高效保证产品质量

质量对持续交付是非常重要的。当产品发布上线,如果有质量问题就很容易导致故障,甚至导致需要公司出面来去做公关。近几年也有很多这样的例子。

俗话说,有挑战就一定有机遇。具体来看,云原生时代,我们面临着2大机遇,可以帮助我们提升软件交付效能。

机遇1:技术发展推动应用架构及部署架构的演进

 

 

(1)应用架构的演进

我们会发现,技术的发展实际上在推动我们的应用架构和部署架构的演进。从资源的角度来说,以前我们应用云托管,而后发展为云优化,再到现在的云原生。我们会发现资源发生了一些变化,而应用架构的也同样发生了变化——从单体应用逐渐发展为了Severless。也就是说从原来挨得越来越近,到慢慢地分得越来越开、拆得越来越小。

(2)部署架构的演进

从部署架构的角度来说,我们也可以看到一些变化,从原来的物理机到现在的BaaS/FaaS。

这样的演进也让我们的整个交付变得更灵活、更解耦,可以做到想发就发,甚至让工程师更多的关注在业务逻辑上。

机遇2:云基础设施和云原生技术的兴起

 

 

(1)云基础设施的层次越来越高

现在云基础设施的抽象层次越来越高了。其实在13年的时候,我们当时对于云基础设施的理解都是“infrastructure”。但随着容器的兴起,我们逐渐看到了容器平台,而后我们又有了PaaS,我们不需要再去关心消息队列、存储、监控等。而今,我们拥有了Serverless,几乎是可以不用写后端,整个的应用后端全部在云上。要做的就是写业务逻辑,而且几乎是前端的业务逻辑。后端服务我只需要按照使用量付费就可以了。

(2)K8S成为事实标准,云原生成为趋势

从K8S到现在的CNCF,我们会发现目前K8S已经是一个事实上的标准。大家不会再去讨论要不要去做云原生,现在的问题是怎么做。

(3)微服务化背景下,服务治理的诉求越来越大

大家都在谈微服务,但微服务会带来很多之前没有的问题。其中一个比较典型的问题就是服务治理。服务太多,怎么进行服务治理、服务发现怎么做、负载均衡、容量调度等等,各种问题都来了。所以大家对服务治理的诉求就变得越来越大。

与此同时,服务的数量越多,复杂性就越高。比如,若一个服务的可用性是99.9%,10个9服务累加便是99.9%的10次方。另外,它本身的复杂性也会越来越高。好比说两个人之间交流很简单的,但三个人交流的时候,我的链路就多了一些。再加上分布式服务间的网络通信,各种各样的异常情况都会出现。这些都是非常现实的问题,也会给我们带来很大的成本。

总结来看,如今我们的软件交付与以前有了非常大的不同。

 

 

云原生时代,我们需要持续交付的模式,以实现更快、更高质量的软件交付。

然而,大多数时候概念十分美好,落地却有各种各样的痛苦。

云原生时代,我们该如何落地持续交付?接下来,我们将通过系列文章,与大家一起梳理云原生时代持续交付的系列实践,敬请期待。

也欢迎在评论区留言,与云效专家互动,说出你想听到的内容~

 

 


欢迎大家使用云效,云原生时代新DevOps平台,通过云原生新技术和研发新模式,大幅提升研发效率。现云效公共云基础版不限人数0元使用。

点击下方链接立即体验云效DevOps全家桶!

https://www.aliyun.com/product/yunxiao?channel=yy_yccb_36 

关于我们

了解更多关于云效 DevOps 的最新动态,可微信搜索并关注【云效】公众号;

福利:公众号后台回复【研发效能】,可获得精品课程【阿里巴巴研发效能提升 36 计】

ps:大家都在看,本课程将从研发效能的定义和度量着手,逐渐深入解析来自不同业务部门提升持续交付能力的实践、方法和工具,同时还将分享如何基于持续交付能力,切实提升产品和业务创新的效率和效果。

看完觉得对您有所帮助别忘记点赞、收藏和关注呦; 

 

 

有关云原生时代,软件交付有何不同 | 研发效能提升36计的更多相关文章

  1. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  2. ruby-on-rails - 如果条件与 &&,是否有任何性能提升 - 2

    如果用户是所有者,我有一个条件来检查说删除和文章。delete_articleifuser.owner?另一种方式是user.owner?&&delete_article选择它有什么好处还是它只是一种写作风格 最佳答案 性能不太可能成为该声明的问题。第一个要好得多-它更容易阅读。您future的自己和其他将开始编写代码的人会为此感谢您。 关于ruby-on-rails-如果条件与&&,是否有任何性能提升,我们在StackOverflow上找到一个类似的问题:

  3. 映宇宙2022年营收63亿元:同比下降三成,毛利率提升4.3个百分点 - 2

    3月26日,映宇宙(HK:03700,即“映客”)发布截至2022年12月31日的2022年度业绩财务报告。财报显示,映宇宙2022年的总营收为63.19亿元,较2021年同期的91.76亿元下降31.1%。2022年,映宇宙的经营亏损为4698.7万元,2021年同期则为净利润4.57亿元;期内亏损(净亏损)为1.68亿元,2021年同期的净利润为4.33亿元;非国际财务报告准则经调整净利润为3.88亿元,2021年同期为4.82亿元,同比下降19.6%。 映宇宙在财报中表示,收入减少主要是由于行业竞争加剧,该集团对旗下产品采取更为谨慎的运营策略以应对市场变化。不过,映宇宙的毛利率则有所提升

  4. 网站日志分析软件--让网站日志分析工作变得更简单 - 2

    网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.

  5. 【云原生】SpringCloud-Spring Boot Starter使用测试 - 2

    目录SpringBootStarter是什么?以前传统的做法使用SpringBootStarter之后starter的理念:starter的实现: 创建SpringBootStarter步骤在idea新建一个starter项目、直接执行下一步即可生成项目。 在xml中加入如下配置文件:创建proterties类来保存配置信息创建业务类:创建AutoConfiguration测试如下:SpringBootStarter是什么? SpringBootStarter是在SpringBoot组件中被提出来的一种概念、简化了很多烦琐的配置、通过引入各种SpringBootStarter包可以快速搭建出一

  6. ruby-on-rails - 脚本/服务器 custom_require.rb :36:in `require' : cannot load such file -- test/unit/error (LoadError) - 2

    我有一个基于1.8.7构建的应用程序,我正尝试在1.9.3的系统上启动它当我运行脚本/服务器时,我得到:/usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in`require':cannotloadsuchfile--test/unit/error(LoadError)from/usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in`require'我的服务器脚本如下所示:#!/usr/bin/envrubyrequireFile.expand_path('../.

  7. 【血泪建议】软件测试岗位现状,可惜之前没人告诉我,肠子都晦青了.... - 2

    谈到现状,国内的软件测试行情目前呈现了两极分化的极端情况。一个是早期的手工测试人员吐槽工作不好做,即使有工作也是外包,而且薪资太低;一方面是很多互联网企业感叹自动化测试人才难找,有技术的自动化测试工程师,高薪难聘。这两者其实并不矛盾。手工测试工作难找也确实是目前真实的行情早期从事功能测试的手工测试人员,在测试方面大多采用手动、人工执行的方式查找软件缺陷和BUG,用行业术语来描述就是“点点点”。这种测试方式耗费大量人力和资源,工作效率却十分低下。在早期软件复杂和迭代程度不高的情况下,有资本的企业会“供养”一批这样的手工测试人员。但对测试员本身来讲,毫无技术难度的工作,和几乎没有保障的薪资水平,直

  8. 0基础学习软件测试有哪些建议 - 2

    其实现在基础的资料和视频到处都是,就是看你有没有认真的去找学习资源了,去哪里学习都是要看你个人靠谱不靠谱,再好的教程和老师,你自己学习不进去也是白搭在正式选择之前,大可以在各种学习网站里面找找学习资源先自己学习一下为什么选择学软件测试?同学们理由众多!大概分这几类:①不受开发语言、行业产品变化限制;②入门更简单,对零基础、女生都友好;③软件项目都需要测试人员,职业生涯稳;④学习周期短,但薪资并不低。要想“肩扛”一条线?需掌握三大技能:技能1:掌握测试流程,熟悉系统框架能提前与开发人员一起制定测试计划,通过测试左移,推动代码评审,代码审计,单元测试,自动化冒烟测试,来保证研发阶段的质量。技能2:

  9. “网安三人行”盘点:软件供应链安全的那些事儿 - 2

    2022年伊始,默安科技联合数世咨询举办以“软件供应链安全的时与势”为主题的访谈活动,由数世咨询创始人李少鹏主持,邀请贝壳安全研发负责人李文鹏、北京邮电大学副教授张文博、默安科技副总裁沈锡镛三位行业大咖做客网安小酒馆,从产业、企业、学术的不同维度,共同探讨软件供应链安全建设的新思路,为业界呈现了一场开年网安盛宴。随着全球软件供应链安全事件频发,软件供应链安全逐渐成为业界关注焦点,也成为影响国家重要信息系统安全与关键信息基础设施安全的重要因素,以及网络安全保障体系和能力建设的重要环节。嘉宾们围绕软件供应链安全发展的主要驱动力、关基行业中的实施现状和落地难点、产学研成果转化、软件供应链安全的重要性

  10. ruby - 如何让 Ruby 找到原生库? - 2

    我在/usr/local/lib中安装了一些本地库。我现在正在尝试安装一个需要这些的gem,以便正确构建,但是gem构建失败,因为它找不到图书馆。gem的extconf.rb文件试图确认它可以找到库have_library()但由于某种原因失败了。我尝试设置一堆环境变量,但似乎没有任何效果:irb(main):003:0>require'mkmf'=>trueirb(main):004:0>have_library('gecodesearch')checkingformain()in-lgecodesearch...no=>falseirb(main):005:0>ENV['LD_LI

随机推荐