日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

如何构建高效可信的持续交付能力,华为云有绝活!

發(fā)布時(shí)間:2023/12/13 综合教程 41 生活家
生活随笔 收集整理的這篇文章主要介紹了 如何构建高效可信的持续交付能力,华为云有绝活! 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘要:持續(xù)交付的最終目的是高效和可信兩者的結(jié)合。

一、高效可信的持續(xù)交付

1.1 軟件研發(fā)的目的

持續(xù)交付是一個(gè)大家平時(shí)提得比較多的話題,高效是持續(xù)交付的目的,具體到華為云的場(chǎng)景下,持續(xù)交付的最終目的是高效和可信兩者的結(jié)合。

總體而言,軟件研發(fā)的目的是持續(xù)并且快速地交付高質(zhì)量的有價(jià)值的軟件給客戶。首先研發(fā)是一個(gè)快速且持續(xù)交付的過(guò)程;其次研發(fā)是面向客戶的,交付的軟件必須是對(duì)客戶而言高質(zhì)量且有價(jià)值的,而質(zhì)量是多方位多維度的,其衡量標(biāo)準(zhǔn)除了價(jià)值以外,還包括穩(wěn)定性、安全性、可靠性、可擴(kuò)展性等。

1.2 軟件生命周期

從軟件生命周期管理的全過(guò)程來(lái)看,產(chǎn)品的idea產(chǎn)生后,進(jìn)入開(kāi)發(fā),然后到部署發(fā)布,最后到運(yùn)維,這是一個(gè)端到端的完整的流程,每個(gè)環(huán)節(jié)缺一不可。

開(kāi)發(fā)環(huán)節(jié),會(huì)有針對(duì)性地做各種測(cè)試,包括靜態(tài)測(cè)試、動(dòng)態(tài)測(cè)試、黑盒測(cè)試、白盒測(cè)試、灰盒測(cè)試等,這些測(cè)試會(huì)在不同的環(huán)境之上分層進(jìn)行,由不同的角色去承載;
發(fā)布環(huán)節(jié)包括對(duì)在制品的管理,發(fā)布什么是由前端的發(fā)布計(jì)劃決定的;
每個(gè)環(huán)節(jié)都有部署的動(dòng)作,自動(dòng)化部署的過(guò)程會(huì)銜接前端的開(kāi)發(fā)過(guò)程。

往深一層:

整個(gè)前端更多的是創(chuàng)新的過(guò)程,在這個(gè)過(guò)程中可以看到很多方法論,比如設(shè)計(jì)思維、精益創(chuàng)業(yè)、數(shù)字化轉(zhuǎn)型等,這里的創(chuàng)新代表的是業(yè)務(wù)側(cè)的訴求,傳統(tǒng)業(yè)務(wù)需要通過(guò)新的方法、新的技術(shù)來(lái)實(shí)現(xiàn)賦能和轉(zhuǎn)型;
創(chuàng)新的idea落到研發(fā)環(huán)節(jié)去實(shí)現(xiàn),開(kāi)發(fā)部署發(fā)布有CI/CD進(jìn)行支撐;
最后到運(yùn)維和運(yùn)營(yíng),不只是上線后需要運(yùn)營(yíng),像現(xiàn)在服務(wù)類的產(chǎn)品都講究云化,既然是一個(gè)service,就需要對(duì)service構(gòu)建整套面向用戶、面向內(nèi)容、面向產(chǎn)品的運(yùn)營(yíng)體系。

回到業(yè)務(wù)側(cè),將上述從產(chǎn)品到研發(fā)的流程映射到整個(gè)產(chǎn)品生命周期。

偏前端的階段是增值類的,產(chǎn)品創(chuàng)新是有價(jià)值的,寫的代碼也是有價(jià)值的;
而偏后端的階段則是非增值的,比如測(cè)試,對(duì)最終客戶來(lái)說(shuō)是必要但不增值的。

增值的部分,我們追求的是最終的效果;非增值的部分,我們追求的是效率,即我要高效地完成這個(gè)過(guò)程,以便于達(dá)到最后的結(jié)果。

要通過(guò)過(guò)程來(lái)保證效果,因此過(guò)程也是必不可少的。但在這些過(guò)程中有很多工作是重復(fù)的,比如測(cè)試、部署,我們需要通過(guò)自動(dòng)化的方式去賦能。這就是我們通常講的DevOps的意義,通過(guò)自動(dòng)化的流程和工具,讓機(jī)器去完成重復(fù)性的工作。

觀全貌我們不難發(fā)現(xiàn),在整個(gè)軟件/產(chǎn)品生命周期,質(zhì)量通過(guò)逐層的測(cè)試、驗(yàn)證、反饋等貫穿始終。另外,其中也包括大量安全類的活動(dòng),比如在產(chǎn)品創(chuàng)新階段要考慮安全性的訴求;在開(kāi)發(fā)過(guò)程通過(guò)黑盒、白盒、靜態(tài)、動(dòng)態(tài)等測(cè)試保證安全。

