DevOps 是一套圍繞軟件開發(fā)生命周期的最佳實(shí)踐,以及不斷改進(jìn)和更有效地交付價(jià)值的實(shí)踐。我們已經(jīng)奠定了基礎(chǔ),讓我們來探索一些 DevOps 的最佳實(shí)踐。該列表不應(yīng)該是詳盡無遺的,而是包含提示和指導(dǎo)的指南,可以幫助您輕松采用健康的 DevOps 文化。
1. 培養(yǎng)協(xié)作和無責(zé)溝通的文化
首先,要使這一旅程取得成功,我們必須高度關(guān)注培養(yǎng)一種允許人們自由協(xié)作并消除對失敗恐懼的文化。提倡信任和同理心等價(jià)值觀的組織和團(tuán)隊(duì)在采用 DevOps 實(shí)踐方面往往具有很大優(yōu)勢。打破團(tuán)隊(duì)之間的孤島,讓他們朝著一個(gè)共同的目標(biāo)共同努力,為公司帶來價(jià)值。 Spacelift 是為 IaC提供增強(qiáng)協(xié)作層的工具之一。在 Spacelift,您可以邀請安全和合規(guī)團(tuán)隊(duì)合作并批準(zhǔn)工作流程和政策。
2. 采用持續(xù)集成和交付 (CI/CD)
經(jīng)常將小批量代碼集成到中央代碼存儲(chǔ)庫是一種允許開發(fā)人員有效協(xié)作的做法。使用這種方法,存儲(chǔ)庫始終保持良好狀態(tài),因?yàn)槲覀円肓烁子谔幚淼男「?。持續(xù)集成 (CI) 可以實(shí)現(xiàn)早期錯(cuò)誤檢測并提高代碼質(zhì)量,因?yàn)檫@些小批量更改每次都通過自動(dòng)構(gòu)建和測試進(jìn)行驗(yàn)證。 集成我們的代碼后的下一步是將其部署到我們的環(huán)境中。持續(xù)交付 (CD) 是針對每小批量更改持續(xù)將代碼置于可部署狀態(tài)的做法。這簡化了我們的部署,并為我們的開發(fā)人員提供了一種將代碼推送到生產(chǎn)環(huán)境的簡單自動(dòng)化方法。
3. 設(shè)置自動(dòng)化測試
上一點(diǎn)的延續(xù)和 DevOps 成功的一個(gè)組成部分是設(shè)置和策劃有意義的自動(dòng)化測試,作為我們 CI/CD 管道的一部分。這樣,我們就不再依賴人類對我們的代碼進(jìn)行手動(dòng)測試;取而代之的是,我們設(shè)置了在引入的每一個(gè)微小變化上運(yùn)行的自動(dòng)化測試。 通過增加測試頻率和測試數(shù)量,我們減少了將錯(cuò)誤引入生產(chǎn)系統(tǒng)的機(jī)會(huì)。測試因用例而異,但通常可能包括單元測試、集成測試、端到端測試、負(fù)載測試、冒煙測試等。
4. 關(guān)注可觀察性并找到正確的指標(biāo)
DevOps 實(shí)踐基于獲得反饋和不斷改進(jìn)我們的流程。我們需要找到并跟蹤正確的指標(biāo)來實(shí)現(xiàn)這一目標(biāo)并衡量我們的結(jié)果。找出正確的指標(biāo)是每個(gè)組織都必須經(jīng)歷的艱巨旅程。 這些指標(biāo)因組織和團(tuán)隊(duì)而異,具體取決于目標(biāo)和所針對的關(guān)鍵結(jié)果。盡管如此,它仍然是取得成功的關(guān)鍵練習(xí)。DevOps 指標(biāo)的一些典型示例是部署時(shí)間、部署頻率、部署失敗率、關(guān)鍵服務(wù)的可用性、 平均檢測時(shí)間、平均恢復(fù)時(shí)間、 單位成本、代碼覆蓋率和更改提前期。 向前邁出一步,我們還必須關(guān)注在生產(chǎn)中運(yùn)行的應(yīng)用程序和軟件的可觀察性。我們必須定義一種策略來有效地存儲(chǔ)、管理和分發(fā)我們的應(yīng)用程序的日志、跟蹤和指標(biāo),以快速解決問題、提高系統(tǒng)的可理解性并讓我們的團(tuán)隊(duì)高效運(yùn)作。
5. 使用自動(dòng)化避免手動(dòng)工作
通過減少手動(dòng)工作和自動(dòng)化重復(fù)性任務(wù),我們加快了流程并提高了結(jié)果的一致性。自動(dòng)化可以讓我們專注于重要的事情,避免人為干預(yù)。它還為我們的系統(tǒng)和流程提供了更多信心,消除了人為錯(cuò)誤和溝通不暢,并提高了團(tuán)隊(duì)的績效。
6. 在開發(fā)生命周期的早期加入安全性
安全性不應(yīng)該是集成到軟件開發(fā)中的最后一件事。DevSecOps 的誕生強(qiáng)調(diào)在開發(fā)生命周期的早期考慮應(yīng)用程序和基礎(chǔ)設(shè)施的安全性,將安全性納入初始設(shè)計(jì)并將其集成到 CI/CD 管道中。 安全性應(yīng)該是不同團(tuán)隊(duì)和整個(gè)應(yīng)用程序生命周期共同承擔(dān)的責(zé)任,并且應(yīng)該被視為流程的一個(gè)組成部分,而不是可選的附加組件。最近,由于過去幾年惡意攻擊的增加,人們將重點(diǎn)放在保護(hù)軟件供應(yīng)鏈上。 在基礎(chǔ)設(shè)施領(lǐng)域,即使是最微小的錯(cuò)誤也可能導(dǎo)致嚴(yán)重中斷。這就是為什么 Spacelift 添加了一個(gè)額外的策略層,允許您獨(dú)立于您的基礎(chǔ)設(shè)施項(xiàng)目來控制可以執(zhí)行哪些代碼、可以進(jìn)行哪些更改、何時(shí)以及由誰來執(zhí)行。這不僅有助于保護(hù)自己免受壞人的侵害,還允許您實(shí)現(xiàn)自動(dòng)代碼審查管道。
7. 從事件中學(xué)習(xí)并圍繞它們構(gòu)建流程
在 IT 世界中,事件是不可避免的。你的團(tuán)隊(duì)準(zhǔn)備得多么充分并不重要。最終,您將不得不解決一個(gè)事件。在這些情況下,必須專注于無可指責(zé)的溝通,了解問題,與受影響的各方進(jìn)行有效溝通,并合作尋找解決方案。 解決問題同樣重要的是有一個(gè)過程來記錄事件并從中學(xué)習(xí)。事件解決后,花一些時(shí)間與您的團(tuán)隊(duì)一起制定事件后審查,并討論事件的處理方式。嘗試在事件處理過程中找到任何可能的改進(jìn),以幫助您下次避免出現(xiàn)。
8.首先關(guān)注概念,然后找到合適的工具
DevOps 領(lǐng)域的發(fā)展速度非常快,每天都會(huì)出現(xiàn)新的工具和服務(wù)。與其不斷集成新的閃亮工具和服務(wù),不如專注于理解允許公司通過 DevOps 實(shí)踐加速業(yè)務(wù)的核心概念。 只有理解了這些概念并相應(yīng)地優(yōu)先考慮缺失的部分,您才能成功地為工作選擇正確的工具。請記住,您將無法在團(tuán)隊(duì)中構(gòu)建所有內(nèi)容。在有意義的情況下,可以依賴DevOps 工具和托管服務(wù)。明智地利用團(tuán)隊(duì)的時(shí)間,嘗試了解您的內(nèi)部專業(yè)知識和需求,在有意義的時(shí)候努力構(gòu)建自定義工具,其余的依賴外部工具和服務(wù)。
9. 采用基礎(chǔ)設(shè)施即代碼 (IaC) 并推動(dòng)自助式基礎(chǔ)設(shè)施模型
云基礎(chǔ)設(shè)施應(yīng)被視為軟件開發(fā)的一個(gè)組成部分,并與應(yīng)用程序代碼同等對待。通過利用基礎(chǔ)架構(gòu)即代碼,我們可以將我們用于軟件開發(fā)的最佳實(shí)踐(例如版本控制和CI/CD)整合到基礎(chǔ)架構(gòu)創(chuàng)建中。該模型消除了通過UI 手動(dòng)設(shè)置和配置資源的需要,并進(jìn)一步加強(qiáng)了我們在整個(gè)IT 領(lǐng)域的自動(dòng)化工作。更改始終是可審計(jì)且透明的,當(dāng)出現(xiàn)問題時(shí),我們可以快速將基礎(chǔ)設(shè)施系統(tǒng)回滾到以前的狀態(tài)。提前考慮一步,而不是增加等待云基礎(chǔ)架構(gòu)工程師創(chuàng)建必要資源的另一個(gè)瓶頸,推動(dòng)自助服務(wù)基礎(chǔ)架構(gòu)模型。在此模型中,開發(fā)人員和任何需要基礎(chǔ)設(shè)施資源的人都可以利用一些工具來生成所需的部分。通過這種方式,我們提高了生產(chǎn)力和速度,同時(shí)為我們的開發(fā)人員提供了自主權(quán),所有這些都通過單一的工作流程實(shí)現(xiàn)。
想要了解更多關(guān)于DevOps資訊信息,請關(guān)注中培偉業(yè)金老師二維碼: