小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

持續(xù)交付體系在高德的實(shí)踐歷程

 過(guò)河卒沖 2020-03-10

1.前序

對(duì)于工程團(tuán)隊(duì)來(lái)說(shuō),構(gòu)建一套具有可持續(xù)性的、多方面質(zhì)量保證的交付體系建設(shè),能夠?yàn)闃I(yè)務(wù)價(jià)值的快速交付搭建起高速公路,也能為交付過(guò)程中的質(zhì)量起到保駕護(hù)航的作用。本文為大家介紹持續(xù)交付體系在高德的演進(jìn)與落地。

2.持續(xù)交付

正如前序中所總結(jié)的,我們需要構(gòu)建一套持續(xù)交付體系,從而保證在質(zhì)量不下降的前提下,在業(yè)務(wù)價(jià)值交付上有更進(jìn)一步的突破。那么我們先了解一下什么是持續(xù)交付以及集團(tuán)在持續(xù)交付的建設(shè)上有哪些指引。

2.1 持續(xù)交付概念

引用 Martin Fowler 大師在 2013 年時(shí)發(fā)表的文章,對(duì)于持續(xù)交付的概念有如下的解釋:Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.

在上述文中,可以提取幾個(gè)關(guān)鍵詞:

  1. 軟件開(kāi)發(fā)的標(biāo)準(zhǔn)化準(zhǔn)則

  2. 可以做到隨時(shí)隨地的發(fā)布

什么情況下就可以算是團(tuán)隊(duì)達(dá)到了持續(xù)發(fā)布的狀態(tài)呢?Martin Fowler大師也給出了標(biāo)準(zhǔn)的答案:

  1. Your software is deployable throughout its lifecycle
  2. Your team prioritizes keeping the software deployable over working on new features
  3. Anybody can get fast, automated feedback on the production readiness of their systems any time somebody makes a change to them
  4. You can perform push-button deployments of any version of the software to any environment on demand

那么基于以上的觀點(diǎn),我們?cè)诮⒆陨淼某掷m(xù)交付體系時(shí),需要抓住以下幾個(gè)重點(diǎn):

  1. 標(biāo)準(zhǔn)化流程流轉(zhuǎn)

  2. 當(dāng)有變更進(jìn)入時(shí),能夠快速、準(zhǔn)確且自動(dòng)的得到反饋

  3. 解決部署問(wèn)題的優(yōu)先級(jí)高于功能開(kāi)發(fā)

  4. 一鍵發(fā)布

2.2 集團(tuán)的持續(xù)交付建設(shè)

從理論基礎(chǔ)上對(duì)于持續(xù)交付有了初步了解后,我們從集團(tuán)層面了解一下是如何定義持續(xù)交付的能力,并且對(duì)于持續(xù)交付提出了哪些效能改進(jìn)目標(biāo),參見(jiàn)阿里技術(shù)公眾號(hào)的文章 《如何衡量研發(fā)效能?阿里資深技術(shù)專家提出了5組指標(biāo)》

文章中將持續(xù)價(jià)值交付的能力拆分為3個(gè)層面的5組指標(biāo),從不同角度對(duì)持續(xù)價(jià)值交付能力進(jìn)行了衡量。

有了上面專業(yè)層面的衡量指標(biāo),那我們是如何定義一個(gè)優(yōu)秀的持續(xù)交付衡量目標(biāo)呢?
管理學(xué)之父德魯克說(shuō):“如果你不能度量它,就無(wú)法改進(jìn)它”。度量幫助我們更深刻認(rèn)識(shí)研發(fā)效能,設(shè)定改進(jìn)方向,并衡量改進(jìn)效果,所以想要進(jìn)行效能提升的前提是先能夠識(shí)別交付過(guò)程中的質(zhì)效瓶頸。
因此,集團(tuán)在基于部分BU的優(yōu)秀實(shí)踐下提出了2-1-1的愿景。

  • 1小時(shí)的發(fā)布前置時(shí)間是對(duì)于基礎(chǔ)設(shè)施能力的要求,需要保證當(dāng)達(dá)到交付標(biāo)準(zhǔn)后,通過(guò)交付流水線能夠達(dá)到1小時(shí)內(nèi)的打包、部署和驗(yàn)證的能力;
  • 1周的開(kāi)發(fā)周期涉及產(chǎn)品需求拆分、研發(fā)QA協(xié)作能力、持續(xù)測(cè)試以及快速反饋能力方面提出了挑戰(zhàn);
  • 2周的需求交付周期是以前兩項(xiàng)為基礎(chǔ),不僅是涉及到產(chǎn)研測(cè)三方,還包括其他協(xié)同部門的通力合作才能保證業(yè)務(wù)價(jià)值的快速交付。

