DevOps最佳實(shí)踐的九大支柱

DevOps的領(lǐng)導(dǎo)力實(shí)踐

  • 領(lǐng)導(dǎo)者表現(xiàn)出對組織方向和團(tuán)隊(duì)方向的長期愿景惹挟。
  • 領(lǐng)導(dǎo)者通過鼓勵他們提出新問題并質(zhì)疑有關(guān)工作的基本假設(shè)搪花,從智力上激勵團(tuán)隊(duì)搓谆。
  • 領(lǐng)導(dǎo)者提供鼓舞人心的溝通刁愿,激發(fā)加入團(tuán)隊(duì)的自豪感绰寞,對團(tuán)隊(duì)說積極的話,激發(fā)激情和動力铣口,并鼓勵人們看到變革帶來機(jī)遇滤钱。
  • 領(lǐng)導(dǎo)者通過在行動前考慮他人的個(gè)人感受,考慮他人的個(gè)人需求并關(guān)心個(gè)人的利益來表示支持脑题。
  • 領(lǐng)導(dǎo)者通過表彰團(tuán)隊(duì)做得比平均水平更好的工作件缸,表揚(yáng)工作質(zhì)量的提高,并稱贊個(gè)人的出色工作叔遂,從而提高個(gè)人知名度他炊。

DevOps的協(xié)作文化實(shí)踐

  • 這種文化鼓勵跨職能的協(xié)作和共同的責(zé)任,并避免開發(fā)掏熬,運(yùn)營和質(zhì)量保證之間的孤島佑稠。
  • 這種文化鼓勵從部門之間的失敗和合作中學(xué)習(xí)。
  • 在適當(dāng)?shù)那闆r下旗芬,使用協(xié)作工具(例如Slack舌胶,HipChat,Yammer)在端到端跨職能團(tuán)隊(duì)之間進(jìn)行順暢的溝通疮丛。
  • DevOps系統(tǒng)由一個(gè)專家團(tuán)隊(duì)創(chuàng)建幔嫂,并由包括Dev辆它,Ops和QA在內(nèi)的利益相關(guān)者聯(lián)盟進(jìn)行審核。
  • 端到端DevOps工作流程的更改由一個(gè)專家團(tuán)隊(duì)領(lǐng)導(dǎo)履恩,并由包括Dev锰茉,Ops和QA在內(nèi)的利益相關(guān)者聯(lián)盟進(jìn)行審核。
  • DevOps系統(tǒng)更改遵循分階段進(jìn)行的過程切心,以確保更改不會干擾當(dāng)前的DevOps操作飒筑。實(shí)施階段的示例包括:測試環(huán)境中的概念驗(yàn)證(POC)階段,有限的生產(chǎn)和部署到所有實(shí)時(shí)環(huán)境中绽昏。
  • 整個(gè)團(tuán)隊(duì)設(shè)置并監(jiān)視關(guān)鍵性能指標(biāo)(KPI)协屡,以始終驗(yàn)證端到端DevOps管道的性能。KPI包括部署新變更的時(shí)間全谤,交付頻率以及變更未能通過DevOps管道中任何階段的測試的次數(shù)肤晓。

