灰度發(fā)布,鏈接 Dev 與 Ops 的正確姿勢

原創(chuàng):?萬金?DevOps時(shí)代?2017-11-09 估計(jì)閱讀時(shí)間18分鐘

由《2017年DevOpsDays上海》同名演講整理



作者 | 萬金

編輯 | 濟(jì)萌

作者簡介

萬金

ThoughtWorks 高級顧問

15年知名外企與中國企業(yè)的IT從業(yè)經(jīng)驗(yàn)康栈,包括IBM,華為喷橙。具有8年云計(jì)算相關(guān)經(jīng)驗(yàn)啥么,多系統(tǒng)的研發(fā)和運(yùn)維經(jīng)驗(yàn),熟練掌握敏捷和DevOps方法論和實(shí)踐贰逾,具有軟件研發(fā)生命周期工具與流程改進(jìn)豐富經(jīng)驗(yàn)悬荣。《DevOps實(shí)施手冊:在多級IT企業(yè)中使用DevOps》譯者

序言

在軟件吞噬時(shí)間的時(shí)代疙剑,在IT基礎(chǔ)設(shè)施多樣性與分布式趨勢中氯迂,部署的復(fù)雜性與規(guī)模日益增加践叠,而大部分的軟件崩潰都發(fā)生在部署過程中。目前提高部署效率與穩(wěn)定性成為了一個(gè)嚴(yán)峻的挑戰(zhàn)嚼蚀。本文討論在原生云應(yīng)用的場景下如何將軟件高效穩(wěn)定的發(fā)布到用戶手中禁灼。在本文的末尾會(huì)暢想智能運(yùn)維給軟件發(fā)布與運(yùn)維工作帶來的新能力。

本文的四個(gè)部分:

數(shù)字化轉(zhuǎn)型的趨勢與挑戰(zhàn);

軟件發(fā)布的各種坑;

云原生應(yīng)用如何發(fā)布軟件;

下一站智能運(yùn)維轿曙。

(一)數(shù)字化轉(zhuǎn)型的趨勢與挑戰(zhàn)

1.1.分工協(xié)作提高效能達(dá)到增長極限

如果說到DevOps的精益弄捕,就不得不說亨利?福特將流水線引入到汽車生產(chǎn)當(dāng)中。為什么要說流水線呢导帝?我們在傳統(tǒng)企業(yè)轉(zhuǎn)型中所使用的成功經(jīng)驗(yàn)守谓,在現(xiàn)代數(shù)字化轉(zhuǎn)型的環(huán)境里沒有辦法繼續(xù)復(fù)制成功。

原因主要有以下幾點(diǎn):

第一舟扎,單一產(chǎn)品的競爭優(yōu)勢被行業(yè)外顛覆:傳統(tǒng)汽車產(chǎn)品積累了多年的競爭優(yōu)勢分飞,在電動(dòng)車出現(xiàn)后被顛覆悴务。比如特斯拉睹限,不使用機(jī)械引擎,競爭優(yōu)勢不再可持續(xù)讯檐。

第二羡疗,低價(jià)高質(zhì)不再是客戶選擇的關(guān)鍵因素:消費(fèi)水平提高和體驗(yàn)差異導(dǎo)致成本競爭不再是競爭的主要因素。相同的東西只要便宜一分錢都可能造成市場份額的巨大差距别洪。如果一款手機(jī)賣十塊錢會(huì)有市場嗎叨恨?在同學(xué)聚會(huì)的場合你會(huì)用十塊錢的手機(jī)拍照發(fā)朋友圈嗎?這種賦予商品的個(gè)性標(biāo)簽屬性挖垛,使得價(jià)格為主要競爭手段的情況已經(jīng)不復(fù)存在了痒钝。

第三,人的延伸價(jià)值觀局限(麥克盧漢筆下的所有商品都會(huì)以人的延伸的能力來衡量價(jià)值痢毒,而人類的能力種類是有限的,因此商品的總量也有局限的)∷途兀現(xiàn)在的主流產(chǎn)品,可以參考結(jié)婚時(shí)候需要的幾大件商品∧奶妫現(xiàn)在的住房里需要的大家電數(shù)量都是有限的(電視栋荸,冰箱,空調(diào)凭舶,洗衣機(jī))晌块,并且每一個(gè)電器品類的市場容量都是有限的。世界就就這么大帅霜,人口就這么多匆背,市場總量也是有限的。如果業(yè)務(wù)已經(jīng)達(dá)到飽和身冀,還有什么辦法可以擴(kuò)大市場钝尸?一個(gè)企業(yè)如果沒有增長是個(gè)非常大的問題蜂大,如何來刺激業(yè)務(wù)持續(xù)增長成為新的挑戰(zhàn)?

1.2.追求個(gè)性化用戶體驗(yàn)帶來新的增長

怎么解決市場增長乏力的問題?答案是追求個(gè)性化的體驗(yàn)蝶怔,因?yàn)槿说捏w驗(yàn)有無窮多種奶浦。女生都有這樣的感受,衣柜里永遠(yuǎn)都缺那么一件衣服踢星,就是你明天要穿的那一件衣服澳叉。我們買衣服并不是買紡織品這個(gè)產(chǎn)品,我們買的是穿衣服的體驗(yàn)沐悦,或者我們買的就是我有很多衣服的感覺成洗。

