持續(xù)交付發(fā)布可靠軟件的系統(tǒng)方法(部署流水線)第五章:部署流水線解析

《持續(xù)交付發(fā)布可靠軟件的系統(tǒng)方法》讀書(shū)筆記

什么是部署流水線

部署流水線是指軟件從版本控制到用戶(hù)手中這一過(guò)程的自動(dòng)化表現(xiàn)形式。
價(jià)值流圖

產(chǎn)品可行性評(píng)估 產(chǎn)品探索 產(chǎn)品計(jì)劃與評(píng)估 開(kāi)發(fā) 最后測(cè)試與審核 發(fā)布
3天 1周 7天 10天 10天 10天 3天 7周 1周 2天 2小時(shí)
  • 開(kāi)發(fā)到發(fā)布的流水線:會(huì)有很多次構(gòu)建通過(guò)這一流程走向最后的發(fā)布
  • 流水線各個(gè)階段:
    交付團(tuán)隊(duì)->版本控制庫(kù)->構(gòu)建和單元測(cè)試->自動(dòng)化驗(yàn)收測(cè)試->用戶(hù)驗(yàn)收測(cè)試->發(fā)布
  • 一般而言埋虹,只要某個(gè)構(gòu)建使這個(gè)流程任一階段失敗猜憎,都會(huì)停止,不會(huì)進(jìn)入下一個(gè)階段搔课。
    • 提交階段【自動(dòng)化測(cè)試(主要是單元測(cè)試)胰柑,代碼分析】
  • 自動(dòng)化驗(yàn)收測(cè)試階段【功能與非功能測(cè)試】
  • 手工測(cè)試階段【對(duì)自動(dòng)化測(cè)試的補(bǔ)充,探索性測(cè)試爬泥,集成測(cè)試等】
  • 發(fā)布階段【部署到生產(chǎn)環(huán)境或試運(yùn)行環(huán)境】

最基本的部署流水線

基本的部署流水線

部署流水線的相關(guān)實(shí)踐

  • 只生成一次二進(jìn)制包柬讨。對(duì)于不需要編譯的語(yǔ)言,二制包指的是所有源文件的集合袍啡。這些二進(jìn)制包應(yīng)保存在文件系統(tǒng)的某個(gè)位置踩官,讓流水線后續(xù)階段能夠輕松訪問(wèn)到,但不要放在版本控制庫(kù)中境输。二進(jìn)制包應(yīng)與環(huán)境無(wú)關(guān)蔗牡。
  • 對(duì)不同環(huán)境采用同一部署方式
    • 使用屬性文件保存配置信息。比如分別為每個(gè)環(huán)境保存一個(gè)屬性文件嗅剖,并將其放在版本控制庫(kù)中辩越,部署時(shí),通過(guò)本地服務(wù)器的主機(jī)名來(lái)查找到正確的配置信粮,如果環(huán)境中有多臺(tái)服務(wù)器黔攒,可以將環(huán)境變量提供給部署腳本
    • 將配置放在一個(gè)目錄服務(wù)中(LDAP或ActiveDiretory)或數(shù)據(jù)庫(kù)中
  • 對(duì)部署進(jìn)行冒煙測(cè)試
    當(dāng)應(yīng)用程序部署時(shí),應(yīng)用一個(gè)自動(dòng)化腳本做下冒煙測(cè)試强缘。這個(gè)測(cè)試的流程是:
    • 啟動(dòng)用戶(hù)程序
    • 檢查主頁(yè)面
    • 檢查應(yīng)用程序所依賴(lài)的服務(wù)督惰,比如數(shù)據(jù)庫(kù),消息隊(duì)列等
  • 向生產(chǎn)環(huán)境的副本中部署
    如果預(yù)算充足旅掂,可以建立與生產(chǎn)環(huán)境一樣的環(huán)境
  • 每次變更都要立即在流水線中傳遞
    對(duì)于一些特殊情況赏胚,驗(yàn)收測(cè)試是比較耗時(shí)的,版本在驗(yàn)收測(cè)試時(shí)可能會(huì)產(chǎn)生沖突商虐,這時(shí)可以在單元測(cè)試結(jié)束時(shí)栅哀,將最近還沒(méi)構(gòu)建的所有變更全部拿來(lái)進(jìn)行構(gòu)建
  • 只要有環(huán)節(jié)失敗,就停止整個(gè)流水線

提交階段

  • 編譯代碼
  • 運(yùn)行一套提交測(cè)試【單元測(cè)試称龙,容易失敗的特定測(cè)試】
  • 為后續(xù)階段創(chuàng)建二進(jìn)制包
  • 執(zhí)行代碼分析檢查代碼的健康狀況
  • 為后續(xù)階段準(zhǔn)備工作,比如準(zhǔn)備后續(xù)測(cè)試所用的數(shù)據(jù)庫(kù)

自動(dòng)化驗(yàn)收測(cè)試之門(mén)

  • 每次提交后戳晌,應(yīng)立即運(yùn)行提交測(cè)試鲫尊,提交階段完成后,立即做驗(yàn)收測(cè)試沦偎,簡(jiǎn)單的驗(yàn)收測(cè)試為:運(yùn)行代碼疫向,查看主頁(yè)
  • 盡管驗(yàn)收測(cè)試非常有價(jià)值咳蔚,但它們的創(chuàng)建與維護(hù)成本也非常高,所以牢記不要把所有驗(yàn)收測(cè)試條件盲目的自動(dòng)化