DevOps的針對DevOps的設(shè)計(jì)實(shí)踐

  • 產(chǎn)品的架構(gòu)可支持模塊化的獨(dú)立包裝,測試和發(fā)布认然。換句話說补憾,產(chǎn)品本身被劃分為模塊,模塊之間的依賴性最小卷员。這樣盈匾,可以構(gòu)建,測試和發(fā)布模塊子刮,而無需一次全部構(gòu)建威酒,測試和發(fā)布整個(gè)產(chǎn)品。
  • 應(yīng)用程序被設(shè)計(jì)為模塊化挺峡,不可更改的微服務(wù)葵孤,可以根據(jù)12要素應(yīng)用程序的宗旨,而不是整體橱赠,可變的架構(gòu)尤仍,隨時(shí)準(zhǔn)備在云基礎(chǔ)架構(gòu)中進(jìn)行部署。
  • 在提交到集成分支之前狭姨,使用靜態(tài)分析工具預(yù)先檢查軟件源代碼的更改宰啦。靜態(tài)分析工具用于確保修改后的源代碼不會引起嚴(yán)重的軟件故障,例如內(nèi)存泄漏饼拍,未初始化的變量和數(shù)組邊界問題赡模。
  • 在提交到Integration / trunk分支之前,使用對等代碼審閱對軟件代碼更改進(jìn)行預(yù)檢查师抄。
  • 在提交給Integration / trunk分支之前漓柑,將使用動態(tài)分析測試對軟件代碼更改進(jìn)行預(yù)檢查,以確保軟件性能不會降低。
  • 將軟件更改與最新的集成分支版本一起集成在專用環(huán)境中辆布,并在將軟件更改提交到集成/中繼分支之前使用功能測試進(jìn)行了測試瞬矩。
  • 在簽入過程中使用軟件開關(guān)(即功能標(biāo)簽或切換按鈕)對軟件功能進(jìn)行標(biāo)記,以啟用選擇性功能級別的測試锋玲,升級和還原景用。
  • 在檢入代碼更改的同時(shí),將自動測試用例檢入到集成分支中惭蹂,同時(shí)還提供了證明在飛行前測試環(huán)境中通過了測試的證據(jù)伞插。
  • 開發(fā)人員至少每天一次定期提交代碼更改。

DevOps的持續(xù)集成實(shí)踐

  • 軟件版本管理(SVM)系統(tǒng)用于管理所有源代碼更改盾碗。(Git蜂怎,Perforce,Mercurial等)
  • 軟件版本管理(SVM)系統(tǒng)用于管理構(gòu)建過程中使用的所有版本的代碼映像更改置尔。(Git,Perforce氢伟,Mercurial等)
  • 軟件版本管理(SVM)系統(tǒng)用于管理在構(gòu)建過程中使用的工具榜轿,基礎(chǔ)結(jié)構(gòu)配置和測試的所有版本。(Git朵锣,Perforce谬盐,Mercurial等)
  • 所有生產(chǎn)軟件更改都保存在代碼的單個(gè)主干或集成分支中。
  • 用于支持每個(gè)客戶版本的軟件版本在單獨(dú)的版本分支中維護(hù)诚些,以支持針對每個(gè)版本更新的軟件飞傀。
  • 每個(gè)軟件提交都會自動觸發(fā)代碼中該提交已更改的模塊所有組件的構(gòu)建過程。該系統(tǒng)經(jīng)過精心設(shè)計(jì)诬烹,因此資源始終足以執(zhí)行構(gòu)建砸烦。
  • 一旦觸發(fā),只要構(gòu)建時(shí)間檢查成功绞吁,軟件構(gòu)建過程將完全自動化并生成構(gòu)建工件幢痘。
  • 自動構(gòu)建過程檢查包括單元測試。
  • 構(gòu)建資源按需可用家破,并且從不阻止構(gòu)建颜说。
  • CI構(gòu)建足夠快,可以在不到一個(gè)小時(shí)的時(shí)間內(nèi)完成增量構(gòu)建汰聋。
  • 根據(jù)更改的復(fù)雜性门粪,構(gòu)建過程和構(gòu)建資源會自動按比例放大和縮小。如果需要完整構(gòu)建烹困,則CI系統(tǒng)會自動水平縮放以確保構(gòu)建盡快完成玄妈。