硬件和軟件的分離就提升了軟件的使用體驗(yàn)。以前IBM的郵件軟件使用體驗(yàn)不是很好藏否,作為IBM的員工自己也說 Lotus notes 郵件軟件使用體驗(yàn)不是很好瓶殃。這個(gè)是沒辦法的事情,在市場充分競爭的情況下副签,一個(gè)有著優(yōu)秀硬件基因的公司很難同時(shí)把軟件做到最好遥椿。展開來說,一個(gè)公司很難讓服務(wù)于消費(fèi)者的終端手機(jī)生產(chǎn)與銷售業(yè)務(wù)做得很好淆储;同時(shí)也在服務(wù)于全球前50的運(yùn)營商的電信設(shè)備市場也做得很好冠场,并且2B和2C同時(shí)成功。這樣的的成功非常少見本砰,即使是諾基亞做到的也只是暫時(shí)的成功碴裙。

服務(wù)與產(chǎn)品的分離,也提升了使用體驗(yàn)点额。就是說舔株,做產(chǎn)品但不把這個(gè)產(chǎn)品直接賣出去,而只把產(chǎn)品提供的服務(wù)租出去还棱。比如亞馬遜的云計(jì)算载慈,亞馬遜擁有這個(gè)云計(jì)算的平臺(tái),但是只以云計(jì)算的方式給客戶提供服務(wù)诱贿。對于賣硬件服務(wù)器的廠商IBM娃肿、戴爾、惠普來說亞馬遜賣的服務(wù)是不一樣的體驗(yàn)珠十,有不一樣的體驗(yàn)就帶來新的市場料扰。

業(yè)務(wù)與實(shí)現(xiàn)分離,提供了比內(nèi)部所提供的服務(wù)更專業(yè)焙蹭,更便捷晒杈。這樣就有了IT外包市場,一個(gè)企業(yè)如果生產(chǎn)一個(gè)產(chǎn)品或服務(wù)的成本高于采購成本就會(huì)采購該產(chǎn)品或服務(wù)孔厉。只有當(dāng)自己生產(chǎn)一個(gè)產(chǎn)品或服務(wù)低于采購成本才會(huì)自己生產(chǎn)該產(chǎn)品或服務(wù)拯钻,甚至向市場提供該產(chǎn)品或服務(wù)帖努。

使用與擁有的分離就是共享經(jīng)濟(jì)。由于維護(hù)一輛自行車比較麻煩(存放粪般,維修拼余,防盜),人們可能不會(huì)買一個(gè)自行車亩歹,但可以通過刷一下手機(jī)直接得到自行車交通服務(wù)匙监。消費(fèi)者買的是這種交通服務(wù),把存放小作,維修亭姥,防盜的事情交給共享單車公司。

我們說軟件架構(gòu)來自于建筑的概念顾稀,但是軟件研發(fā)的過程和建筑施工過程有著非常迥異的地方达罗。對于建筑來說,工程師有了圖紙后就確定完工后的樣子静秆,即使換一個(gè)開發(fā)商結(jié)果也沒有明顯區(qū)別粮揉。而對于軟件研發(fā)過程來說,我更愿意類比原型車的開發(fā)诡宗。當(dāng)一個(gè)原型車設(shè)計(jì)完成滔蝉,到買到這個(gè)原型車的量產(chǎn)車型,你會(huì)發(fā)現(xiàn)它們之間有很大的差別塔沃。這就是軟件的特點(diǎn)。即使按照軟件設(shè)白紙黑字簽下合同阳谍,當(dāng)拿到軟件發(fā)布時(shí)使用時(shí)候蛀柴,由于技術(shù)與業(yè)務(wù)的不確定性,實(shí)際軟件與設(shè)計(jì)階段差異很大矫夯。

總而言之鸽疾,企業(yè)把一部分業(yè)務(wù)外包出去,滿足個(gè)性化用戶體驗(yàn)训貌,在這個(gè)過程中產(chǎn)品/服務(wù)價(jià)值獲得了提升制肮。

1.3.傳統(tǒng)行業(yè)面臨數(shù)字化轉(zhuǎn)型的兩個(gè)挑戰(zhàn)

數(shù)字化轉(zhuǎn)型對傳統(tǒng)企業(yè)會(huì)帶來哪些挑戰(zhàn)?以下兩點(diǎn)揭示了答案所在:

第一點(diǎn)递沪,從內(nèi)部看是通過互聯(lián)網(wǎng)的工具提升內(nèi)部協(xié)作效率豺鼻。比如說:減少溝通的成本,并進(jìn)行可視化以及各部門之間的信息共享和協(xié)作款慨,提高這種協(xié)作的效率儒飒。

第二點(diǎn),如何把握用戶需求檩奠。這分為兩點(diǎn):首先是精確桩了。在不同場景下人們需要的產(chǎn)品是不一樣的附帽。比如:早上起來打開微信我可能看誰更新了什么東西,而晚上可能要看還有什么事情沒有做完井誉。一個(gè)產(chǎn)品在不同的場景蕉扮、時(shí)間、地點(diǎn)颗圣、環(huán)境下所需的特性是不同的慢显,這就是需求的準(zhǔn)確。其次是準(zhǔn)確欠啤。其實(shí)很多時(shí)候?yàn)槭裁次覀兊目蛻舳疾恢雷约阂裁醇栽澹恳驗(yàn)橐话愕耐ㄓ玫男枨笸耆粷M足了。這是一個(gè)生產(chǎn)過剩的時(shí)代洁段,你要挖掘客戶的需求应狱,通過不斷與客戶溝通,去了解客戶心里說不出的潛在需求祠丝,然后通過跟他不斷地互動(dòng)疾呻,達(dá)到他在那個(gè)時(shí)間那個(gè)場景下相對可以達(dá)到的服務(wù)。

