收藏!如何有效實施devops?

當今IT行業的競爭日益激烈,各家公司都在尋找優化軟體研發過程的方法,因為交付比對手更具競爭力的產品已經越發成為一件成本高昂的事情。這也是DevOps發揮作用的地方,因為它可以在工程管理的各個方面提供幫助。
瀑布開發模型已被廣泛使用多年,但它的開發、測試和運維在整個生命周期中是相對分離的。而今,隨著敏捷方法的不斷發展,持續集成和DevOps在某種程度上就變得越發重要。

實施原則

CAMS模型很好地闡述了DevOps的基本原則,其核心目標是實現過程自動化,以提高生產效率;通過持續地度量、回饋和改進,以確保快速交付的品質。
讓我們來進一步了解CAMS模型:
Culture(文化):DevOps提倡把溝通、技術、方法和工具緊密地聯繫在一起;
Automation(自動化):通過自動化來提高各環節活動的工作效率;
Measurement(度量):需要及時對關鍵過程和品質指標進行度量和回饋;
Sharing Feedback(回饋共享):通過共享回饋和建議,以獲得持續改進,應用最佳實踐來促進組織發展。

實施步驟

DevOps生命周期包括持續開發、持續集成、持續測試、持續回饋、持續監測、持續部署和持續運維。以持續交付為核心目標,DevOps將各項研發活動進行有機結合,以簡單化、高效化整個項目過程。

採用敏捷方法

通過實施短平快的敏捷研發過程,將整個項目過程分解為若干Sprint迭代,可以增加發布頻次,使產品的新特性、以及可能存在的問題得到儘早地檢測、發現和響應。提高生產率和交付品質,以期從有限的研發投入中,獲得更大的收益。DevOps生命周期包括持續開發、持續集成、持續測試、持續回饋、持續監測、持續部署和持續運維。以持續交付為核心目標,DevOps將各項研發活動進行有機結合,以簡單化、高效化整個項目過程。

集成CI/CD工具實現基礎設施自動化

DevOps使用微服務對系統進行更細粒度的拆解和管理,相對獨立的模組服務被分發到不同的容器中。在這個階段,最常用的工具包括Ansible、Puppet、Chef、Kubernetes。為了獲得最佳的配置管理和應用部署效果,這些工具可以很容易地與CI/CD工具(如Bamboo、GoCD和Jenkins)進行集成,從而有效地實現持續集成。

容器化

Docker是著名的容器引擎,通過將相對獨立的業務模組分解到不同的容器中,提供盡量松耦合的無狀態服務。通過容器,可以無縫、高效地將已驗證的軟體從測試伺服器遷移、部署到生產環境中。同整個IT基礎設施相隔離的容器具備更好的可遷移性和可控性,這也是容器化作為DevOps基礎設施管理的一個重要原因。

部署階段

這個階段,涉及應用在生產環境伺服器上部署和運行。經過驗證的軟體,最終將被部署到生產環境中,服務於終端用戶。自動化的配置和部署是這一階段的關鍵活動,它執行快速、準確的部署,並建立功能、性能、穩定和安全性等方面的統一化監控和管理。
任何更新必須以不干擾已部署且運作良好的功能的方式進行發布,遵循「快速失敗」的方法,新部署的特性或變更,將及時地接受用戶的使用和驗證。這個階段可用於部署的一些工具有Ansible、Chef、Puppet等。

持續監測

使用監測工具,讓掌控生產服務品質狀態變得更為簡單和快捷。這個階段也需要分析從內部團隊和用戶那裡獲得的回饋,並及時作出響應和跟蹤處理。持續監測有助於對問題做出快速發現和響應,保持服務的可用性、穩定性,它還能協助我們追蹤和確認頻繁出現的問題的最新演進、潛在威脅和根本原因。在這個階段,性能和安全性問題可以得到有效捕獲和處理,藉助一些工具也能做到自動修復運維中的某類問題。
相比開發團隊,運維團隊在這一階段的參與程度更高。這個階段的主要工作在於監控用戶活動和系統響應的有效性、及時性,檢查系統是否有異常行為,以及跟蹤問題引發風險的進展。此時類似Nagios、Prometheus、Zabbix的自動化工具將發揮重要作用。

確保團隊間的持續回饋

通過不同團隊、角色間的有效溝通和協作,交付件、技術和過程方面的問題得到精準的定位和高效的解決,從而帶來生成過程和產品品質的整體持續提升。這也需要各個團隊與公司整體的DevOps目標保持高度的一致。
如在禪道項目管理軟體中,明確地將產品、項目、測試三者概念區分開,產品人員、開發團隊、測試人員,三者分立,互相配合,又互相制約,通過需求、任務、Bug來進行交相互動,任務直接指派到所屬團隊及個人,這種團隊內的及時溝通回饋有助於效率的提高。

禪道自主研發的自動化測試框架(禪道ZTF)與禪道無縫集成,可將禪道用例和自動化測試腳本一一綁定,執行的結果能提交到禪道中作為測試結果,執行失敗的腳本也可以自動創建Bug。自動化測試框架實現了與Jenkins持續集成功能打通。用戶發起任務後,通過ZTF自動執行測試腳本,把單元測試的結果回傳給禪道,二者合作打通了持續集成閉環。整個團隊內部實現持續回饋,使流程更靈活,調試過程更簡化,更是降低了Bug修復的成本。

結論

綜上所述,DevOps的實踐效果有賴於上述各項活動的有效開展。引入並推廣DevOps需要花費大量資源和成本,但一旦成功實施,便將受益匪淺。根據最近一項對2.5萬多名專業技術人員的調查,大多數成功實施DevOps的公司,在保持品質的前提下,持續迭代和發布的效率往往得到了指數級的提高。
儘管DevOps實施起來並不總是那麼容易,但有了規範的流程和良好的實踐,就能夠顯著提高生產率、降低成本、提高交付品質。據此,我們也可以預見,DevOps在未來將會被越來越廣泛地應用。

參考文獻:
Mitesh Patel .How to Do DevOps Effectively? [OL].(2020-05-08)
//dzone.com/articles/how-to-do-devops-effectively