软件开发

注册

 

发新话题 回复该主题

云原生时代,软件交付有何不同研发效能提升 [复制链接]

1#

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

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

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

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

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

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

因为:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(1)应用架构的演进

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

(2)部署架构的演进

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

这样的演进也让我们的整个交付变得更灵活、更解耦,可以做到想发就发,甚至让工程师更多的

分享 转发
TOP
发新话题 回复该主题