(二)軟件發(fā)布的各種坑

本章節(jié)主要是介紹一下軟件發(fā)布過程中各種坑写半。上圖可以簡化地去看第一塊岸蜗,即:Codebase。所有的代碼和分支都在代碼庫中叠蝇。

第一個(gè)動(dòng)作是Build(構(gòu)建)璃岳,研發(fā)人員工作最終結(jié)果是以軟件包的形式交付一個(gè)可以運(yùn)行的軟件環(huán)境。

第二個(gè)是Verify(測試)悔捶,測試人員所有的工作都是在眾多可運(yùn)行的軟件中找到達(dá)到發(fā)布質(zhì)量的軟件铃慷。

最后是將軟件發(fā)布到生產(chǎn)環(huán)境中去。

上面各種復(fù)雜的分支蜕该、構(gòu)建犁柜、和可以測試的環(huán)境,下面是研發(fā)堂淡,測試馋缅,和發(fā)布,只有達(dá)到質(zhì)量要求才能進(jìn)入下一個(gè)環(huán)節(jié)绢淀。這個(gè)過程里面其實(shí)有非常多的手動(dòng)的工作萤悴,就導(dǎo)致了在研發(fā)過程中很多低效和沒有必要的動(dòng)作,或者不產(chǎn)生價(jià)值的動(dòng)作更啄。怎么去識(shí)別稚疹,如何避免研發(fā)過程中這些復(fù)雜的過程不會(huì)影響最后的Release(發(fā)布)?

那么對于上述過程,我們可以簡單的理解為以下三點(diǎn)內(nèi)容:

1. 軟件編譯復(fù)雜:

? 軟件編譯第三方依賴關(guān)系復(fù)雜内狗;

? 多技術(shù)棧解決方案復(fù)雜性高怪嫌;

? 多分支并行開發(fā)策略復(fù)雜;

2. 測試經(jīng)歷軟件測試環(huán)境類生產(chǎn)境等遷移:

? 測試環(huán)境搭建柳沙;

? 測試數(shù)據(jù)準(zhǔn)備岩灭;

? 界面測試無法自動(dòng)化;

3. 軟件發(fā)布過程無法保證不出問題:

? 發(fā)布流程與過程時(shí)間長赂鲤;

? 手動(dòng)或配置過程導(dǎo)致發(fā)布失斣刖丁;

打個(gè)比方:原來研發(fā)幾個(gè)月的產(chǎn)品数初,最后上線的話可能要持續(xù)兩三天上線(周末發(fā)布)找爱。這就像看一個(gè)美劇連續(xù)劇(研發(fā))泡孩,我看了一年的連續(xù)劇到年底要出一個(gè)電影版(發(fā)布)车摄,在最后的電影版里哪些環(huán)節(jié)沒有做,哪些環(huán)節(jié)鋪墊的不夠好仑鸥,都會(huì)在劇場版里發(fā)現(xiàn)問題吮播。如此復(fù)雜的過程要在短的時(shí)間內(nèi)重現(xiàn)一遍,這就是發(fā)布容易出現(xiàn)問題的根源眼俊。所以一個(gè)版本研發(fā)的功能越多意狠,最后部署的風(fēng)險(xiǎn)就越大。發(fā)布過程就是把手動(dòng)的過程全部重新再現(xiàn)一遍疮胖,所以非常容易出錯(cuò)环戈。

(三)云原生應(yīng)用如何發(fā)布軟件

3.1.Application Pass項(xiàng)目背景與挑戰(zhàn)

首先,說一下Application Paas的項(xiàng)目背景获列。我公司的客戶是歐洲的汽車制造企業(yè)谷市。其中一部分的IT項(xiàng)目是外包給了供應(yīng)商,這樣就會(huì)有很多的問題击孩。因?yàn)檫@個(gè)外包做這個(gè)項(xiàng)目,那個(gè)外包做那個(gè)項(xiàng)目鹏漆;所以不能有效把過往的項(xiàng)目整合起來形成合力巩梢。

客戶的痛點(diǎn)是,缺乏新技術(shù)新平臺(tái)的運(yùn)營能力艺玲。隨著項(xiàng)目的增多括蝠,管理成本也會(huì)增加,管理一個(gè)供應(yīng)商和管理十個(gè)饭聚、一百個(gè)帶來的復(fù)雜性差異是巨大的所以成本奇高忌警。在全球上線多個(gè)供應(yīng)商研發(fā)的不同銷售系統(tǒng),其運(yùn)維復(fù)雜程度可想而知秒梳,同時(shí)也很難實(shí)現(xiàn)功能的快速開發(fā)和上線法绵。