3. 持續(xù)交付在高德

在基于集團(tuán)愿景的指導(dǎo)下,反觀現(xiàn)有高德服務(wù)端的交付流程,我們發(fā)現(xiàn)在整個(gè)流程中,存在很多效率上的豎井,這些效率問(wèn)題匯總起來(lái),便會(huì)成為整個(gè)交付流程上的效能瓶頸,進(jìn)而影響業(yè)務(wù)價(jià)值的盡早交付。

我們先從一個(gè)整體的Milestone來(lái)回顧一下整個(gè)持續(xù)交付所經(jīng)過(guò)的一些重要時(shí)間節(jié)點(diǎn):
  • 2018/08 構(gòu)思與工程能力建設(shè):項(xiàng)目啟動(dòng)階段,工程效率團(tuán)隊(duì)與業(yè)務(wù)線明確了持續(xù)交付的目標(biāo),并啟動(dòng)了工程能力建設(shè)

  • 2018/12 初步落地與試點(diǎn):項(xiàng)目試點(diǎn)階段,完成了初步的持續(xù)交付流程搭建,并在一個(gè)項(xiàng)目中驗(yàn)證流程卡點(diǎn)以及質(zhì)量標(biāo)準(zhǔn)的基礎(chǔ)能力驗(yàn)證。最終建立了基礎(chǔ)的質(zhì)量標(biāo)準(zhǔn)以及降低流程中的耗時(shí)

  • 2019/04 推進(jìn)接入與平臺(tái)優(yōu)化:項(xiàng)目推進(jìn)階段,持續(xù)交付項(xiàng)目質(zhì)量項(xiàng)優(yōu)化并在高德的服務(wù)端的6條業(yè)務(wù)線中進(jìn)行推廣,在9月份完成6條業(yè)務(wù)線以及11個(gè)應(yīng)用的持續(xù)交付落地

  • 2019/09 復(fù)盤與展望:項(xiàng)目推進(jìn)總結(jié),對(duì)整個(gè)推進(jìn)過(guò)程進(jìn)行復(fù)盤與后續(xù)持續(xù)交付如何落地進(jìn)行復(fù)盤與展望,整體產(chǎn)出業(yè)務(wù)推進(jìn)中出現(xiàn)的問(wèn)題以及改進(jìn)方法

  • 未來(lái):在交付流程上進(jìn)行貼合業(yè)務(wù)線的微創(chuàng)新,并對(duì)效能瓶頸點(diǎn)進(jìn)行縱深挖掘。結(jié)合各縱向平臺(tái)進(jìn)行縱深挖掘,例如:覆蓋率與精準(zhǔn)回歸、云歌Case平臺(tái)、代碼掃描平臺(tái)等

通過(guò) milestone 的展示,對(duì)于高德持續(xù)交付體系的演進(jìn)有了大致的了解后,下面對(duì)于落地的過(guò)程以及改進(jìn)的內(nèi)容進(jìn)行一下詳細(xì)的梳理。

3.1 接入持續(xù)交付前的交付流程

首先先介紹一下在接入持續(xù)交付體系之前,高德的服務(wù)端是如何進(jìn)行迭代的開(kāi)發(fā)與上線的。

