1. 程式人生 > >DevOps建設流程

DevOps建設流程

DevOps建設流程——以雲巨集實施容器雲專案為例

從企業使用者容器雲的建設需求來看,容器雲的建設和DevOps二者之間的關聯性非常強。DevOps要求開發、測試、運維一體化,實現敏捷開發、敏捷部署和敏捷生產的目標。DevOps從計劃、編碼、構建,測試、釋出、部署,以及運營、監控打通,就是把敏捷開發部門和運維部門之間的圍牆打通,形成閉環。

通過對容器雲方案和微服務架構的整體考慮,DevOps分成以下過程

持續整合:開發人員研發的程式碼向軟體整體部分交付,頻繁進行整合以便快速發現問題。

持續交付:在已完成整合的程式碼上面將完成測試的程式碼部署到“類生產環境”中。

持續部署:已交付的程式碼在通過評審之後,自動部署到生產環境中。

持續監控:通過專業的監控軟體(如Prometheus等),按事先設定的監控策略,監控業務應用以及系統平臺的執行情況,形成監控報告和監控展示。

持續反饋:基於監控的結果作資料分析,提供建議方案,如針對應用的監控,實現應用的彈性伸縮等能力。

持續改進:基於反饋的意見,啟動新的改進計劃流程。

結合雲巨集在WinGarden容器雲平臺的豐富建設經驗,在建設DevOps時需重點考慮以下要點:

基於WinGarden容器的CI/CD DevOps

通過基於容器構建CI/CD的DevOps,通過持續整合/持續交付,考慮實現計劃流程自動化、資源選擇自動化、程式碼質量控制自動化、構建自動化等流程。藉助相應的工具鏈,來提升對業務需求的響應能力和敏捷的開發能力:

在資源選擇自動化,可結合與企業現有的IaaS資源層對接,實現資源申請自動化,將容器或微服務部署在對接的雲平臺,也可以結合雲平臺的多租戶能力,實現資源的隔離,在應用部署的時候自動選擇在其專案組或指定資源池。

程式碼質量控制自動化。開發人同在編寫完成後,提交到SVN或Git,通過在Jenkins中整合findbugs檢查程式碼bug,藉助於Sonar等工具來實現程式碼質量的自動檢查。

構建自動化,採用容器雲後就是構建映象。在程式碼檢查完畢後,自動啟動構建流程,可以使用基於Jenkins的工具,支援建立多種流水線,如Maven專案、多Stage Docker專案和傳統Docker專案。它可以整合SVN或Git,Sonar,Maven等眾多工具,是非常方便的構建自動化實現方式。

映象構建完畢,上傳到映象倉庫。開發工作暫告一段落,需要準備測試環境進行測試。測試完成沒有問題的話,可自動交付到生產映象倉庫。

通過雲巨集的WinGarden CI/CD平臺可大幅度提升持續部署及運營過程效率,保證開發、測試及生產環境一致性。

基於容器的持續交付團隊協作

雲巨集WinGarden基於容器技術,提供一套完整的DevOps解決方案,實現了Code to Cloud全流程自動化。企業的開發者只需要關注最核心的程式碼層面,接下來的測試、構建、整合、部署等過程,都可以由WinGarden平臺自動化完成。WinGarden平臺通過映象tag進行版本的識別和控制,實現灰度釋出和回滾。

基於容器的持續交付實踐當中,以映象在不同職能人員之間傳遞。

開發人員:頻繁提交持續整合,通過持續的編譯、打包、測試、映象構建、自動化驗收測試等環節,產生可測試的候選映象列表。

測試人員:從候選測試映象列表中,選擇需要測試的目標映象,標記為測試版本,並且將待測試映象自動部署到驗收測試環境,完成手動探索性測試,對於已測試完成的映象標記為預釋出版本。

運維人員:從預釋出映象列表中選擇映象部署到預釋出環境,並且在驗證通過後標記為release版本並且釋出到生產環境。

持續監控和集中分析的能力

日誌、監控是業務運營過程中判斷執行是否正常的重要基礎能力,持續監控就是實現平臺各層次的健康檢查能力,包括基礎設施層、平臺層、應用層等。基礎設施層就是通常所說的IaaS層,包含儲存、網路、計算資源等;平臺層是容器雲平臺的能力,比如Docker引擎、容器編排排程、服務發現、負載均衡等;應用層需要實現對應用的程序、使用資源、網路流量等進行監控檢查,收集日誌。持續監控是實現日誌收集、健康檢查監控的自動化。

針對基礎設施層,雲巨集提供強大的MS雲監控平臺,不僅可以對計算、儲存、網路資源進行統一監控和展示,也可以對資料庫、中介軟體等應用進行統一監控管理。而WinGarden容器雲基於業內最先進的Prometheus方案,對容器和應用進行全方位的監控,提供使用者自定義個性化監控檢視,並支援郵件、簡訊等告警方式,通過預先設計的監控策略實現服務的自動伸縮。日誌採集與分析基於業界最先進的EFK方案,實現系統日誌和容器日誌雙重採集。

通過對基礎設施層、平臺層和應用層的集中監控和預先告警能力,可實現對應用的服務進行改進,實現了業務應用的全生命週期管理,在各個階段實現自動化,提升了效率和響應能力。