最后落到可信的層面,華為整個(gè)研發(fā)體系服務(wù)于整體的業(yè)務(wù)訴求,大家都知道,華為處于通信行業(yè),通信是一個(gè)關(guān)乎國(guó)計(jì)民生的領(lǐng)域,對(duì)安全的要求非常高,提供的產(chǎn)品和服務(wù)必須可靠可信,因此我們做了很多可信工程的設(shè)計(jì)。

二、可信工程

2.1 華為軟件工程建設(shè)歷程

自上世紀(jì)四五十年代起,開(kāi)始有了第一臺(tái)大型計(jì)算機(jī),軟件工程也隨之興起并發(fā)展至今。華為成立于1987年,最開(kāi)始是單兵作業(yè)或小團(tuán)隊(duì)作業(yè)的方式,后來(lái)隨著業(yè)務(wù)的增長(zhǎng)團(tuán)隊(duì)規(guī)模不斷擴(kuò)大,如何支撐大規(guī)模集團(tuán)軍作業(yè)?為解決這一問(wèn)題,我們開(kāi)始引入IPD,由此進(jìn)入IPD1.0時(shí)代。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,有了敏捷開(kāi)發(fā)、CMMI、DevOps持續(xù)交付、云原生等方法論和實(shí)踐,我們將這些優(yōu)秀的方法論和實(shí)踐合并到IPD1.0的框架中,使之更靈活地適應(yīng)實(shí)際的軟件研發(fā)需求。

2019年起,我們開(kāi)始做IPD2.0,其中一個(gè)非常關(guān)鍵的點(diǎn)是可信。

2.2 何為“可信”

我們先來(lái)給“可信”下個(gè)定義。

可信是每個(gè)系統(tǒng)在業(yè)務(wù)意圖之外同時(shí)具有韌性、Security安全性、隱私性、Safety安全性、可靠性、可用性六個(gè)特征的確定性程度。

也就是說(shuō),每個(gè)系統(tǒng)在業(yè)務(wù)意圖(即功能性訴求)之外,還需要同時(shí)具備6個(gè)特性:

韌性,服務(wù)宕機(jī)是否能夠自動(dòng)拉起來(lái)?系統(tǒng)能否經(jīng)受得住大規(guī)模并發(fā)沖擊?
安全性,這里有兩個(gè)單詞代表安全性特質(zhì):Security和Safety。其中Security側(cè)重?cái)?shù)據(jù)安全、信息安全,Safety側(cè)重環(huán)境安全等。
除此以外,還需要考慮隱私性、可靠性、可用性等特質(zhì)。

華為的可信工程將這6個(gè)特性作為基本的訴求,再關(guān)聯(lián)業(yè)務(wù)意圖,高效地完成業(yè)務(wù)目標(biāo),帶給客戶價(jià)值的同時(shí)兼顧可信。

2.3 可信價(jià)值流框架

如果大家了解精益等實(shí)踐,就知道研發(fā)實(shí)際上是一個(gè)價(jià)值流交付的過(guò)程。那么,可信價(jià)值流框架是什么樣的呢?可信價(jià)值流框架是產(chǎn)品生命周期端到端的過(guò)程,以終為始,我們要的是結(jié)果安全、結(jié)果可信、過(guò)程可信,即我們通過(guò)過(guò)程的可信達(dá)到結(jié)果可信賴、可依賴、安全的目標(biāo)。

將整個(gè)產(chǎn)品生命周期進(jìn)行拆解:

在安全治理層面,我們需要有可信治理,包括可信要求、責(zé)任和權(quán)利、分層級(jí)治理、人才和文化等;
在過(guò)程可信層面,要有相關(guān)的確定性預(yù)防、確定性應(yīng)對(duì)、機(jī)密性、完整性、一致性和雙向可跟蹤性、風(fēng)險(xiǎn)管理等,在過(guò)程中做到整體把控;
最后到結(jié)果可信層面,包括前文提到的6個(gè)特性。

再細(xì)化下來(lái),又涉及到產(chǎn)品定義階段、產(chǎn)品實(shí)現(xiàn)階段、產(chǎn)品預(yù)發(fā)布階段、產(chǎn)品使用階段等,每個(gè)階段都在傳統(tǒng)軟件工程的基礎(chǔ)之上,加入具體的動(dòng)作去滿足整體可信的要求。比如,產(chǎn)品定義階段,在規(guī)劃和設(shè)計(jì)中考慮可信訴求;產(chǎn)品實(shí)現(xiàn)階段,考慮編碼是否安全、編譯是否多次可用,交付給不同客戶的軟件包是否正確,測(cè)試是否可重復(fù)……在產(chǎn)品預(yù)發(fā)布和使用階段也會(huì)有很多相應(yīng)的策略實(shí)現(xiàn)可信。

技術(shù)層面,我們通過(guò)使用建模和仿真技術(shù)、密碼學(xué)的加解密協(xié)議、操作系統(tǒng)可信等技術(shù)使能可信。

這是一條完整的通過(guò)過(guò)程可信達(dá)到結(jié)果可信的路徑,最終我們通過(guò)各級(jí)度量進(jìn)行持續(xù)改進(jìn)。

2.4 華為云HE2E DevOps框架v2.0