與大部分互聯(lián)網(wǎng)公司一樣,我們將軟件的交付拆分為多個(gè)周期,進(jìn)行迭代式的交付,以便增量式的進(jìn)行用戶價(jià)值的交付。上圖描述了一個(gè)正常迭代周期內(nèi)的研發(fā)、測(cè)試以及發(fā)布的流程,我們可以拆分為以下幾個(gè)方面:
  1. 迭代周期起始于代碼庫(kù)的變更

  2. 在功能開(kāi)發(fā)完成后,研發(fā)通過(guò)CI系統(tǒng)進(jìn)行冒煙測(cè)試驗(yàn)證,保證服務(wù)可以正常啟動(dòng)以及基礎(chǔ)功能可用

  3. 在規(guī)定的提測(cè)時(shí)間前,研發(fā)將Feature分支通過(guò)CR和MR合并到迭代分支,部署到日常環(huán)境進(jìn)行提測(cè)

  4. QA在收到提測(cè)郵件后,參與到日常環(huán)境的測(cè)試中

  5. 當(dāng)日常環(huán)境測(cè)試完成后,QA會(huì)進(jìn)行測(cè)試報(bào)告的產(chǎn)出,并確認(rèn)日常環(huán)境測(cè)試通過(guò),可以發(fā)布到預(yù)發(fā)環(huán)境

  6. 部署到預(yù)發(fā)環(huán)境后,會(huì)進(jìn)行流量回放等測(cè)試,并最終通過(guò)線上的灰度驗(yàn)證,最終發(fā)布到正式環(huán)境

通過(guò)上述的圖片和描述,我們可以看到在看似完善的軟件交付過(guò)程中,卻仍然存在如下一些質(zhì)量、效率問(wèn)題:

1. 需求堆積提測(cè)、發(fā)布:
目前高德服務(wù)端大部分服務(wù)采用的是固定迭代周期進(jìn)行需求發(fā)布,規(guī)劃到迭代周期內(nèi)的需求,無(wú)論需求大小,均需要等到迭代提測(cè)時(shí)間點(diǎn)進(jìn)行提測(cè),在迭代的發(fā)布窗口進(jìn)行發(fā)布上線。
在這種模式下,好的一點(diǎn)是有固定的版本節(jié)奏,整體迭代規(guī)劃性比較強(qiáng)。但是由于提測(cè)、發(fā)布窗口固定,從而也帶來(lái)了整體業(yè)務(wù)價(jià)值交付上的等待。因此,需要通過(guò)需求拆分來(lái)降低需求內(nèi)部的耦合性,通過(guò)改變研發(fā)、QA的開(kāi)發(fā)測(cè)試模式來(lái)降低需求提測(cè)中間的豎井等待,從而提升業(yè)務(wù)價(jià)值交付的效率。
2. 質(zhì)量標(biāo)準(zhǔn)不透明,無(wú)法及時(shí)反饋:
從代碼提交一直到最終產(chǎn)品發(fā)布,一般情況下,會(huì)經(jīng)歷日常、預(yù)發(fā)、灰度、正式發(fā)布幾個(gè)階段,每個(gè)階段均有每個(gè)階段需要重點(diǎn)解決的問(wèn)題以及對(duì)質(zhì)量上的要求也不盡然相同。目前結(jié)果的收集匯總和通知都是通過(guò)跟版人進(jìn)行人工收集和統(tǒng)計(jì),并郵件通知項(xiàng)目成員。
這樣所有的標(biāo)準(zhǔn)控制都是有每個(gè)版本的跟版人進(jìn)行把控,存在信息不透明,反饋不及時(shí)的問(wèn)題。通過(guò)質(zhì)量項(xiàng)標(biāo)準(zhǔn)的建立,以及大盤結(jié)果透明和及時(shí)的通知,能夠解決溝通層面的低效以及在傳遞過(guò)程中信息損耗,從而提升溝通效率,并且避免溝通中的誤解。在解決了當(dāng)前透明化和及時(shí)通知的問(wèn)題后,我們需要進(jìn)一步從以下兩方面進(jìn)行優(yōu)化:
  • 將通知進(jìn)行分類以及優(yōu)先級(jí)處理,降低通知帶來(lái)的負(fù)面影響

  • 通過(guò)信息內(nèi)容優(yōu)化,輔助業(yè)務(wù)進(jìn)行問(wèn)題的快速定位與排查

