云原生時(shí)代,軟件交付有何不同 | 研發(fā)效能提升36計(jì)
編者按:從今天起,我們將開啟一個(gè)新的專欄:《研發(fā)效能提升36計(jì)_持續(xù)交付篇》。專欄將通過10-20篇文章,系統(tǒng)分享云原生時(shí)代,企業(yè)如何落地持續(xù)交付,本文是該專欄的開篇。
策劃&編輯|雅純
Dora在2018年DevOps年度報(bào)告中對(duì)軟件交付效能提出了一組度量指標(biāo),以衡量一個(gè)企業(yè)的軟件交付水平。
- 部署頻率。指應(yīng)用將變更部署到生產(chǎn)環(huán)境的頻率。如每天都有部署,一天能部署十次,還是一天部署一次,或者一個(gè)月才部署一次。
- 變更前置時(shí)長(zhǎng)。指從代碼提交到部署上線并在生產(chǎn)環(huán)境運(yùn)行起來的時(shí)長(zhǎng)。
- 服務(wù)恢復(fù)時(shí)間。是服務(wù)中斷之后到下一次服務(wù)能夠恢復(fù)以繼續(xù)服務(wù)的時(shí)長(zhǎng)。
- 變更失敗率。是指對(duì)生產(chǎn)環(huán)境的變更失敗的比率,總共變更了多少次,其中有多少次是失敗的。
可以看到,“精英”團(tuán)隊(duì)的部署頻率基本上是按需——只要想發(fā)布,就可以隨時(shí)發(fā)布上去。我們將“低效能”和“精英”之間一比較,再對(duì)照一下自己的團(tuán)隊(duì),就可以看到自己是屬于哪一個(gè)象限里,是屬于精英、低效能、高效能,還是中等效能。
當(dāng)然,對(duì)于變更失敗率一項(xiàng),有些同學(xué)會(huì)說:“我每次發(fā)布都成功了,我是百分百的。”其實(shí)不然,一次完成發(fā)布過程,且中間沒有任何的干預(yù),也沒有事后的修復(fù)、回滾是很難的。
在跟很多業(yè)務(wù)團(tuán)隊(duì)、包括外面公司的同學(xué)交流時(shí),我們發(fā)現(xiàn),無論是CTO、CIO、還是一線的研發(fā)人員,大家都面臨一個(gè)問題:“我想改變”、“我想做得好”、“我想成為精英”,但是實(shí)際做到卻很難。為什么?
因?yàn)椋?
1.管理成本越來越高。 人越來越多,管理成本越來越大,協(xié)作復(fù)雜度也越來越高,開會(huì)的時(shí)間比干活的時(shí)間還多。
2.技術(shù)債務(wù)也越來越高。 實(shí)際生產(chǎn)中,業(yè)務(wù)往往不會(huì)給你很多時(shí)間去在一開始就做得很好。于是便有了“我不管怎么樣先把業(yè)務(wù)它跑起來?!钡强赡苓^了一年或者兩年之后,你會(huì)發(fā)現(xiàn)它跑不動(dòng)了。這種情形在互聯(lián)網(wǎng)創(chuàng)業(yè)里頭叫糙快猛。技術(shù)債務(wù)越來越高之后,要再去做一些事情,就要連本帶息要一起還了。
3.新技術(shù)引入非常困難。 有一些比較好的技術(shù)因?yàn)槿藛T的成本的問題,找不到非常優(yōu)秀的人。另外,有一些技術(shù)的門檻較高,需要的技能也紛繁復(fù)雜。
不僅如此,軟件交付形態(tài)的變化也對(duì)軟件交付效能提出了挑戰(zhàn)。
1.持續(xù)的產(chǎn)品交付對(duì)軟件研發(fā)模式要求更高
以前的軟件交付是有里程碑的,但是現(xiàn)在不一樣了,我們希望每天都有新的東西出來,而不是去完成幾個(gè)里程碑、或者是三個(gè)月、一兩年后再出一個(gè)東西。我們希望軟件的交付是持續(xù)地、增量發(fā)生的。
以電信設(shè)備為例,電信設(shè)備的交付,開發(fā)環(huán)境和生產(chǎn)環(huán)境網(wǎng)絡(luò)是不通的,換而言之,去做一次發(fā)布和實(shí)施的成本特別高。
這時(shí)候,持續(xù)的交付就對(duì)軟件的研發(fā)模式提出了更高的要求。不可能再有很長(zhǎng)時(shí)間的plan,然后等到半年后或者兩年后做一個(gè)集成來交付實(shí)施。它要求你每個(gè)迭代都有東西出來。
2.持續(xù)升級(jí)的服務(wù)對(duì)可用性提出了更高的要求
當(dāng)軟件可以做到持續(xù)發(fā)布、升級(jí)了,軟件的可用性也會(huì)相應(yīng)地被提出更高的要求,不能動(dòng)不動(dòng)就斷了。對(duì)客戶來講,他看到的就是你的一個(gè)服務(wù),他對(duì)你提供的服務(wù)是有感的,因此你的服務(wù)需要非常高的可用性。
3.持續(xù)的交付需要能高效保證產(chǎn)品質(zhì)量
質(zhì)量對(duì)持續(xù)交付是非常重要的。當(dāng)產(chǎn)品發(fā)布上線,如果有質(zhì)量問題就很容易導(dǎo)致故障,甚至導(dǎo)致需要公司出面來去做公關(guān)。近幾年也有很多這樣的例子。
俗話說,有挑戰(zhàn)就一定有機(jī)遇。具體來看,云原生時(shí)代,我們面臨著2大機(jī)遇,可以幫助我們提升軟件交付效能。
機(jī)遇1:技術(shù)發(fā)展推動(dòng)應(yīng)用架構(gòu)及部署架構(gòu)的演進(jìn)
(1)應(yīng)用架構(gòu)的演進(jìn)
我們會(huì)發(fā)現(xiàn),技術(shù)的發(fā)展實(shí)際上在推動(dòng)我們的應(yīng)用架構(gòu)和部署架構(gòu)的演進(jìn)。從資源的角度來說,以前我們應(yīng)用云托管,而后發(fā)展為云優(yōu)化,再到現(xiàn)在的云原生。我們會(huì)發(fā)現(xiàn)資源發(fā)生了一些變化,而應(yīng)用架構(gòu)的也同樣發(fā)生了變化——從單體應(yīng)用逐漸發(fā)展為了Severless。也就是說從原來挨得越來越近,到慢慢地分得越來越開、拆得越來越小。
(2)部署架構(gòu)的演進(jìn)
從部署架構(gòu)的角度來說,我們也可以看到一些變化,從原來的物理機(jī)到現(xiàn)在的BaaS/FaaS。
這樣的演進(jìn)也讓我們的整個(gè)交付變得更靈活、更解耦,可以做到想發(fā)就發(fā),甚至讓工程師更多的關(guān)注在業(yè)務(wù)邏輯上。
機(jī)遇2:云基礎(chǔ)設(shè)施和云原生技術(shù)的興起
(1)云基礎(chǔ)設(shè)施的層次越來越高
現(xiàn)在云基礎(chǔ)設(shè)施的抽象層次越來越高了。其實(shí)在13年的時(shí)候,我們當(dāng)時(shí)對(duì)于云基礎(chǔ)設(shè)施的理解都是“infrastructure”。但隨著容器的興起,我們逐漸看到了容器平臺(tái),而后我們又有了PaaS,我們不需要再去關(guān)心消息隊(duì)列、存儲(chǔ)、監(jiān)控等。而今,我們擁有了Serverless,幾乎是可以不用寫后端,整個(gè)的應(yīng)用后端全部在云上。要做的就是寫業(yè)務(wù)邏輯,而且?guī)缀跏乔岸说臉I(yè)務(wù)邏輯。后端服務(wù)我只需要按照使用量付費(fèi)就可以了。
(2)K8S成為事實(shí)標(biāo)準(zhǔn),云原生成為趨勢(shì)
從K8S到現(xiàn)在的CNCF,我們會(huì)發(fā)現(xiàn)目前K8S已經(jīng)是一個(gè)事實(shí)上的標(biāo)準(zhǔn)。大家不會(huì)再去討論要不要去做云原生,現(xiàn)在的問題是怎么做。
(3)微服務(wù)化背景下,服務(wù)治理的訴求越來越大
大家都在談微服務(wù),但微服務(wù)會(huì)帶來很多之前沒有的問題。其中一個(gè)比較典型的問題就是服務(wù)治理。服務(wù)太多,怎么進(jìn)行服務(wù)治理、服務(wù)發(fā)現(xiàn)怎么做、負(fù)載均衡、容量調(diào)度等等,各種問題都來了。所以大家對(duì)服務(wù)治理的訴求就變得越來越大。
與此同時(shí),服務(wù)的數(shù)量越多,復(fù)雜性就越高。比如,若一個(gè)服務(wù)的可用性是99.9%,10個(gè)9服務(wù)累加便是99.9%的10次方。另外,它本身的復(fù)雜性也會(huì)越來越高。好比說兩個(gè)人之間交流很簡(jiǎn)單的,但三個(gè)人交流的時(shí)候,我的鏈路就多了一些。再加上分布式服務(wù)間的網(wǎng)絡(luò)通信,各種各樣的異常情況都會(huì)出現(xiàn)。這些都是非?,F(xiàn)實(shí)的問題,也會(huì)給我們帶來很大的成本。
總結(jié)來看,如今我們的軟件交付與以前有了非常大的不同。
云原生時(shí)代,我們需要持續(xù)交付的模式,以實(shí)現(xiàn)更快、更高質(zhì)量的軟件交付。
然而,大多數(shù)時(shí)候概念十分美好,落地卻有各種各樣的痛苦。
云原生時(shí)代,我們?cè)撊绾温涞爻掷m(xù)交付?接下來,我們將通過系列文章,與大家一起梳理云原生時(shí)代持續(xù)交付的系列實(shí)踐,敬請(qǐng)期待。
也歡迎在評(píng)論區(qū)留言,與云效專家互動(dòng),說出你想聽到的內(nèi)容~
歡迎大家使用云效,云原生時(shí)代新DevOps平臺(tái),通過云原生新技術(shù)和研發(fā)新模式,大幅提升研發(fā)效率?,F(xiàn)云效公共云基礎(chǔ)版不限人數(shù)0元使用。