DevOps 是一種使單個團隊能夠處理整個應用程式生命週期的實踐,包括開發、測試、釋出、部署、運營、展示和規劃。它是“Dev”(代表開發)和“Ops”(代表運營)兩個術語的混合。藉助 DevOps,我們可以加快企業交付應用程式和服務的速度。亞馬遜、Netflix 和其他企業都已有效地採用了 DevOps 來改善客戶體驗。
DevOps 生命週期是包含DevOps的一系列階段,用於參與開發和運營團隊任務,以更快地交付軟體。DevOps 遵循積極的流程,包括程式碼、構建、測試、釋出、部署、操作、演示和規劃。DevOps 生命週期遵循一系列階段,例如不間斷開發、不間斷整合、不間斷測試、不間斷監控和不間斷反饋。DevOps 生命週期的每個階段都與一些工具和技術相關聯以實現該過程。一些常用的工具是開源的,並且基於商業需求執行。DevOps 生命週期易於操作,並且支援令人滿意的交付。
DevOps 的 7 個原則
持續開發
持續整合
持續測試
持續部署/持續交付
持續監控
持續反饋
持續運營
1.持續開發
在持續開發中,程式碼是分階段連續編寫的,而不是一次性全部編寫完成。持續開發在 DevOps 中非常重要,因為每次建立、測試、構建和部署程式碼時,這都會提高效率。持續開發提高了程式碼的標準,簡化了修復缺陷、漏洞和瑕疵的過程。它有助於開發人員專注於建立高質量的程式碼。
2.持續整合
持續整合在 DevOps 中主要可以分為 4 個階段來解釋。具體如下:
從 SCM 獲取原始碼
構建程式碼
程式碼質量審查
儲存構建成果
上面提到的階段是持續整合的流程,我們可以使用任何適合我們在每個階段需求的工具,其中最流行的工具是用於原始碼管理(SCM)的GitHub,當開發人員在本地機器上開發程式碼時,他會將其推送到遠端儲存庫,即 GitHub,從這裏,有訪問許可權的人可以提取、克隆程式碼並進行必要的更改。透過使用Maven,我們可以將程式碼構建成所需的包(war、jar、ear)中,並可以測試 Junit 案例。SonarQube 執行程式碼質量審查,它將衡量原始碼的質量並以 HTML 或 PDF 格式生成報告。用於儲存構建依賴包的 Nexus 將幫助我們儲存使用 Maven 構建的依賴包,整個過程是透過使用持續整合工具Jenkins實現的。
3.持續測試
任何公司都可以使用敏捷和 DevOps 方法部署持續測試。根據我們的需求,我們可以使用自動化測試工具(如Testsigma、Selenium、LambdaTest等)執行持續測試。藉助這些工具,我們可以測試程式碼並防止問題,以更快、更智慧地方式進行測試。藉助 Jenkins 等持續整合平臺,整個過程可以實現自動化,這是另一個額外的好處。
4.持續部署/持續交付
持續部署:持續部署是應用程式在完成測試和構建階段後自動部署到生產環境的過程。在這裏,我們將自動化從獲取應用程式原始碼到部署應用程式的所有過程。
持續交付:持續交付是應用程式完成測試和構建階段後手動將其部署到生產伺服器的過程。在這裏,我們將自動化持續整合過程,但是,將其部署到生產環境仍然需要手動參與。
5.持續監控
如果沒有持續監控,DevOps 生命週期就不完整。藉助 Prometheus 和 Grafana 可以實現持續監控,我們可以持續監控並在出現任何問題之前收到通知,藉助 Prometheus,我們可以收集許多效能指標,包括 CPU 和記憶體利用率、網路流量、應用程式響應時間、錯誤率等。Grafana 可以直觀地表示和跟蹤時間序列資料,例如 CPU 和記憶體利用率。
6.持續反饋
一旦應用程式投放到市場,終端使用者就會使用該應用程式,他們會向我們反饋應用程式的效能以及影響使用者體驗的任何故障。在收到來自終端使用者的多個反饋後,DevOps 團隊將分析終端使用者的反饋,並與開發團隊聯絡,糾正他們在這段程式碼中執行的錯誤。這樣,我們可以減少當前開發中的錯誤或缺陷,併爲終端使用者提供更有效的結果,同時我們還可以減少部署應用程式的任何不必要的步驟。持續的反饋可以提高應用程式的效能,減少程式碼中的錯誤,使終端使用者可以更好更順利使用應用程式。
7.持續運營
我們將透過實施持續運營讓應用穩定正常執行更長時間,這將有助於減少我們對服務產生問題以後得維護時間。更高的產量、更低的製造成本和更好的質量控制是持續運營帶給我們好結果。
DevOps 生命週期的不同階段
計劃:專業人員在此階段確定商業需求並收集終端使用者意見。在此步驟中,他們設計專案計劃以最佳化業務影響併產生預期結果。
程式碼 ——此時,程式碼正在開發中。爲了簡化設計流程,開發團隊使用生命週期 DevOps 工具和 Git 等擴充套件來幫助他們防止安全問題和不規範的編碼標準。
構建——程式設計師完成任務後,使用Maven、Gradle等工具將程式碼提交到公共程式碼源。
測試 ——爲了確保軟體完整性,首先將產品交付到測試平臺,利用 JUnit、Selenium 等工具執行各種測試用例,例如使用者可接受性測試、安全性測試、整合測試、壓測等。
釋出 ——此時,構建已準備好部署到測試環境中。當構建根據組織需求滿足所有檢查時,DevOps 部門將準備更新或將多個版本傳送到生產環境。
部署 ——使用各種 DevOps 生命週期工具釋出構建。
運營 ——藉助 Chef 等工具,管理伺服器配置和部署。
監控 ——根據從使用者行為、應用程式效率和其他來源收集的資料,在此級別觀察 DevOps 工作流程。觀察整個環境的能力有助於團隊識別影響生產和運營團隊績效的瓶頸。