華為云集合業(yè)界先進(jìn)理念和華為30年研發(fā)經(jīng)驗(yàn),總結(jié)出一套可操作可落地的端到端一站式開(kāi)發(fā)方法論和工具鏈——華為云HE2E DevOps框架。

首先,它是端到端的DevOps開(kāi)發(fā)框架,包括從規(guī)劃設(shè)計(jì)到迭代開(kāi)發(fā)到持續(xù)測(cè)試再到持續(xù)交付的全過(guò)程。我們認(rèn)為僅僅只做好工程端不足以支撐整個(gè)業(yè)務(wù),一定要延伸并回歸到業(yè)務(wù)側(cè),實(shí)現(xiàn)端到端的閉環(huán)。
其次,它的整個(gè)過(guò)程融合了大量以可信為目的的手段,去支撐整個(gè)DevOps流程。

華為云HE2E DevOps自2018年發(fā)布1.0版本,到今年發(fā)展為2.0版本。華為云HE2E DevOps框架v2.0整體分為6大階段:規(guī)劃與設(shè)計(jì)、開(kāi)發(fā)與集成、測(cè)試與反饋、安全與審計(jì)、部署與發(fā)布、運(yùn)維與監(jiān)控。本文將著重介紹工程端的內(nèi)容,包括開(kāi)發(fā)與集成、測(cè)試與反饋、安全與審計(jì)、部署與發(fā)布。

三、開(kāi)發(fā)與集成

3.1 CloudNative實(shí)踐

云的服務(wù)本身就是生于云長(zhǎng)于云的,因此我們一直在做CloudNative實(shí)踐,在架構(gòu)、工程交付、全功能團(tuán)隊(duì)、云環(huán)境四部分不斷優(yōu)化,持續(xù)提升質(zhì)量。

架構(gòu)優(yōu)化,架構(gòu)整體進(jìn)行微服務(wù)改造,統(tǒng)一微服務(wù)框架到SpringCloud里,進(jìn)行業(yè)務(wù)拆分架構(gòu)解耦,輕量級(jí)通信。
全功能團(tuán)隊(duì),架構(gòu)拆分后,團(tuán)隊(duì)需要根據(jù)架構(gòu)做相應(yīng)的驗(yàn)收和匹配。我們?cè)圏c(diǎn)服務(wù)化全功能團(tuán)隊(duì),單個(gè)Service由2-Pizza小團(tuán)隊(duì)對(duì)開(kāi)發(fā)、測(cè)試、部署上線、運(yùn)維端到端負(fù)責(zé)。
工程交付,踐行DevOps交付模式,構(gòu)建端到端交付流水線,微服務(wù)獨(dú)立開(kāi)發(fā)、構(gòu)建、測(cè)試、部署、發(fā)布、現(xiàn)網(wǎng)運(yùn)維。
研發(fā)全云化,依賴研發(fā)云I層和P層資源和成熟基礎(chǔ)服務(wù),基于華為云打造云化服務(wù)工具鏈和環(huán)境。

3.2 Cloud Native能力構(gòu)建鐵三角

從以上4個(gè)方面我們不難得出構(gòu)建云原生的Cloud Native能力必不可少的鐵三角:架構(gòu)、組織、工程,我認(rèn)為中間還應(yīng)該加上價(jià)值交付。回到最初那句話:研發(fā)的目的是持續(xù)并且快速的交付高質(zhì)量的有價(jià)值的軟件給客戶。

1)架構(gòu)層面

采用服務(wù)化架構(gòu)/微服務(wù)架構(gòu)實(shí)現(xiàn)全面解耦。把系統(tǒng)劃分為多個(gè)功能內(nèi)聚、粒度合適、業(yè)務(wù)邊界清晰、獨(dú)立自治的服務(wù)/微服務(wù)。
使用自服務(wù)、敏捷的云化基礎(chǔ)設(shè)施服務(wù)。依賴底層云化基礎(chǔ)設(shè)施的服務(wù)提供運(yùn)行資源,使用云監(jiān)控服務(wù)監(jiān)控自身運(yùn)行狀態(tài),同時(shí)根據(jù)運(yùn)行狀態(tài)出發(fā)運(yùn)維事件,實(shí)現(xiàn)彈性伸縮、故障自愈等。
通過(guò)API重用云原生公共服務(wù)提供的基礎(chǔ)能力和架構(gòu)能力。不管內(nèi)部還是外部的服務(wù)之間,都可以通過(guò)API的方式自動(dòng)生成相關(guān)接口和用例,來(lái)進(jìn)行構(gòu)建和定義,包括數(shù)字化轉(zhuǎn)型里的開(kāi)放平臺(tái)、開(kāi)放銀行等都是通過(guò)API來(lái)進(jìn)行支撐。現(xiàn)在比較流行的說(shuō)法“API經(jīng)濟(jì)”可以了解一下,此處不展開(kāi)。

2)工程層面

系統(tǒng)與環(huán)境、流程、配置解耦,人員團(tuán)隊(duì)之間也進(jìn)行相應(yīng)的解耦與匹配。
DevOps,運(yùn)維和開(kāi)發(fā)相互融合,高度協(xié)同,共擔(dān)職責(zé)。
實(shí)踐極速迭代,持續(xù)交付,快速相應(yīng)業(yè)務(wù)變化,縮短TTM。