DevOps的連續(xù)測試實(shí)踐

  • 在將開發(fā)變更集成到主干分支之前,需要在生產(chǎn)環(huán)境的克隆中進(jìn)行飛行前測試。(注:“生產(chǎn)環(huán)境”是指“產(chǎn)品的客戶配置變化”措近。)
  • 測試軟件變更所需的新的單元和功能回歸測試與代碼一起創(chuàng)建溶弟,并同時(shí)集成到主干分支中代碼是。然后瞭郑,新測試將用于在集成后測試代碼辜御。
  • 測試腳本標(biāo)準(zhǔn)用于指導(dǎo)測試腳本的創(chuàng)建,以確保腳本執(zhí)行預(yù)期的測試目的并且可維護(hù)屈张。
  • 根據(jù)特定的軟件更改自動選擇測試擒权。動態(tài)地對CT進(jìn)行編排,從而可以根據(jù)軟件更改的復(fù)雜程度或風(fēng)險(xiǎn)來加速或完全跳過部分CT測試套件的執(zhí)行阁谆。
  • 根據(jù)選擇的特定測試的資源要求和可用測試時(shí)間碳抄,自動縮放測試資源。
  • 版本回歸測試是自動化的场绿。如果必須手動執(zhí)行部分測試剖效,則至少有85%的測試是完全自動化的,其余的則是自動輔助的焰盗。
  • 發(fā)布性能測試是自動進(jìn)行的璧尸,以驗(yàn)證沒有發(fā)布不可接受的降級。
  • 藍(lán)色/綠色測試方法用于在激活活動環(huán)境之前在臨時(shí)環(huán)境中驗(yàn)證部署熬拒。A / B測試方法與功能切換鍵一起使用爷光,可以在單獨(dú)的實(shí)時(shí)環(huán)境中與客戶一起嘗試不同版本的代碼。Canary測試方法用于在選定的實(shí)時(shí)環(huán)境中嘗試新的代碼版本澎粟。
  • 整個(gè)測試生命周期(包括預(yù)檢蛀序,集成,回歸活烙,性能和發(fā)布驗(yàn)收測試)將在DevOps管道中自動進(jìn)行編排徐裸。每個(gè)階段的測試套件包括一組預(yù)定義的測試,可以根據(jù)預(yù)定義的標(biāo)準(zhǔn)自動選擇這些測試啸盏。

DevOps的彈性基礎(chǔ)架構(gòu)實(shí)踐

  • 構(gòu)建和測試構(gòu)建所需的數(shù)據(jù)和可執(zhí)行文件會自動頻繁存檔倦逐,并可根據(jù)需要恢復(fù)。存檔包括所有發(fā)行和集成存儲庫宫补。如果需要更新版本的較舊版本檬姥,則可以根據(jù)需要檢索并恢復(fù)用于構(gòu)建和測試該版本的環(huán)境,并且可以在短時(shí)間內(nèi)(例如粉怕,幾分鐘到幾小時(shí))完成該過程健民。
  • 構(gòu)建和測試過程足夠靈活,可以優(yōu)雅地自動處理各種異常贫贝。如果某個(gè)組件的構(gòu)建或測試過程無法完成秉犹,則將報(bào)告該故障組件的過程并自動安排進(jìn)行分析蛉谜,但其他組件的構(gòu)建和測試過程將繼續(xù)。如果系統(tǒng)可以糾正故障原因崇堵,則會自動分析并重新計(jì)劃組件故障的原因型诚;如果不是,則將其報(bào)告并暫停鸳劳。
  • 系統(tǒng)配置管理和系統(tǒng)清單存儲并維護(hù)在配置管理數(shù)據(jù)庫(CMDB)中狰贯。
  • 使用可確保冪等的配置管理工具來管理和自動化基礎(chǔ)架構(gòu)更改。
  • 自動化工具用于支持不變的基礎(chǔ)架構(gòu)部署赏廓。
  • 人人享有平等的表現(xiàn)涵紊。不同團(tuán)隊(duì)在構(gòu)建和測試過程中的用戶性能體驗(yàn)對于所有用戶都是一致的,而不受位置或其他因素的影響幔摸。有SLA和監(jiān)視工具可確保所有用戶的用戶性能體驗(yàn)都是一致的摸柄。
  • 提供了故障恢復(fù)機(jī)制。存在構(gòu)建和測試系統(tǒng)故障監(jiān)視既忆,故障檢測驱负,系統(tǒng)以及數(shù)據(jù)監(jiān)視和恢復(fù)機(jī)制。它們是自動化的患雇,并通過模擬故障條件進(jìn)行了持續(xù)驗(yàn)證电媳。
  • 經(jīng)常測試基礎(chǔ)架構(gòu)故障模式。
  • 災(zāi)難恢復(fù)過程是自動化的庆亡。