3.部署與流程流轉(zhuǎn)過(guò)程需要人工參與:
對(duì)于持續(xù)發(fā)布流程來(lái)說(shuō),有人工參與的地方勢(shì)必會(huì)影響到其中的效率。所以我們將部署和階段流轉(zhuǎn)拆分為兩個(gè)方面看:
階段流轉(zhuǎn):結(jié)合上述的階段標(biāo)準(zhǔn),通過(guò)程序來(lái)計(jì)算是否能夠滿足當(dāng)前的質(zhì)量情況是否可以進(jìn)行階段的流轉(zhuǎn),從而排除人為因素以及在階段流轉(zhuǎn)中的耗時(shí),做到準(zhǔn)確
部署:提取相應(yīng)環(huán)境的配置信息,結(jié)合Docker化,將打包、部署、健康檢查等一些列活動(dòng)轉(zhuǎn)換為機(jī)器的標(biāo)準(zhǔn)化執(zhí)行,通過(guò)標(biāo)準(zhǔn)化來(lái)避免人為參與所造成的誤差或部署失敗的問(wèn)題
4.多機(jī)房正式發(fā)布驗(yàn)證人工監(jiān)督:
目前在應(yīng)用的正式發(fā)布流程中,由于涉及的機(jī)房和機(jī)器數(shù)量較多,業(yè)務(wù)上會(huì)進(jìn)行分批驗(yàn)證,每發(fā)布完成一批機(jī)器,研發(fā)會(huì)通知QA進(jìn)行這批機(jī)器中部分機(jī)器的抽檢(部分自動(dòng)化測(cè)試),在這其中也存在著效率上的問(wèn)題。所以如何節(jié)約每次上線過(guò)程中的人力損耗,也是在追求效能極致上需要解決的問(wèn)題。
上述的每個(gè)細(xì)節(jié)的問(wèn)題,都在我們通往快速業(yè)務(wù)價(jià)值交付的道路上設(shè)置了障礙。因此,為了達(dá)成更早(快)的交付業(yè)務(wù)價(jià)值的目標(biāo)下,我們必須要在交付效率、質(zhì)量標(biāo)準(zhǔn)以及結(jié)果快速反饋這幾方面的進(jìn)行優(yōu)化。

3.2 持續(xù)交付在高德的落地

基于上節(jié)拆分出來(lái)的4方面的問(wèn)題,從工程角度來(lái)說(shuō),由于迭代的排期,需求的分解與拆分需要進(jìn)行長(zhǎng)期的實(shí)踐與規(guī)劃,并且依賴于產(chǎn)、研、測(cè)、項(xiàng)乃至于其他部門的支撐,是一個(gè)需要進(jìn)行逐步探索和調(diào)整的過(guò)程。所以我們將著眼點(diǎn)放到后3方面的建設(shè)上,期望在短期內(nèi)先建立起快速發(fā)布的能力,清除在交付過(guò)程中效率低下的點(diǎn)。
那么在解決效率問(wèn)題的建設(shè)上,借助于集團(tuán)提供的發(fā)布流程以及較好的部署能力,我們將目前拆解為如下幾個(gè)維度的抓手:
  1. 依托于集團(tuán)的發(fā)布流程,在持續(xù)交付體系中建立與集團(tuán)發(fā)布流程對(duì)應(yīng)的標(biāo)準(zhǔn)化流程流轉(zhuǎn)機(jī)制
  2. 建立服務(wù)端質(zhì)量標(biāo)準(zhǔn)體系,拉通質(zhì)量標(biāo)準(zhǔn),去人工化
  3. 打通各環(huán)節(jié)的快速反饋機(jī)制,并對(duì)發(fā)布流程進(jìn)行管控,讓變更結(jié)果隨時(shí)可見(jiàn)
  4. 降低發(fā)布過(guò)程中的人為參與,讓整個(gè)發(fā)布流程做到全程無(wú)人值守

通過(guò)下面持續(xù)交付流程圖,我們通過(guò)接入后的流程圖中看一下以上4個(gè)抓手是如何串聯(lián)起整體高德持續(xù)交付流程,并且這幾項(xiàng)是如何在高德服務(wù)端交付流程中進(jìn)行落地的。

  • 建立標(biāo)準(zhǔn)化的流程流轉(zhuǎn)機(jī)制

FY19高德服務(wù)端發(fā)生的線上問(wèn)題中,其中由于變更或發(fā)布引發(fā)的問(wèn)題占比約12%。通過(guò)這組數(shù)據(jù),我們期望能夠通過(guò)建立一套完整的交付流轉(zhuǎn)流程,實(shí)現(xiàn)對(duì)于變更的控制和管理,降低或避免此類問(wèn)題的發(fā)生。