3)組織層面

全功能團(tuán)隊(duì),團(tuán)隊(duì)中包括產(chǎn)品、架構(gòu)、設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、運(yùn)維等角色,吃自己的狗糧,自己的產(chǎn)品一定要自己去上線發(fā)布和維護(hù),每個(gè)人輪崗去負(fù)責(zé)發(fā)布的過(guò)程,這樣所有人都知道產(chǎn)品上線發(fā)布的流程。這樣做有幾個(gè)好處:技能的相互傳遞、打造全棧,不會(huì)依賴于某一個(gè)角色。
云化運(yùn)維團(tuán)隊(duì),基于云平臺(tái)提供的監(jiān)控、報(bào)警等能力,成立專門的團(tuán)隊(duì)負(fù)責(zé)系統(tǒng)運(yùn)行時(shí)的質(zhì)量,保證系統(tǒng)可用性和業(yè)務(wù)無(wú)中斷的升級(jí)、回滾。運(yùn)維團(tuán)隊(duì)更多的是構(gòu)建工具平臺(tái)和流程,進(jìn)行賦能。

3.3微服務(wù)化目標(biāo)

系統(tǒng)解耦,功能內(nèi)聚,提升需求交付效率。通過(guò)業(yè)務(wù)的拆解和解耦,讓系統(tǒng)敏捷起來(lái)。
踐行API First。通過(guò)服務(wù)化,讓服務(wù)提供者和消費(fèi)者之間通過(guò)微服務(wù)API建立契約。
低成本可伸縮架構(gòu)。可靈活進(jìn)行水平、橫向擴(kuò)展,平滑上云,架構(gòu)上支撐應(yīng)用市場(chǎng)業(yè)務(wù)的快速發(fā)展。
服務(wù)自治。通過(guò)在線的微服務(wù)治理結(jié)合云平臺(tái),實(shí)現(xiàn)微服務(wù)的彈性伸縮、熔斷降級(jí)等。
探索一體化服務(wù)團(tuán)隊(duì)。建立2-Pizza Team,通過(guò)全功能團(tuán)隊(duì)的建設(shè),讓業(yè)務(wù)真正敏捷起來(lái)。

3.4微服務(wù)實(shí)踐 - 頂層統(tǒng)一設(shè)計(jì)

總結(jié)起來(lái)是:大兵團(tuán)作戰(zhàn),頂層設(shè)計(jì),統(tǒng)一認(rèn)識(shí),組織賦能。角色上分為研發(fā)&運(yùn)維團(tuán)隊(duì)、設(shè)計(jì)&開(kāi)發(fā)&測(cè)試骨干、架構(gòu)師,每個(gè)角色要做什么,通過(guò)培訓(xùn)和賦能的方式來(lái)進(jìn)行定義和支撐。

3.5 微服務(wù)12設(shè)計(jì)原則

我們有一套一站式的微服務(wù)管理平臺(tái)來(lái)支撐微服務(wù)的12設(shè)計(jì)原則。

3.6 Clean Code

1)Clean Code機(jī)制

業(yè)界一致認(rèn)為,編寫Clean Code能有效減少漏洞,降低系統(tǒng)脆弱性,是實(shí)現(xiàn)軟件可信的重要舉措。我們內(nèi)部也非常強(qiáng)調(diào)Clean Code(代碼整潔),建立起一整套完整、具備快速反饋能力、可持續(xù)生成好代碼的機(jī)制。

華為有自己的Clean Code定義和文化。通過(guò)Committer機(jī)制、門禁機(jī)制、代碼極致共享等做相關(guān)過(guò)程的支撐,通過(guò)開(kāi)發(fā)者測(cè)試對(duì)整體質(zhì)量進(jìn)行把控;并建立三層模型和六級(jí)標(biāo)準(zhǔn),支撐實(shí)時(shí)代碼評(píng)估、版本交付階段性評(píng)估和產(chǎn)品長(zhǎng)期演進(jìn)的年度評(píng)估。

2)Clean Code評(píng)估

業(yè)界Clean Code評(píng)估標(biāo)準(zhǔn)是:高效、可移植、安全、簡(jiǎn)介、可靠、可測(cè)試。華為持續(xù)對(duì)業(yè)界最新標(biāo)準(zhǔn)進(jìn)行有效的代碼評(píng)估,并結(jié)合實(shí)踐建立了三層質(zhì)量模型和六級(jí)質(zhì)量評(píng)分標(biāo)準(zhǔn)。

關(guān)鍵舉措包括:建設(shè)分級(jí)標(biāo)準(zhǔn),我們會(huì)對(duì)不同系統(tǒng)進(jìn)行評(píng)級(jí);開(kāi)發(fā)可視化工具;建立定期評(píng)估指導(dǎo)場(chǎng)景;持續(xù)對(duì)標(biāo)業(yè)界刷新評(píng)估模型。

3.7 華為Committer工程實(shí)踐