最后就是之前說到轉(zhuǎn)型的最后一個(gè)挑戰(zhàn):我們?nèi)绾握莆兆罱K客戶的需求箕速。我怎么和客戶互動(dòng)?我們不是通過人工發(fā)放調(diào)查問卷朋譬,而是要通過平臺(tái)的方式收集相關(guān)信息盐茎。這有利于研發(fā)出符合多樣化的用戶需求,并且成本可接受的產(chǎn)品徙赢。

3.2.DevOps軟件研發(fā)實(shí)踐

對于下DevOps實(shí)踐來說字柠,其中最主要的實(shí)踐是要做自動(dòng)化的部署(降低頻繁部署的成本)。首先要建立信任狡赐,并提供可見性窑业。運(yùn)維人員收到一個(gè)版本,卻不知道是新增的功能還是只是一個(gè)補(bǔ)丁枕屉。如何能讓運(yùn)維人員安心的部署到生產(chǎn)環(huán)境中去呢常柄?通過開放監(jiān)控給研發(fā)人員可以提高修改缺陷的速度的,最后是讓大家的上下文一致搀庶,讓研發(fā)和運(yùn)維工作在同一個(gè)上下文中拐纱。通過相同的考核指標(biāo)要求研發(fā)與運(yùn)維人員(比如可用性指標(biāo))來達(dá)到相互配合相互信任的目的。

然后是文化哥倔。首先要尊重工程師的文化秸架,要有責(zé)任共擔(dān)。一些創(chuàng)業(yè)的企業(yè)主說遇到的最大的問題就是:招聘的研發(fā)人員只管開發(fā)代碼咆蒿,上線的穩(wěn)定性和他們無關(guān)东抹,這個(gè)就沒辦法玩下去了。最后就是試錯(cuò)沃测,因?yàn)闆]有人可以保證軟件轉(zhuǎn)換一個(gè)環(huán)境就一定好用缭黔。我們?nèi)绾螐腻e(cuò)誤當(dāng)中學(xué)習(xí),或者說可控的失敗蒂破。在不會(huì)造成很大風(fēng)險(xiǎn)的錯(cuò)誤當(dāng)中學(xué)習(xí)馏谨,讓我們的軟件從長期的角度來看既具備功能快速上線能力又有高可用性,這就是我們最終的目標(biāo)了附迷。

3.3.部署與功能分離:從項(xiàng)目到平臺(tái)

本小節(jié)主要一下思路:

平臺(tái)部署能力與項(xiàng)目功能的分離惧互。開始我們講了很多的分離,如軟硬件的分離喇伯。而現(xiàn)在來說的是部署與功能的分離喊儡。比如:CRM軟件。為什么不能把軟件的部署抽取出通用的部署能力稻据,并通過不斷的迭代來升級平臺(tái)的部署能力呢艾猜?滿足平臺(tái)上每一個(gè)項(xiàng)目的自動(dòng)化部署,這樣就提升部署的體驗(yàn)。

對于研發(fā)和運(yùn)維來說匆赃,這種要求的體驗(yàn)是不一樣的淤毛。因?yàn)閷τ谘邪l(fā)來說,要具有應(yīng)對變化的彈性和適應(yīng)性炸庞。在金融行業(yè)里有很多的規(guī)則需要滿足钱床,流程需要彈性,不能違反紅線規(guī)則埠居。每個(gè)研發(fā)的檢查點(diǎn)查牌,轉(zhuǎn)到下一個(gè)流程規(guī)則是什么,都需要要滿足滥壕。運(yùn)維在生產(chǎn)環(huán)境需要穩(wěn)定性纸颜,又要隨時(shí)可以上線新功能,對于研發(fā)的適應(yīng)性和運(yùn)維穩(wěn)定性要求都需要滿足绎橘。

3.4.Dev和Ops需要兩個(gè)PaaS平臺(tái)

就如上圖所示的一樣胁孙。對于Dev和Ops來說,他們需要兩個(gè)PaaS平臺(tái):Application PaaS平臺(tái)和Production PaaS平臺(tái)称鳞。一個(gè)負(fù)責(zé)適應(yīng)性一個(gè)負(fù)責(zé)穩(wěn)定性涮较。

3.5.Application PaaS架構(gòu)

從Application PaaS的架構(gòu)的角度來講,底層是的資源層對接云計(jì)算資源層冈止。在這上面狂票,我們可以構(gòu)建兩層虛擬網(wǎng)絡(luò)。在研發(fā)虛擬網(wǎng)絡(luò)中的里熙暴,我們有Web層和App層闺属,其實(shí)就是對Jenkins做封裝。在App層有代碼管理周霉,自動(dòng)構(gòu)建掂器,環(huán)境管理,軟件包管理俱箱,發(fā)布管理国瓮,部署管理的核心能力工具。

這么多的核心功能狞谱,通過Web層的代碼流水線與用戶互動(dòng)巍膘。核心能力在下面,融合下面的核心能力芋簿,通過Web層定制來滿足客戶的多樣化的需求用以實(shí)現(xiàn)適應(yīng)性。為了保證生產(chǎn)環(huán)境穩(wěn)定璃饱,需要把研發(fā)和運(yùn)維要分開与斤,前面是研發(fā)的PaaS,后面是運(yùn)維的PaaS。在運(yùn)維PaaS下面是監(jiān)控和洞察的核心能力撩穿。

3.6.開源技術(shù)選型實(shí)現(xiàn)