后續(xù)的測(cè)試階段

部署流水線應(yīng)支持測(cè)試人員根據(jù)自己的需求將任意一個(gè)版本部署到自己的測(cè)試環(huán)境

  • 手工測(cè)試
  • 非功能測(cè)試

發(fā)布準(zhǔn)備

把發(fā)布環(huán)節(jié)視為部署流水線的一個(gè)自然結(jié)果

  • 讓參與項(xiàng)目交付過(guò)程的人共同創(chuàng)建維護(hù)一個(gè)發(fā)布計(jì)劃
  • 通過(guò)盡可能多的自動(dòng)化過(guò)程最小化人的錯(cuò)誤發(fā)生的可能性
  • 在類(lèi)生產(chǎn)環(huán)境中經(jīng)常做發(fā)布流程演練
  • 如果事情并沒(méi)有按計(jì)劃執(zhí)行搔驼,要有撤銷(xiāo)本次發(fā)布的能力
  • 作為升級(jí)和撤銷(xiāo)過(guò)程的一部分谈火,制定配置遷移和數(shù)據(jù)遷移策略

自動(dòng)部署與發(fā)布

  • 在具有代表性環(huán)境上執(zhí)行自動(dòng)化驗(yàn)收測(cè)試套件
  • 對(duì)生產(chǎn)環(huán)境的任何修改都應(yīng)該通過(guò)自動(dòng)化過(guò)程完成【程序的部署,配置舌涨,軟件棧糯耍,網(wǎng)絡(luò)拓?fù)洌瑺顟B(tài)的所有修改)
  • 管理生產(chǎn)環(huán)境的流程囊嘉,也應(yīng)用于測(cè)試環(huán)境
  • 使用虛擬化技術(shù)温技,最佳配置管理降低成本

變更的撤銷(xiāo)策略

  • 讓舊版本仍舊處于可用狀態(tài),保持一段時(shí)間
  • 從頭部署舊版本

實(shí)現(xiàn)一個(gè)部署流水線

  • 對(duì)價(jià)值流建模扭粱,創(chuàng)建一個(gè)可工作的簡(jiǎn)單框架
  • 將構(gòu)建和部署流程自動(dòng)化
  • 將單元測(cè)試和代碼分析自動(dòng)化
  • 將驗(yàn)收測(cè)試自動(dòng)化
  • 將發(fā)布自動(dòng)化
    注意以下幾點(diǎn):
  • 增量實(shí)現(xiàn)整個(gè)流水線舵鳞,如果有手工操作部分,記錄開(kāi)始結(jié)束時(shí)間琢蛤,想辦法把它自動(dòng)化
  • 部署流水線是構(gòu)建蜓堕、部署、測(cè)試和發(fā)布整個(gè)流程中有效博其,也是最重要的統(tǒng)計(jì)數(shù)據(jù)來(lái)源
  • 不斷改進(jìn)部署流水線

度量

最重要的全局度量指標(biāo)是流水線周期時(shí)間套才。用約束理論來(lái)對(duì)流水線進(jìn)行優(yōu)化:

  • 識(shí)別系統(tǒng)中的約束
  • 確保最大限度地提高流程中這部分的產(chǎn)出
  • 根據(jù)這一約束調(diào)整其他環(huán)節(jié)的產(chǎn)出
  • 為約束環(huán)節(jié)擴(kuò)容,增加資源
  • 理順約束環(huán)節(jié)贺奠,找到下一個(gè)約束點(diǎn)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末霜旧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子儡率,更是在濱河造成了極大的恐慌挂据,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儿普,死亡現(xiàn)場(chǎng)離奇詭異崎逃,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)眉孩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)个绍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人浪汪,你說(shuō)我怎么就攤上這事巴柿。” “怎么了死遭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵广恢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我呀潭,道長(zhǎng)钉迷,這世上最難降的妖魔是什么至非? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮糠聪,結(jié)果婚禮上荒椭,老公的妹妹穿的比我還像新娘。我一直安慰自己舰蟆,他們只是感情好趣惠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著夭苗,像睡著了一般信卡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上题造,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天傍菇,我揣著相機(jī)與錄音,去河邊找鬼界赔。 笑死丢习,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的淮悼。 我是一名探鬼主播咐低,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼袜腥!你這毒婦竟也來(lái)了见擦?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤羹令,失蹤者是張志新(化名)和其女友劉穎鲤屡,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體福侈,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酒来,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肪凛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堰汉。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖伟墙,靈堂內(nèi)的尸體忽然破棺而出翘鸭,到底是詐尸還是另有隱情,我是刑警寧澤戳葵,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布就乓,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏档址。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一邻梆、第九天 我趴在偏房一處隱蔽的房頂上張望守伸。 院中可真熱鬧,春花似錦浦妄、人聲如沸尼摹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蠢涝。三九已至,卻和暖如春阅懦,著一層夾襖步出監(jiān)牢的瞬間和二,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工耳胎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惯吕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓怕午,卻偏偏與公主長(zhǎng)得像废登,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子郁惜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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