DevOps的連續(xù)監(jiān)視實(shí)踐

  • 日志記錄和主動警報(bào)系統(tǒng)使檢測和糾正DevOps系統(tǒng)故障變得容易。對于大多數(shù)DevOps組件故障捞稿,都有日志和主動系統(tǒng)警報(bào)又谋,并且以快速識別最高優(yōu)先級問題的方式進(jìn)行組織。
  • 來自每個(gè)DevOps管道階段的每個(gè)指標(biāo)的快照和趨勢結(jié)果(例如娱局,構(gòu)建彰亥,工件,測試)將在過程中自動計(jì)算衰齐,并且對于開發(fā)任斋,質(zhì)量保證和運(yùn)營團(tuán)隊(duì)的每個(gè)人都是可見的。
  • DevOps基礎(chǔ)架構(gòu)組件的關(guān)鍵性能指標(biāo)(KPI)會自動收集耻涛,計(jì)算并顯示給訂閱它們的團(tuán)隊(duì)中的任何人废酷。示例指標(biāo)包括用于CI,CT和CD進(jìn)程的計(jì)算資源的可用性(正常運(yùn)行時(shí)間)抹缕,完成構(gòu)建的時(shí)間澈蟆,完成測試的時(shí)間,失敗的提交次數(shù)以及由于嚴(yán)重失敗而需要還原的更改次數(shù)卓研。
  • DevOps基礎(chǔ)架構(gòu)組件的度量標(biāo)準(zhǔn)和閾值會自動收集趴俘,計(jì)算并顯示給訂閱它們的團(tuán)隊(duì)中的任何人睹簇。示例指標(biāo)包括用于CI,CT和CD進(jìn)程的計(jì)算資源的可用性(正常運(yùn)行時(shí)間)寥闪,完成構(gòu)建的時(shí)間太惠,完成測試的時(shí)間,失敗的提交次數(shù)以及由于嚴(yán)重失敗而需要還原的更改次數(shù)疲憋。
  • 流程分析用于監(jiān)視和改進(jìn)集成凿渊,測試和發(fā)布流程。描述性的構(gòu)建和測試分析可推動流程改進(jìn)柜某。
  • 預(yù)測分析用于動態(tài)調(diào)整DevOps管道配置嗽元。為了分析測試結(jié)果,數(shù)據(jù)可能表明需要將更多的測試集中在故障趨勢較高的區(qū)域喂击。

DevOps的持續(xù)安全性實(shí)踐

  • 開發(fā)人員受權(quán)并受過培訓(xùn)剂癌,可以對安全性承擔(dān)個(gè)人責(zé)任。
  • 組織采用安全保證自動化和安全監(jiān)視實(shí)踐翰绊。
  • 所有正在使用的信息安全平臺都通過API公開了全部功能佩谷,以實(shí)現(xiàn)自動化功能。
  • 成熟的版本控制實(shí)踐和工具可用于DevOps環(huán)境中使用的所有應(yīng)用程序軟件监嗜,腳本谐檀,模板和藍(lán)圖。
  • 采用不變的基礎(chǔ)架構(gòu)思維方式裁奇,以確保生產(chǎn)系統(tǒng)處于鎖定狀態(tài)桐猬。
  • 安全控制是自動化的,以免妨礙DevOps的敏捷性刽肠。
  • 安全工具已集成到CI / CD管道中溃肪。
  • 只有經(jīng)過驗(yàn)證的憑據(jù)的受信任用戶才能訪問構(gòu)建或測試計(jì)算機(jī)上關(guān)鍵知識產(chǎn)權(quán)的源代碼。構(gòu)建和測試腳本不包含用于訪問任何具有知識產(chǎn)權(quán)的系統(tǒng)的憑據(jù)音五。對知識產(chǎn)權(quán)進(jìn)行了劃分惫撰,使得并非所有知識產(chǎn)權(quán)都存在于同一檔案中,并且每個(gè)檔案都有不同的憑據(jù)躺涝。