Committer來(lái)源于開(kāi)源社區(qū),大家都知道開(kāi)源社區(qū)的協(xié)作模式是分布在全球各地的開(kāi)發(fā)者以協(xié)同貢獻(xiàn)的方式進(jìn)行開(kāi)發(fā),代碼貢獻(xiàn)者的能力、水平、責(zé)任心等參差不齊,因此必須在代碼入庫(kù)之前進(jìn)行Committer評(píng)審以保證質(zhì)量。華為內(nèi)部也有開(kāi)源的機(jī)制,借鑒這一實(shí)踐,形成自己的Committer機(jī)制。

華為的Committer機(jī)制實(shí)際上是一套流程來(lái)保證整體的代碼質(zhì)量,包括三個(gè)角色:

Developer,負(fù)責(zé)創(chuàng)建本地代碼分支、本地開(kāi)發(fā)、開(kāi)發(fā)自檢與測(cè)試等工作;
Reviewer,負(fù)責(zé)對(duì)代碼進(jìn)行檢視;
Committer,負(fù)責(zé)做最后的質(zhì)量把關(guān)。

底層通過(guò)IT基礎(chǔ)設(shè)施來(lái)保證編譯部署、測(cè)試等過(guò)程,通過(guò)自動(dòng)化工具使能,減輕評(píng)審的重復(fù)勞動(dòng)。

整個(gè)Committer流程由幾個(gè)核心點(diǎn):

代碼的開(kāi)發(fā)、提交與合入權(quán)限應(yīng)要分離,以避免攻擊者冒用員工權(quán)限植入惡意代碼;
通過(guò)檢視和審核的意見(jiàn)對(duì)工程師進(jìn)行輔導(dǎo)提升團(tuán)隊(duì)軟件能力。
入庫(kù)審核還能反向驅(qū)動(dòng)前端代碼檢視提升,促進(jìn)Developer具備編寫Clean Code的能力。

四、測(cè)試與反饋

4.1 華為云全場(chǎng)景測(cè)試服務(wù)框架

華為云全場(chǎng)景測(cè)試服務(wù)框架提供一站式端到端測(cè)試自動(dòng)化智能化解決方案,為企業(yè)構(gòu)建測(cè)試中臺(tái),提升企業(yè)測(cè)試專業(yè)度及測(cè)試效能。整個(gè)測(cè)試框架分為三大塊:測(cè)試設(shè)計(jì)、設(shè)計(jì)執(zhí)行、測(cè)試分析,包括測(cè)試設(shè)計(jì)、測(cè)試用例管理、服務(wù)接口測(cè)試、WebUI測(cè)試、終端測(cè)試、性能測(cè)試、安全測(cè)試、導(dǎo)流測(cè)試、在線測(cè)試及測(cè)試分析報(bào)告等功能。底層有一套完整的測(cè)試管理平臺(tái)來(lái)支撐。

全場(chǎng)景測(cè)試服務(wù)有3個(gè)要點(diǎn):

Test Left,測(cè)試左移。在研發(fā)或產(chǎn)品生命周期的早期階段就可以介入和開(kāi)展測(cè)試,并且測(cè)試的工作不是只由測(cè)試人員來(lái)承擔(dān),也就是說(shuō)測(cè)試是一個(gè)活動(dòng),而不是一個(gè)獨(dú)立的角色。
Automate Everything:盡可能多自動(dòng)化。在業(yè)務(wù)早期階段,快速構(gòu)建起來(lái)做一些驗(yàn)證,所有這些測(cè)試用例逐漸都要變成自動(dòng)化的方式,這樣才能重復(fù)性地、一遍一遍地支撐業(yè)務(wù)快速交付的過(guò)程。
Test Right,測(cè)試右移。類生產(chǎn)環(huán)境始終不是真正的生產(chǎn)環(huán)境,沒(méi)辦法模擬所有生產(chǎn)環(huán)境的場(chǎng)景,我們還需要開(kāi)展大量的線上測(cè)試。

全流程測(cè)試,每個(gè)階段都有對(duì)應(yīng)的測(cè)試動(dòng)作:開(kāi)發(fā)環(huán)節(jié)有驗(yàn)收測(cè)試、單元測(cè)試、功能測(cè)試、coding里的代碼質(zhì)量把控也是測(cè)試;測(cè)試環(huán)節(jié)有回歸測(cè)試、集成測(cè)試、性能測(cè)試、安全合規(guī)類測(cè)試等;部署環(huán)節(jié)有A/B測(cè)試、在線上環(huán)境和生產(chǎn)環(huán)境做一些復(fù)雜測(cè)試,還包括吃自己的狗糧等。

整個(gè)測(cè)試會(huì)分三級(jí)進(jìn)行,分別是個(gè)人級(jí)、服務(wù)級(jí)、產(chǎn)品級(jí)。每級(jí)的流水線都會(huì)涉及到質(zhì)量活動(dòng),流水線也會(huì)分層分級(jí):