我們公司的客戶還有一個(gè)需求就是不能被技術(shù)綁定磷支;同時(shí)還要引入一些多樣性,在相同的團(tuán)隊(duì)使用不同的工具去完成任務(wù)食寡。為了達(dá)到這種靈活性雾狈,我們可以選擇一些開源軟件。這就是我們在做這種咨詢的時(shí)候抵皱,會(huì)給客戶提供的可定制性善榛,也是客戶對Thoughtworks的認(rèn)可的一個(gè)原因。

3.7.試驗(yàn)性發(fā)布-灰度發(fā)布關(guān)鍵環(huán)節(jié)

首先呻畸,說一下灰度發(fā)布的定義移盆。它是在從0到1平滑過渡的方式完成軟件發(fā)布,有點(diǎn)像藍(lán)綠部署伤为,也有點(diǎn)像金絲雀發(fā)布咒循,對客戶是有篩選的分流機(jī)制。最后可以達(dá)到讓我們在安全的環(huán)境下讓軟件發(fā)布的風(fēng)險(xiǎn)在可控的范圍內(nèi)绞愚,這樣做不能保證不出錯(cuò)叙甸,但是會(huì)把出錯(cuò)的影響降低到可控范圍內(nèi),并不會(huì)對生產(chǎn)環(huán)境的用戶造成影響位衩。(灰度發(fā)布過程中是有真實(shí)用戶參與的)

對于灰度發(fā)布裆蒸,有這樣的三個(gè)環(huán)節(jié):

應(yīng)用監(jiān)控?cái)?shù)據(jù);

用戶分流規(guī)則蚂四;

遞進(jìn)發(fā)布策略光戈。

3.7.1.應(yīng)用監(jiān)控?cái)?shù)據(jù):Kibana應(yīng)用監(jiān)控

基于上節(jié),我們談一下監(jiān)控能力遂赠。使用Kibana的監(jiān)控能力久妆,在不同的灰度發(fā)布階段有三個(gè)方面的監(jiān)控考量。

首先是功能測試階段跷睦。功能測試階段提交到生產(chǎn)環(huán)境的邊緣節(jié)點(diǎn)環(huán)境筷弦,但是沒有真實(shí)客戶上來。這個(gè)階段會(huì)監(jiān)控錯(cuò)誤請求的返回抑诸。比如我測試階段有沒有反回404這樣的錯(cuò)誤烂琴,沒有錯(cuò)誤的話我們就進(jìn)入下一個(gè)階段。

然后是兼容性測試蜕乡。兼容性測試主要是測試接口是否有正確的返回結(jié)果奸绷。

最后在性能測試階段,對比新舊版本的性能延遲數(shù)據(jù)层玲。如果不存在性能惡化的現(xiàn)象就可以全網(wǎng)上線了号醉。

整個(gè)灰度發(fā)布過程從功能測試到兼容性測試反症,再到性能測試,在生產(chǎn)環(huán)境下逐步地升級擴(kuò)大范圍的過程畔派,就是來保證在安全可控的前提下來做灰度發(fā)布铅碍,做到對客戶零影響。

3.7.2.用戶分流實(shí)現(xiàn):k8s邊緣節(jié)點(diǎn)(Edge Node)

對于用戶分流實(shí)現(xiàn)來說线椰,我們要使用K8S邊緣節(jié)點(diǎn)的能力胞谈,用它作為生產(chǎn)環(huán)境持續(xù)交付的最終環(huán)境。有人會(huì)問:持續(xù)交付直接到生產(chǎn)環(huán)境中憨愉,那么你真的敢上線嗎烦绳?上線之后對客戶有影響怎么辦?解決辦法是:我們用前端的負(fù)載均衡把邊緣節(jié)點(diǎn)的用戶流量屏蔽掉莱衩,不會(huì)讓真實(shí)客戶進(jìn)來爵嗅。這個(gè)實(shí)踐與之前的類生產(chǎn)環(huán)境是不同的,它真的是生產(chǎn)環(huán)境的服務(wù)器笨蚁,配置完全一樣睹晒;但是區(qū)別是沒有真實(shí)客戶使用。

通過功能測試括细,性能測試環(huán)境伪很,然后我們來一步步把最新版本升級到全網(wǎng)。首先邊緣節(jié)點(diǎn)環(huán)境用來做自動(dòng)化功能測試奋单。通過了功測試后锉试,在新版本和舊的版本共存的情況下測試兼容性的問題,最后兼容性沒有問題的話览濒,就進(jìn)入下一步性能測試階段呆盖,直至全網(wǎng)發(fā)布

3.7.3.遞進(jìn)發(fā)布:Kubernetes滾動(dòng)升級

最后,本小節(jié)從總體解釋灰度發(fā)布的三個(gè)階段:

Phase-0 進(jìn)行功能測試贷笛,當(dāng)發(fā)布包通過持續(xù)交付測試環(huán)境的驗(yàn)證后应又,部署到生產(chǎn)環(huán)境的邊緣節(jié)點(diǎn)。配置發(fā)布包在生產(chǎn)環(huán)境下測試是否能正常工作乏苦,這是生產(chǎn)環(huán)境下安全地做持續(xù)交付的方式株扛。