基于以上立論,我們結(jié)合當(dāng)前服務(wù)端交付特點(diǎn),首先先確立以集團(tuán)標(biāo)準(zhǔn)發(fā)布流程為試點(diǎn),打通整體持續(xù)交付流程;其次,針對(duì)各應(yīng)用中不同的需求,例如:需要性能環(huán)境、覆蓋率環(huán)境等,結(jié)合流水線配置,將整個(gè)持續(xù)交付的流程流轉(zhuǎn)進(jìn)行優(yōu)化;最終沉淀為各服務(wù)的標(biāo)準(zhǔn)化流程流轉(zhuǎn)機(jī)制。通過(guò)這種先僵化,后優(yōu)化,再固化的方式,最終在服務(wù)端落地了多套標(biāo)準(zhǔn)的交付流程,避免了在交付環(huán)節(jié)上的遺漏,以及不規(guī)范的操作。

  • 拉通并落地服務(wù)端質(zhì)量體系標(biāo)準(zhǔn)

在高德現(xiàn)有的交付流程中,整體的質(zhì)量保障手段大部分是在日常階段進(jìn)行的,在迭代交付的過(guò)程中,各項(xiàng)質(zhì)量保障手段執(zhí)行了哪些,執(zhí)行結(jié)果是什么,目前還是通過(guò)QA人員進(jìn)行人工問(wèn)題收集與匯總,并判定階段結(jié)果的通過(guò)與否。在這種情況下,會(huì)出現(xiàn)由于跟版人交替導(dǎo)致的質(zhì)量項(xiàng)遺漏,以及質(zhì)量標(biāo)準(zhǔn)難以把控的情況。

所以基于這幾方面的問(wèn)題,我們希望通過(guò)用機(jī)器把控替代原有的人工把控的方式,通過(guò)建立標(biāo)準(zhǔn)化的質(zhì)量模板,來(lái)避免整體執(zhí)行標(biāo)準(zhǔn)不透明,執(zhí)行結(jié)果無(wú)沉淀的情況。并且,通過(guò)拉通標(biāo)準(zhǔn),也進(jìn)一步的規(guī)避掉了非重點(diǎn)服務(wù)質(zhì)量檢查點(diǎn)遺漏的情況。

通過(guò)與業(yè)務(wù)團(tuán)隊(duì)的溝通,我們?cè)诘谝浑A段將現(xiàn)有服務(wù)端的質(zhì)量保證手段進(jìn)行拆分,提取了在不同階段中相對(duì)重要的12項(xiàng)質(zhì)量項(xiàng),通過(guò)機(jī)器監(jiān)督替代原有的人為統(tǒng)計(jì)的方式。具體覆蓋了如下幾個(gè)維度:

  • 代碼維度

    • 靜態(tài)掃描

    • 安全掃描

  • 測(cè)試維度

    • 冒煙結(jié)果

    • 新功能結(jié)果

    • 回歸結(jié)果

    • Fuzz測(cè)試結(jié)果

    • 流量回放結(jié)果

    • 兼容性測(cè)試結(jié)果

    • 壓測(cè)結(jié)果

  • 監(jiān)控

    • 預(yù)發(fā)、線上監(jiān)控

  • 需求/Bug管理平臺(tái)關(guān)聯(lián)

    • 當(dāng)前版本需求進(jìn)展

    • 當(dāng)前版本Bug情況

  • 打通各環(huán)節(jié)的快速反饋機(jī)制,并對(duì)發(fā)布流程進(jìn)行管控,讓變更結(jié)果隨時(shí)可見(jiàn)