個(gè)人級(jí)流水線的質(zhì)量活動(dòng)是從本地開(kāi)發(fā)環(huán)境到Alpha環(huán)境,包括代碼檢查單元測(cè)試、編譯構(gòu)建、安全掃描、接口測(cè)試等,然后通過(guò)分支合并到Beta環(huán)境;
服務(wù)級(jí)流水線的質(zhì)量活動(dòng)是從Beta環(huán)境到Gamma環(huán)境,除了上述測(cè)試以外,還需要跑老特性回歸測(cè)試、瀏覽器兼容性測(cè)試、性能測(cè)試等;
產(chǎn)品級(jí)流水線的質(zhì)量活動(dòng)是從Gamma環(huán)境到生產(chǎn)環(huán)境,本層級(jí)需要加入專項(xiàng)測(cè)試,比如產(chǎn)品級(jí)性能測(cè)試、可靠性測(cè)試、長(zhǎng)穩(wěn)測(cè)試、安全測(cè)試等。

4.2 微服務(wù)交付過(guò)程持續(xù)開(kāi)展質(zhì)量活動(dòng)

在微服務(wù)交付過(guò)程中有不同的環(huán)境,比如Alpha環(huán)境、Beta環(huán)境、Gamma環(huán)境等,每個(gè)環(huán)節(jié)有相關(guān)的質(zhì)量檢查門禁和驗(yàn)收標(biāo)準(zhǔn),以及現(xiàn)網(wǎng)的質(zhì)量活動(dòng)。這些質(zhì)量活動(dòng)由不同的角色來(lái)承擔(dān):

前端設(shè)計(jì)階段,參與的主要是架構(gòu)師和開(kāi)發(fā)工程師;
開(kāi)發(fā)過(guò)程主要由開(kāi)發(fā)工程師來(lái)承擔(dān),架構(gòu)師也會(huì)承擔(dān)開(kāi)發(fā)的工作,但他做得更多的是關(guān)鍵的跨服務(wù)之間的設(shè)計(jì)和開(kāi)發(fā);
發(fā)布階段,開(kāi)發(fā)工程師執(zhí)行發(fā)布的動(dòng)作,測(cè)試工程師會(huì)從端到端進(jìn)行質(zhì)量把控,并對(duì)開(kāi)發(fā)工程師進(jìn)行支撐和賦能。
生產(chǎn)環(huán)境,開(kāi)發(fā)工程師和運(yùn)維工程師一起對(duì)系統(tǒng)進(jìn)行支撐,測(cè)試工程師會(huì)做一些現(xiàn)網(wǎng)測(cè)試、導(dǎo)流測(cè)試、混沌測(cè)試等。

4.3 測(cè)試度量指標(biāo)體系

除了流程以外,我們還會(huì)有一些質(zhì)量定義和度量標(biāo)準(zhǔn)。測(cè)試度量標(biāo)準(zhǔn)總體分為兩類:過(guò)程指標(biāo)和結(jié)果指標(biāo)。過(guò)程度量包括:覆蓋率、執(zhí)行率、測(cè)試效率等;結(jié)果度量包括:功能測(cè)試、性能測(cè)試、安全測(cè)試、可靠性測(cè)試等。

五、安全與審計(jì)

5.1 DevSecOps的價(jià)值和實(shí)踐

安全和可信直接相關(guān),說(shuō)到可信,大家自然會(huì)聯(lián)想到安全。權(quán)衡DevOps速度與現(xiàn)有安全要求的需求,催生了一個(gè)名為DevSecOps的模型。

什么是DevSecOps?DevSecOps基于“安全問(wèn)題,人人有責(zé)”的原則,它強(qiáng)調(diào)應(yīng)用程序開(kāi)發(fā)人員可以怎樣把安全檢查與他們的集成和部署流水線構(gòu)建到一起。簡(jiǎn)單來(lái)說(shuō),就是把安全層面的活動(dòng)滲入到DevOps開(kāi)發(fā)過(guò)程的各個(gè)環(huán)節(jié)中。 在華為云的實(shí)踐中,我們更關(guān)注在軟件開(kāi)發(fā)過(guò)程中植入安全活動(dòng)保證軟件生產(chǎn)的可信可靠和穩(wěn)定。

5.2 華為企業(yè)級(jí)安全工程實(shí)踐

同樣從軟件生命周期來(lái)看,華為企業(yè)級(jí)安全工程實(shí)踐基于DevOps流水線,在計(jì)劃、編碼與構(gòu)建、驗(yàn)證、發(fā)布與運(yùn)維運(yùn)營(yíng)等每個(gè)階段都有相應(yīng)的安全考核點(diǎn)和實(shí)踐介入,底層會(huì)有標(biāo)準(zhǔn)和規(guī)范、技術(shù)和能力、工具和流程來(lái)支撐,全流程保障網(wǎng)絡(luò)安全,實(shí)現(xiàn)安全設(shè)計(jì)、安全編碼、安全測(cè)試、安全運(yùn)維。

5.3 CodeCheck安全

華為內(nèi)部自研了一個(gè)工具:CodeCheck,以應(yīng)對(duì)嚴(yán)苛的安全要求,保證整體代碼質(zhì)量和安全。我們分別從能力、效率和生態(tài)運(yùn)營(yíng)來(lái)看CodeCheck。