Phase-1我們來做兼容性的測試,要做數(shù)據(jù)的隔離汇荐。舉個(gè)失敗的例子洞就,某個(gè)網(wǎng)站在做生產(chǎn)環(huán)境上的測試時(shí),真的產(chǎn)生了購買兩百臺(tái)洗衣機(jī)的訂單掀淘,并且快遞員打電話要求收貨(收貨200臺(tái)洗衣機(jī)旬蟋,畫面太慘不忍睹了)

最后是性能沒問題了,我就慢慢滾動(dòng)部署到全網(wǎng)環(huán)境了革娄。

總結(jié)一下咖为,灰度發(fā)布是什么秕狰?在生產(chǎn)環(huán)境最小范圍內(nèi)沒有真實(shí)用戶流量情況下,驗(yàn)證功能問題(無客戶影響實(shí)現(xiàn)持續(xù)交付)躁染;以及在較小的范圍內(nèi),驗(yàn)證兼容性和性能問題(少量用戶SLA可控)架忌;同時(shí)是在控制范圍內(nèi)保障用戶體驗(yàn)吞彤。那么在驗(yàn)證功能,兼容性和性能之后我們再全網(wǎng)發(fā)布叹放。這樣就大大降低了風(fēng)險(xiǎn)饰恕,提高發(fā)布質(zhì)量。

而以前的傳統(tǒng)發(fā)布過程是非黑即白的過程井仰。如果功能埋嵌,兼容性和性能出現(xiàn)問題會(huì)直接導(dǎo)致對所有用戶造成影響,造成嚴(yán)重的后果俱恶。那么通過灰度發(fā)布方式把風(fēng)險(xiǎn)控制在可接受的范圍內(nèi)雹嗦,才是實(shí)踐落地的可行性方案。

3.8.通過平臺(tái)能力開放合是,從單一產(chǎn)品競爭走向生態(tài)競爭

下圖講述的是:通過生態(tài)了罪,大家的合作來達(dá)到整體的價(jià)值提升。比如:有做平臺(tái)的公司聪全,有做平臺(tái)上特定業(yè)務(wù)的公司泊藕,有去把握這種用戶需求銷售產(chǎn)品的公司。有了很多最終服務(wù)客戶的公司之后难礼,反過來平臺(tái)也不斷發(fā)展壯大娃圆,同時(shí)用戶的體驗(yàn)也得到了提升。

為什么要有一個(gè)平臺(tái)蛾茉?現(xiàn)在有很多開源的或商業(yè)的技術(shù)讼呢,但是多的技術(shù)能不能為你所用呢?答案是依靠簡單的集成是不能滿足企業(yè)要求的臀稚。因?yàn)槠髽I(yè)有很多的限制條件吝岭,我們要把這些限制條件定義成平臺(tái)的流程和自動(dòng)化的過程。這樣平臺(tái)構(gòu)成了引入技術(shù)的能力吧寺,就是我們的第一個(gè)客戶挑戰(zhàn)窜管。

有一次客戶對我說:我們不太擔(dān)心Thoughtwork的技術(shù)顧問解決不了客戶的問題,而是擔(dān)心當(dāng)顧問完成工作后自己的外包員工技術(shù)水平搞不定這些新技術(shù)稚机,這才是客戶最擔(dān)心的問題幕帆。那么很多客戶的普通員工或者外包人員如何掌握新技術(shù)呢?答案是通過平臺(tái)降低新技術(shù)推廣的難度(平臺(tái)封裝技術(shù)細(xì)節(jié)赖条,通過現(xiàn)有員工熟悉的流程平滑推廣新技術(shù))失乾。

總之常熙,通過Application Paas平臺(tái),公司內(nèi)部團(tuán)隊(duì)來控制業(yè)務(wù)的方向碱茁;然后裸卫,把業(yè)務(wù)的實(shí)現(xiàn)和交付外包給在這個(gè)平臺(tái)上的供應(yīng)商。這就提升了業(yè)務(wù)實(shí)現(xiàn)和交付的體驗(yàn)纽竣。

舉一個(gè)小團(tuán)隊(duì)控制業(yè)務(wù)方向的例子墓贿。一家服裝企業(yè)”韓都衣舍“,負(fù)責(zé)設(shè)計(jì)團(tuán)隊(duì)只有三個(gè)人蜓氨,一個(gè)負(fù)責(zé)廣告聋袋,一個(gè)負(fù)責(zé)設(shè)計(jì)服裝,一個(gè)負(fù)責(zé)后面的與制造平臺(tái)對接穴吹。這個(gè)團(tuán)隊(duì)如果能設(shè)計(jì)出爆款的話幽勒,一年幾百萬的獎(jiǎng)金就拿到了。當(dāng)然你要有平臺(tái)港令,在制造效率提升的前提下啥容,才能來滿足服裝市場不斷化的多樣化的需求,以及用戶的精準(zhǔn)的需求缠借。

再則干毅,公司存在的意義是什么?公司存在的意義是:如果產(chǎn)品的生產(chǎn)成本低于購買成本那就自己生產(chǎn)泼返;但是硝逢,如果采購成本低于制造成本,那就采購绅喉,這就是公司存在的意義(一個(gè)公司不是什么都要自己做渠鸽,而是做自己擅長的產(chǎn)品其他的都外包出去)。比如說Kubernetes柴罐,我需要對資源進(jìn)行調(diào)度徽缚,但是我們不能自己做出一個(gè)Kubernetes。因?yàn)槟鞘遣豢赡艿母锿溃@是谷歌擅長的事情凿试,那么我們就外包出去。我們就做最核心的業(yè)務(wù)似芝,這是公司存在價(jià)值那婉;你做的成本一定比別人低,這就是你存在的價(jià)值党瓮。