DevOps的持續(xù)交付實(shí)踐

  • 交付和部署階段是分開的厨钻。交付階段位于部署管道之前。
  • 將所有通過交付指標(biāo)的可交付成果打包并準(zhǔn)備使用容器進(jìn)行部署坚嗜。
  • 可交付使用的軟件包包括足夠的配置和測試數(shù)據(jù)夯膀,以驗(yàn)證每個(gè)部署。配置管理工具用于管理配置信息苍蔬。
  • 一旦實(shí)現(xiàn)可接受的交付措施棍郎,則來自交付管道的可交付物會自動推送到部署管道。
  • 根據(jù)預(yù)定指標(biāo)確定部署決策银室。整個(gè)部署過程可能需要幾個(gè)小時(shí)涂佃,但通常不到一天励翼。
  • 分階段部署到生產(chǎn)環(huán)境,以便可以及早發(fā)現(xiàn)失敗的部署并迅速隔離對客戶的影響辜荠。
  • 部署具有自動恢復(fù)和自我修復(fù)功能汽抚,以防部署失敗。

這是什么意思

DevOps是功能強(qiáng)大的工具伯病,可為使用它的組織帶來許多好處造烁。使用DevOps有效地實(shí)現(xiàn)性能取決于以下最佳實(shí)踐。通過遵循本博客中列舉的九個(gè)實(shí)踐支柱午笛,組織可以實(shí)現(xiàn)DevOps必須提供的性能潛力惭蟋。

參考

https://devops.com/nine-pillars-of-devops-best-practices/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市药磺,隨后出現(xiàn)的幾起案子告组,更是在濱河造成了極大的恐慌,老刑警劉巖癌佩,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件木缝,死亡現(xiàn)場離奇詭異,居然都是意外死亡围辙,警方通過查閱死者的電腦和手機(jī)我碟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姚建,“玉大人矫俺,你說我怎么就攤上這事〉г” “怎么了厘托?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贩虾。 經(jīng)常有香客問我,道長沥阱,這世上最難降的妖魔是什么缎罢? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮考杉,結(jié)果婚禮上策精,老公的妹妹穿的比我還像新娘。我一直安慰自己崇棠,他們只是感情好咽袜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著枕稀,像睡著了一般询刹。 火紅的嫁衣襯著肌膚如雪谜嫉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天凹联,我揣著相機(jī)與錄音沐兰,去河邊找鬼。 笑死蔽挠,一個(gè)胖子當(dāng)著我的面吹牛住闯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播澳淑,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼比原,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了杠巡?” 一聲冷哼從身側(cè)響起量窘,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忽孽,沒想到半個(gè)月后绑改,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兄一,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年厘线,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片出革。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡造壮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出骂束,到底是詐尸還是另有隱情耳璧,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布展箱,位于F島的核電站旨枯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏混驰。R本人自食惡果不足惜攀隔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望栖榨。 院中可真熱鬧昆汹,春花似錦、人聲如沸婴栽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽愚争。三九已至映皆,卻和暖如春挤聘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背劫扒。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工檬洞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沟饥。 一個(gè)月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓添怔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贤旷。 傳聞我的和親對象是個(gè)殘疾皇子广料,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348

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