當(dāng)建立起有效的質(zhì)量體系后,在各階段有了質(zhì)量要求以及準(zhǔn)入準(zhǔn)出標(biāo)準(zhǔn),解決了信息收集方面的問(wèn)題,那么接下來(lái)我們要思考的就是如何將收集上來(lái)的各種信息,有效的反饋到項(xiàng)目中的各個(gè)干系人,以便進(jìn)行后續(xù)的決策支撐,并且當(dāng)未達(dá)到階段準(zhǔn)出標(biāo)準(zhǔn)時(shí),有效的控制項(xiàng)目的階段流轉(zhuǎn)。
我們將問(wèn)題拆解為兩方面看,一是有效反饋、決策支撐,二是流程流轉(zhuǎn)的管控。
從有效反饋、決策支撐方面看:
  • 在接入持續(xù)交付之前,各業(yè)務(wù)線的針對(duì)不同類型的自動(dòng)化測(cè)試任務(wù),大部分都有通過(guò)Jenkins或測(cè)試用例工程反饋結(jié)果的通知。但是此類反饋有一個(gè)致命的問(wèn)題,就是通過(guò)單項(xiàng)反饋無(wú)法縱觀全局,不足以支撐后續(xù)的決策。
  • 在接入持續(xù)交付后,除了原有業(yè)務(wù)上的反饋機(jī)制,平臺(tái)提供能針對(duì)當(dāng)期版本的整體狀態(tài)全覽,可以通過(guò)平臺(tái)隨時(shí)觀測(cè)到當(dāng)前版本是否達(dá)到可發(fā)布的狀態(tài)或者仍然存在哪些不足。將兩者結(jié)合起來(lái)后,針對(duì)項(xiàng)目執(zhí)行人仍然可以通過(guò)原有反饋機(jī)制了解到單點(diǎn)的質(zhì)量結(jié)果;對(duì)于跟版人、一線、二線管理者這類需要縱觀全局的角色來(lái)說(shuō),通過(guò)質(zhì)量大盤,可以有效且明確的知道當(dāng)前版本與待發(fā)布狀態(tài)的差距,并支撐后續(xù)決策以及調(diào)整關(guān)注的重點(diǎn)

從流程管控方面看:

  • 在接入持續(xù)交付之前,可部署的產(chǎn)物無(wú)論是否經(jīng)過(guò)階段驗(yàn)證,都可人為的部署到任意環(huán)境下,雖然靈活性比較高,但是也存在一定的質(zhì)量風(fēng)險(xiǎn)。

  • 在設(shè)計(jì)持續(xù)交付流程時(shí),對(duì)于靈活性以及規(guī)范性的取舍方面,我們也與業(yè)務(wù)同學(xué)進(jìn)行了討論。從全局看,為了避免流程不規(guī)范引起漏測(cè)或其它線上事故,最終確定在初版時(shí)先保證流程流轉(zhuǎn)的規(guī)范性,從而降低靈活部署上所帶來(lái)質(zhì)量上的風(fēng)險(xiǎn)。平臺(tái)通過(guò)集團(tuán)實(shí)驗(yàn)室插件與集團(tuán)的部署發(fā)布系統(tǒng)打通,當(dāng)階段中存在質(zhì)量項(xiàng)尚未達(dá)標(biāo)的情況下,阻止發(fā)布流程進(jìn)入到下一階段(環(huán)節(jié))。

  • 當(dāng)基礎(chǔ)的持續(xù)交付流程落地后,為了滿足業(yè)務(wù)上對(duì)靈活性的要求,目前我們也在嘗試通過(guò)自定義流水線來(lái)進(jìn)行多環(huán)境的分發(fā)與部署,從而在保證主要階段流轉(zhuǎn)有管控的同時(shí),增加部署的靈活性,以適應(yīng)不同的業(yè)務(wù)形態(tài)。

  • 降低流程發(fā)布過(guò)程中的人為參與,讓整個(gè)流程做到全程無(wú)人值守

我們知道,線上環(huán)境部署的復(fù)雜程度要遠(yuǎn)高于在日常和預(yù)發(fā)環(huán)境的部署。由于部分業(yè)務(wù)線,線上的機(jī)器數(shù)量眾多,且分布在不同機(jī)房,為了保證部署時(shí)的服務(wù)可用性,線上部署時(shí)會(huì)將上千臺(tái)機(jī)器拆分為多批次進(jìn)行部署。
  • 在接入持續(xù)交付前,為了保證部署后服務(wù)的可用性以及對(duì)質(zhì)量上的高標(biāo)準(zhǔn)要求,在每批次部署完成后,QA都需要針對(duì)當(dāng)前批次進(jìn)行全批次驗(yàn)證或抽測(cè)驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,再進(jìn)行下一批次的發(fā)布以及后續(xù)驗(yàn)證。雖然驗(yàn)證本身是通過(guò)自動(dòng)化腳本進(jìn)行驗(yàn)證,但由于機(jī)器和批次比較多,整個(gè)發(fā)布和驗(yàn)證流程會(huì)持續(xù)數(shù)小時(shí),存在較大的效率問(wèn)題。
  • 在了解到業(yè)務(wù)上此效率瓶頸后,通過(guò)打通上下游系統(tǒng),集團(tuán)標(biāo)準(zhǔn)流程、集團(tuán)發(fā)布系統(tǒng)以及原有業(yè)務(wù)的線上驗(yàn)證工程,針對(duì)不同業(yè)務(wù)的發(fā)布場(chǎng)景,進(jìn)行發(fā)布驗(yàn)證策略的配置化。通過(guò)感知部署時(shí)的消息,獲取當(dāng)批次部署的機(jī)器列表,依據(jù)各業(yè)務(wù)的驗(yàn)證策略配置進(jìn)行自動(dòng)化的驗(yàn)證。并且結(jié)合線上階段的報(bào)警監(jiān)控,當(dāng)某批次發(fā)布驗(yàn)證出現(xiàn)問(wèn)題后,系統(tǒng)可以第一時(shí)間定位到具體是哪一批次中的哪臺(tái)機(jī)器發(fā)布出現(xiàn)問(wèn)題,幫助業(yè)務(wù)進(jìn)行部署問(wèn)題的快速定位。

  • 持續(xù)交付體系的業(yè)務(wù)架構(gòu)