這是某國內(nèi)大型通訊公司公有云實(shí)驗(yàn)性發(fā)布的方案详炬,在全球大概有二十多個(gè)數(shù)據(jù)中心,它最關(guān)鍵的實(shí)踐是包管理寞奸。而呛谜,我們之前講的都是在一個(gè)數(shù)據(jù)中心的內(nèi)網(wǎng)發(fā)布一個(gè)軟件在跳。

在全球范圍如何實(shí)現(xiàn)灰度發(fā)布?首先是策略隐岛,也許在不同的地域里面業(yè)務(wù)都是不一樣的猫妙,那么軟件包也是不一樣的。這要有更高一個(gè)層次的考量礼仗,并不是做了灰度發(fā)布之后吐咳,就可以在一個(gè)數(shù)據(jù)中心或者在所有的數(shù)據(jù)中心上線。這是需要有一個(gè)統(tǒng)一的考量元践,也是全球化帶來的改變。把業(yè)務(wù)差異從應(yīng)用邏輯中分離到數(shù)據(jù)中去童谒,就可以實(shí)現(xiàn)應(yīng)用的全球灰度發(fā)布了单旁。

(四)下一站智能運(yùn)維

最后,在本節(jié)讓我們暢想一下智能運(yùn)維的未來饥伊。當(dāng)說到智能的時(shí)候象浑,我們談的到底是什么呢?在丹尼爾?卡內(nèi)曼的著作《思考快與慢》中提到了一個(gè)概念琅豆,我們的大腦有快與慢兩種作決定的方式愉豺。

這兩種思考系統(tǒng):一個(gè)是不需要思考的;比如我和一個(gè)人交談茫因,很容易就可以感覺到對方的情感的變化——這是人情感的感知蚪拦,不需要思考就知道《逞海看電影不需要思考就知道這個(gè)電影是不是一個(gè)爛電影驰贷,這就是人的經(jīng)驗(yàn),不需要思考就能快速得出結(jié)論的思考系統(tǒng)洛巢。目前計(jì)算機(jī)并不擅長這樣思考系統(tǒng)括袒,因?yàn)橛?jì)算機(jī)的計(jì)算力和成本很難滿足這樣的系統(tǒng)。

第二種是需要邏輯思考稿茉。比如:查看監(jiān)控?cái)?shù)據(jù)锹锰,找到故障記錄,分析原因和關(guān)聯(lián)性漓库,最后解決問題恃慧。這個(gè)過程非常慢,但非常有效米苹。它的正確率也很高糕伐,缺點(diǎn)是這樣思考大腦會(huì)消耗大量能量。對于人工智能來說第二種思考系統(tǒng)正是計(jì)算機(jī)所擅長的蘸嘶。我們從第二種思考系統(tǒng)方式以及從數(shù)據(jù)的計(jì)算良瞧、數(shù)據(jù)關(guān)聯(lián)分析陪汽、系統(tǒng)的相關(guān)性入手解決問題。

這里需要闡述一個(gè)問題:牛頓發(fā)現(xiàn)了三大定律褥蚯,通過這三大定律推論得出物質(zhì)運(yùn)行的規(guī)律挚冤。但是,問題在于從科學(xué)研發(fā)到改變生活的周期和成本都是非常巨大的。就像沃爾瑪要規(guī)劃如何擺放貨物就有一個(gè)很好的實(shí)踐,啤酒和尿不濕只要放在一起就能賣得很好酪刀。還有像陰天時(shí)候甜品和蛋糕就賣得好劫瞳。對于這些關(guān)聯(lián)性不需要知道科學(xué)原理,只要按照這個(gè)結(jié)果去做就可以提高我們的銷售額朝卒。那我為什么要知道原理呢?也許當(dāng)了解了原理之后,就像那個(gè)啤酒和尿不濕的銷售關(guān)聯(lián)性在中國已經(jīng)失效了肤京,中國的父親在買尿不濕的時(shí)候不會(huì)去購買啤酒。那么茅特,一般情況下忘分,掌握關(guān)聯(lián)性并運(yùn)用到實(shí)際的工作中就能獲得收益。

4.1.軟件研發(fā)流程的數(shù)據(jù)化和個(gè)體在線化

軟件在研發(fā)過程當(dāng)中會(huì)產(chǎn)生很多的數(shù)據(jù)白修,比如需求實(shí)現(xiàn)的時(shí)長妒峦、發(fā)布頻率、部署前置時(shí)間兵睛,穩(wěn)定性肯骇,部署成功率、應(yīng)用錯(cuò)誤率等卤恳。上圖是業(yè)務(wù)相關(guān)的數(shù)據(jù)累盗,比如性能、用戶體驗(yàn)突琳、用戶增長若债、用戶滿意度,轉(zhuǎn)化率拆融、流失率等蠢琳。如果我們將上述這些串聯(lián)起來,比如說有一個(gè)客戶想花三千萬獲取新客戶镜豹,如果性能不好的話傲须,流失率就非常高(提示:頁面性能,點(diǎn)擊反映速度的數(shù)據(jù)與轉(zhuǎn)化率相關(guān)性是很容易查到的)趟脂;但是性能變化提高20%的轉(zhuǎn)化率泰讽,那么價(jià)值就直接可見了。