能力上對(duì)應(yīng)三個(gè)級(jí)別:桌面級(jí)-編碼開(kāi)發(fā)環(huán)節(jié),嵌入IDE,編碼時(shí)執(zhí)行快速檢查;個(gè)人門禁級(jí)-代碼提交入庫(kù)時(shí),提供入庫(kù)門禁和規(guī)則集,快速檢查;版本級(jí)-持續(xù)集成、持續(xù)交付的過(guò)程中,提供全量檢查、告警閉環(huán)處理工程化能力。
效率上,前端桌面級(jí)和個(gè)人門禁級(jí)可做到秒級(jí)至分鐘級(jí)標(biāo)準(zhǔn);到了線上環(huán)節(jié),因?yàn)橐艿沫h(huán)節(jié)非常多,所以是小時(shí)級(jí)。
生態(tài)運(yùn)營(yíng)上,我們的工具是對(duì)內(nèi)做服務(wù),對(duì)外做客戶支撐。

5.4 安全規(guī)則

我們的安全規(guī)則來(lái)源于兩個(gè)層面:

外部視角:借鑒外部的規(guī)則,將業(yè)界的標(biāo)準(zhǔn)和最佳實(shí)踐沉淀下來(lái),變成安全編碼的知識(shí)庫(kù)和規(guī)則集。
內(nèi)部視角:華為內(nèi)部有大量的產(chǎn)品線和產(chǎn)品形態(tài),我們定義出TOP10的質(zhì)量和安全問(wèn)題,將長(zhǎng)期場(chǎng)景梳理和安全檢查的經(jīng)驗(yàn)積累成規(guī)則。

業(yè)界經(jīng)常提及的靜態(tài)分析安全測(cè)試(SAST)包括四層:編譯、構(gòu)建、語(yǔ)法分析、語(yǔ)義分析,安全檢查涉及的技術(shù)棧明顯更深,華為提供全棧能力、多語(yǔ)言支持,支持深入的語(yǔ)義分析能力。如果把質(zhì)量和安全結(jié)合到一起,需要一些規(guī)則和引擎來(lái)支撐,還需要引入一些智能化的手段,自動(dòng)檢查、自動(dòng)修復(fù)。

華為內(nèi)部將規(guī)則集分為三層:公司級(jí)、產(chǎn)品線級(jí)、產(chǎn)品級(jí)/版本級(jí)/工程級(jí)。公司級(jí)規(guī)則集包括強(qiáng)制規(guī)則集,比如低誤報(bào),默認(rèn)必須掃除,而檢視規(guī)則集則可根據(jù)需要勾選;產(chǎn)品線級(jí)規(guī)則集和產(chǎn)品級(jí)規(guī)則集,產(chǎn)品線管理員配置為強(qiáng)制要求,其余的規(guī)則集可根據(jù)產(chǎn)品特性進(jìn)行選擇。

整個(gè)工具不僅僅是簡(jiǎn)單的安裝+運(yùn)行,而是一個(gè)MN矩陣式的運(yùn)營(yíng)體系。從規(guī)則定義上來(lái)講,有公司級(jí)、產(chǎn)品線級(jí)、產(chǎn)品級(jí)等不同層級(jí)的規(guī)則;從時(shí)間周期上看,哪些規(guī)則放在開(kāi)發(fā)者桌面IDE里、哪些規(guī)則要放在流水線里、哪些規(guī)則要放在版本構(gòu)建里,都有一個(gè)設(shè)計(jì)的過(guò)程。

5.5 企業(yè)級(jí)專家服務(wù)

在安全層面,我們提供了企業(yè)級(jí)專家服務(wù),其服務(wù)策略類似于醫(yī)院看診。普通“發(fā)燒感冒”的診治,提供基礎(chǔ)服務(wù);針對(duì)“大病重癥”,提供專業(yè)的自動(dòng)化檢查能力及工程配套能力;針對(duì)“疑難雜癥”,提供顧問(wèn)式專家服務(wù)。

六、部署與發(fā)布

6.1 持續(xù)交付核心實(shí)踐

持續(xù)交付的過(guò)程是和持續(xù)開(kāi)發(fā)與集成、自動(dòng)化測(cè)試等關(guān)聯(lián)在一起的。比如分層快速閉環(huán),在測(cè)試的時(shí)候就會(huì)分不同的層級(jí)去執(zhí)行,分層的目的是為了快速反饋和閉環(huán)。

持續(xù)交付的核心實(shí)踐除分層快速閉環(huán)外,還包括:小迭代高節(jié)奏交付、自動(dòng)化&可視化流水線、自動(dòng)化持續(xù)部署、縮短單點(diǎn)耗時(shí)、高效標(biāo)準(zhǔn)化環(huán)境等。

6.2 發(fā)布的分支模型和CI/CD流水線

自動(dòng)化部署的背后是標(biāo)準(zhǔn)化環(huán)境,需要代碼的分支結(jié)構(gòu)和整體的CI/CD流水線有很好的匹配和映射關(guān)系。