4. 落地效果

整個(gè)持續(xù)交付體系建設(shè),目前在高德服務(wù)端落地已經(jīng)有一段時(shí)間了,截止到目前為止:

  • 業(yè)務(wù)線覆蓋:整個(gè)持續(xù)交付體系已經(jīng)覆蓋了高德服務(wù)端大部分重點(diǎn)業(yè)務(wù)

  • 各階段質(zhì)量項(xiàng)建設(shè):12項(xiàng)

  • 正式發(fā)布階提效:50%~90%

在獲得以上成果的同時(shí),除了上述量化指標(biāo)外,更有價(jià)值的是隱含在背后的研發(fā)、測(cè)試習(xí)慣上的變化。從研發(fā)、QA和項(xiàng)目主動(dòng)發(fā)起的縮短項(xiàng)目周期,到QA對(duì)于質(zhì)量項(xiàng)上提出更多的訴求等等,無(wú)一不感知到大家對(duì)于盡早且高質(zhì)量的交付業(yè)務(wù)價(jià)值這件事情的重視。當(dāng)然對(duì)于更早(快)的交付業(yè)務(wù)價(jià)值這個(gè)目標(biāo)還有一定的差距,這個(gè)也是后續(xù)我們與業(yè)務(wù)線需要共同解決的問(wèn)題。

5. 持續(xù)交付的未來(lái)

有人將持續(xù)交付形容為在價(jià)值交付上的高速公路,持續(xù)交付的落地,標(biāo)志著價(jià)值交付到用戶的快速路已經(jīng)建立完成。但是最終是否能做到更早(快)的交付業(yè)務(wù)價(jià)值,還取決于在這條快速路上行駛的車輛。

根據(jù)這個(gè)理論,我們除了要保證這條高速公路上不出現(xiàn)坑洼的同時(shí),還要兼顧車輛本身的能力,以及車輛的性能。因此,在車輛出發(fā)前,我們更需要通過(guò)對(duì)車輛的車況進(jìn)行檢查,保證在高速路上行駛的車輛不會(huì)因?yàn)樽陨淼脑蛱岵黄鹚俣取?/span>

5.1 車況檢查

目前,已有的持續(xù)集成系統(tǒng),僅能夠保證車輛在這條路上是能開(kāi)起來(lái)的,車況的檢查都是在上了高速后才開(kāi)始的(大部分的質(zhì)量保證手段是部署到日常環(huán)境后才開(kāi)始)。所以基于上面描述的指導(dǎo)方針,我們需要盡早的做檢查,并且需要做更全面的檢查(質(zhì)量保障手段左移)。

基于這個(gè)目標(biāo)以及結(jié)合集團(tuán)內(nèi)其他BU的優(yōu)秀實(shí)踐,后續(xù)我們希望能通過(guò)代碼門禁的手段,盡早落地這類全面的檢查。若要將代碼門禁落地,無(wú)論是對(duì)于工程效率團(tuán)隊(duì)亦或是業(yè)務(wù)研發(fā)與QA團(tuán)隊(duì),都有著不小的挑戰(zhàn),我們需要做到以下的轉(zhuǎn)變:

  • QA

    • 質(zhì)量保證的同期化能力建設(shè)

    • 質(zhì)量保證的穩(wěn)定性與耗時(shí)優(yōu)化

  • RD

    • 研發(fā)提交代碼流程的改變

    • 單元測(cè)試能力的建設(shè)

    • Code Review的常態(tài)化落地以及規(guī)范總結(jié)

  • 能力支撐

    • 代碼覆蓋率,業(yè)務(wù)場(chǎng)景覆蓋率的支撐

    • 代碼合并的門禁管控能力

    • 代碼掃描結(jié)合CodeReview的總結(jié)的落地