4.2.人工智能的作用

軟件在開發(fā)過程中有三個(gè)特點(diǎn):

1.軟件設(shè)計(jì)的不確定性。我們都知道拿到了軟件設(shè)計(jì)文檔并根據(jù)這份設(shè)計(jì)文檔來生產(chǎn)的軟件并不一定能有效果已卸。因?yàn)榉鹦F(xiàn)實(shí)中進(jìn)行交付軟件時(shí),如果客戶說還可以累澡,但是梦抢,要求加一個(gè)功能,才能通過驗(yàn)收愧哟。這不是加一個(gè)功能的問題奥吩,其實(shí)是委婉否定了你前面所有的軟件的價(jià)值。

2.質(zhì)量的不可見性蕊梧。對于軟件快速上線來說霞赫,如果你加班的話,短時(shí)間也能通過測試并上線肥矢;但是绩脆,短時(shí)間的測試沒有辦法能測到所有的問題。因?yàn)橐粋€(gè)好的軟件是寫出來的橄抹,短期測試沒有辦法保證軟件的質(zhì)量。

3.價(jià)值的不透明性惕味。對于價(jià)值的理解楼誓,就要說到我們大腦如何理解做事情的意義,我們生活的改變速度遠(yuǎn)遠(yuǎn)超出大腦的進(jìn)化速度名挥。比如一個(gè)原始人疟羹,他們做一面鏡子的意義就是用來打扮。但是禀倔,每天的軟件研發(fā)工作卻無法映射到最終上線上去榄融,那么這就顯得沒有多少意義。長此以往會(huì)對工作失去不斷改進(jìn)的動(dòng)力救湖。

那么對于上述問題愧杯,我們能不能通過人工智能對以往同類項(xiàng)目的過程數(shù)據(jù),制定出一條明確的研發(fā)過程鞋既。使得在研發(fā)力九,測試和發(fā)布的工作中,每個(gè)人都清楚的感覺到自己的工作對最終的產(chǎn)品起到的意義邑闺。那么跌前,這種人工智能數(shù)據(jù)化的方式就會(huì)給我們生活賦予意義,這就是我能想到并且能做的事情陡舅。

人工智能從研發(fā)和運(yùn)維過程中收集的大量數(shù)據(jù)入手抵乓,尋找關(guān)聯(lián)性使得工作的過程和結(jié)果直接產(chǎn)生聯(lián)系,從而連接了研發(fā)與運(yùn)維再到業(yè)務(wù)成功的鏈條,提升軟件研發(fā)過程的可預(yù)見性灾炭,為業(yè)務(wù)成功打下堅(jiān)實(shí)基礎(chǔ)茎芋。

---------------------------------------------我是說正事分割線----------------------------------------

既然您都這么用心的看完了,那就送個(gè)彩蛋吧咆贬。作者翻譯的《DevOps實(shí)施手冊》已經(jīng)發(fā)行败徊。

本書從如何開發(fā)企業(yè)自己的DevOps手冊入手,開發(fā)企業(yè)DevOps變革的商業(yè)案例掏缎,最后通過相互信任的企業(yè)文化將DevOps成果不斷擴(kuò)大到整個(gè)公司皱蹦。

據(jù)說作者近期會(huì)對本書重點(diǎn)章節(jié)進(jìn)行解讀,并在6月29日的《DevOps國際峰會(huì)暨DevOps金融峰會(huì)2018·北京》上簽名售書

DevOps國際峰會(huì)連接:https://www.huodongjia.com/event-1047513737.html

主要章節(jié)介紹:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末眷蜈,一起剝皮案震驚了整個(gè)濱河市沪哺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酌儒,老刑警劉巖辜妓,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異忌怎,居然都是意外死亡籍滴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門榴啸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孽惰,“玉大人,你說我怎么就攤上這事鸥印⊙Γ” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵库说,是天一觀的道長狂鞋。 經(jīng)常有香客問我,道長潜的,這世上最難降的妖魔是什么骚揍? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮夏块,結(jié)果婚禮上疏咐,老公的妹妹穿的比我還像新娘。我一直安慰自己脐供,他們只是感情好浑塞,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著政己,像睡著了一般酌壕。 火紅的嫁衣襯著肌膚如雪掏愁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天卵牍,我揣著相機(jī)與錄音果港,去河邊找鬼。 笑死糊昙,一個(gè)胖子當(dāng)著我的面吹牛辛掠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播释牺,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼萝衩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了没咙?” 一聲冷哼從身側(cè)響起猩谊,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤祭刚,失蹤者是張志新(化名)和其女友劉穎牌捷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涡驮,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡暗甥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捉捅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淋袖。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锯梁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情焰情,我是刑警寧澤陌凳,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站内舟,受9級特大地震影響合敦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜验游,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一充岛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耕蝉,春花似錦崔梗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春谈为,著一層夾襖步出監(jiān)牢的瞬間旅挤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工伞鲫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粘茄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓秕脓,卻偏偏與公主長得像柒瓣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子撒会,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容