我們從代碼主干上拉出來(lái)一個(gè)代碼分支,在上面做相關(guān)的開(kāi)發(fā),提交后自動(dòng)拉起來(lái)一個(gè)CI流水線,對(duì)代碼進(jìn)行靜態(tài)檢查和自動(dòng)化構(gòu)建,包括部署包準(zhǔn)備、代碼合并等,最終通過(guò)個(gè)人級(jí)別的流水線后,跑到生產(chǎn)環(huán)境上,整個(gè)過(guò)程都是和CI/CD流水線關(guān)聯(lián)在一起的。

6.3 可信Built-In的流水線

我們把可信的概念內(nèi)建到整個(gè)流水線里,自動(dòng)化檢查、驗(yàn)證,過(guò)程中獲取反饋,支持實(shí)現(xiàn)CI/CD過(guò)程的高效可信。

如果代碼層面是可信的,到編譯構(gòu)建的時(shí)候,可以可重復(fù)地高效地構(gòu)建出來(lái);同時(shí),測(cè)試活動(dòng)中也會(huì)加入可信相關(guān)的檢查點(diǎn);到上線后,Chaos Monkey等實(shí)踐也都是跟可信直接相關(guān)的,比如我們經(jīng)常強(qiáng)調(diào)的彈性、穩(wěn)定性等。

6.4 Everything as Code 一切皆代碼

可能有人會(huì)問(wèn):怎么防范我的環(huán)境里被人植入漏洞?其實(shí)環(huán)境也好、過(guò)程也好,都可以代碼化,代碼化后就可以把它納入到整個(gè)版本管控中,這樣的話所有的修改和變更都可以自動(dòng)化,也可以針對(duì)這些環(huán)境和過(guò)程進(jìn)行安全審計(jì)。

我們稱之為Everything as Code 一切皆代碼。除了基礎(chǔ)設(shè)施以外,編排、配置、測(cè)試、數(shù)據(jù)庫(kù)、流水線、代碼都可以這種方式呈現(xiàn)出來(lái),這樣就可以實(shí)現(xiàn)版本化、自動(dòng)化和標(biāo)準(zhǔn)化。再往上到Service也如此,Service as Code實(shí)際上就是我們想要強(qiáng)調(diào)的API。

6.5 灰度發(fā)布策略驅(qū)動(dòng)自動(dòng)化部署與回滾

在發(fā)布的時(shí)候,我們會(huì)有各級(jí)發(fā)布的機(jī)制。首先我們會(huì)做一級(jí)的灰度發(fā)布,找一些重點(diǎn)MVP客戶,或者內(nèi)部使用者,發(fā)布給自用環(huán)境;沒(méi)問(wèn)題的話再進(jìn)行二級(jí)灰度,這時(shí)會(huì)適度擴(kuò)大范圍,開(kāi)放給全網(wǎng)10%左右的用戶;然后再做三級(jí)灰度;最后才是全量發(fā)布。

在這個(gè)過(guò)程中,一旦任何一級(jí)出現(xiàn)問(wèn)題,馬上就可以進(jìn)行修復(fù)和回滾。同時(shí)我們會(huì)做一些在線導(dǎo)流測(cè)試,結(jié)合AB測(cè)試進(jìn)行業(yè)務(wù)層面的探索,我們一直強(qiáng)調(diào)通過(guò)技術(shù)的手段賦能業(yè)務(wù)。

七、總結(jié)

以上介紹的是華為云的DevOps體系,其核心除了通常我們所說(shuō)的“高效”、“持續(xù)交付”以外,更重要的一點(diǎn)是“可信”。我們將這一體系稱為“云與安生時(shí)代的DevOps體系框架”。

頂層是商業(yè)決策,我們會(huì)持續(xù)規(guī)劃、定期審視,固定節(jié)奏對(duì)其進(jìn)行相應(yīng)調(diào)整;往下是服務(wù)化組織、架構(gòu)解耦,開(kāi)發(fā)&運(yùn)維落地;再往下是工具、環(huán)境支撐;最底下是服務(wù)流程支撐。

如何去構(gòu)建這樣一套體系?我們要始終圍繞整體的研發(fā)效率目標(biāo),選擇應(yīng)用相關(guān)的研發(fā)工具,以工具承載新型能力,支撐高效作業(yè)、持續(xù)交付、高效協(xié)同、智能化輔助開(kāi)發(fā)、持續(xù)反饋與改進(jìn),進(jìn)而構(gòu)建整個(gè)的持續(xù)交付能力。

——————————————————————————————————————

內(nèi)容來(lái)源:【2020 CSDI SUMMIT中國(guó)軟件研發(fā)管理行業(yè)技術(shù)峰會(huì)】分享實(shí)錄,原文首發(fā)于“百林哲”。作者:姚冬

嘉賓簡(jiǎn)介:華為云應(yīng)用平臺(tái)部首席技術(shù)解決方案架構(gòu)師,資深DevOps與精益/敏捷專家,華為云享專家,中國(guó)DevOps社區(qū)核心組織者,IDCF(國(guó)際DevOps教練聯(lián)合會(huì))發(fā)起人

點(diǎn)擊關(guān)注,第一時(shí)間了解華為云新鮮技術(shù)~

總結(jié)

以上是生活随笔為你收集整理的如何构建高效可信的持续交付能力,华为云有绝活!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。