當(dāng)逐步完成以上任務(wù)的落地后,能夠消除批量交付業(yè)務(wù)價(jià)值交付中相互等待的時(shí)間,并且也能夠保證車輛在持續(xù)交付這條高速路上行駛得更快更穩(wěn)定。

5.2 車輛性能提升

前面車輛檢查可以說(shuō)是在車輛上路之前的檢查與保障,將質(zhì)量保證手段左移到研發(fā)階段。相對(duì)的,我們希望通過(guò)車輛性能提升的方法,在車輛上路后,能夠讓車輛行駛提速更快,拉高速度的上限。

  • 縱向測(cè)試能力提升

    • 精準(zhǔn)回歸:通過(guò)感知代碼的變化,推導(dǎo)出代碼變動(dòng)所影響的Case,讓質(zhì)量保障更為精準(zhǔn)且耗時(shí)更少

    • 場(chǎng)景覆蓋:結(jié)合線上流量回放,通過(guò)代碼覆蓋、場(chǎng)景覆蓋進(jìn)行查缺補(bǔ)漏,讓質(zhì)量保障更完整

    • 問(wèn)題定位:結(jié)合失敗用例,快速的進(jìn)行問(wèn)題定位與反饋

    • 同期化能力:結(jié)合云歌Case平臺(tái),通過(guò)接口定義進(jìn)行測(cè)試代碼與研發(fā)代碼同期化編寫能力的加強(qiáng),以及降低Case編寫和維護(hù)成本方面的探索

    • 降低數(shù)據(jù)干擾:基于高頻、隔離和用完即拋的理論實(shí)踐,降低日常環(huán)境的數(shù)據(jù)干擾,讓質(zhì)量保證更有效

  • 與線上數(shù)據(jù)挖掘結(jié)合

    • 結(jié)合線上真實(shí)場(chǎng)景以及場(chǎng)景覆蓋率,構(gòu)造線下回歸Case集,降低業(yè)務(wù)回歸Case維護(hù)成本,提升Case有效率,并且能夠快速定位問(wèn)題- 利用場(chǎng)景回放,以及記錄回放中間產(chǎn)物,解決在單測(cè)時(shí)場(chǎng)景構(gòu)造問(wèn)題

    • 利用線上日志分析,產(chǎn)出線上真實(shí)場(chǎng)景模型,降低壓測(cè)平臺(tái)語(yǔ)料準(zhǔn)備耗時(shí),場(chǎng)景篩選上做到精確、高效

    • 大數(shù)據(jù)分析:

    • 大數(shù)據(jù)運(yùn)用:

隨著持續(xù)交付快速通道的搭建完成,期望通過(guò)以持續(xù)交付體系為契機(jī),在多個(gè)縱向維度進(jìn)行深入挖掘,并完善整個(gè)持續(xù)交付體系,最終在更早(快)的交付業(yè)務(wù)價(jià)值的前提下,能夠有更高的質(zhì)量以及更低的人工成本,保證市場(chǎng)競(jìng)爭(zhēng)的先機(jī),讓高德在激烈的競(jìng)爭(zhēng)中優(yōu)勢(shì)更為明顯。
隨著持續(xù)交付快速通道的搭建完成,期望通過(guò)以持續(xù)交付體系為契機(jī),在多個(gè)縱向維度進(jìn)行深入挖掘,并完善整個(gè)持續(xù)交付體系,最終在更早(快)的交付業(yè)務(wù)價(jià)值的前提下,能夠有更高的質(zhì)量以及更低的人工成本,保證市場(chǎng)競(jìng)爭(zhēng)的先機(jī),讓高德在激烈的競(jìng)爭(zhēng)中優(yōu)勢(shì)更為明顯。
來(lái)源:本文轉(zhuǎn)載自高德技術(shù),點(diǎn)擊查看原文。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多