DevOps過程實踐

DevOps是什麼呢?百度百科給出的定義:DevOps(英文Development和Operations的組合)是一組過程、方法與系統的統稱,用於促進開發(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合,其目的是達到業務的快速交付。
   看到這裏,大家對DevOps有了一個整體的概念。但是不是還是覺得很抽象?看到這兒筆者也這麼認爲,那麼到底DevOps是什麼以及如何落地呢?
  其實,一方面,比較認同DevOps是工具的集合,是通過工具鏈打通業務、開發、測試、運維的部門牆,最終實現端到端的部署流水線。筆者認爲不管DevOps的文化和理念多麼高大尚,最終落地還是需要靠工具。另一方面,筆者認爲監控和快速反饋也是DevOps成功非常重要的部分,在通過工具集加速軟件生產過程中,對流水線的監控是非常必要的,這樣在任何環節出現問題,可以快速反饋到主責部門,主責部門纔可以快速去解決問題,並打通流水線的阻塞,形成閉環,達到業務快速交付的目的。
下面給出實現DevOps落地思路的開源工具集:
1、        Maven或gradle:管理依賴;
2、        GitLab:實現代碼管理、代碼協作、需求管理和看板管理;
3、        Junit:實現單元測試,構建內建質量;
4、        SonarQube:可視化代碼質量,度量技術債務;
5、        Docker:管理鏡像,保證測試、RC(預投產環境)等環境的一致性;
6、        Selenium/Appium/TestNg:實現接口自動化和功能自動化測試,提高測試質量和效率,實現質量快速反饋;
7、        HARBOR:管理鏡像製品庫,鏡像管理、存儲、分發全覆蓋;
8、        Kubernetes:實現運行環境容器化,搞定容器編排;
9、        ELK :實時可視化生產環境數據,搞定分析度量。
10、        Jenkins定義可視化流水線進行過程監控,持續交付引擎,支撐持續交付過程;

結合開源工具集DevOps流水線執行過程簡要描述如下:
1、        開發:基於新特性,需求從GitLab的看板中創建需求任務,開發將任務拖到看板的doing一欄並從master上拉取分支,建立自己的特性分支;完成單元測試代碼和功能代碼後進行特性代碼構建;
2、        開發:構建完成觸發Junit進行單元測試;
3、        開發:單元測試通過後,觸發SonarQube進行代碼靜態掃描;
4、        開發:靜態掃描通過後,將特性分支合併到Master分支,Master分支構建;
5、        開發:構建完成觸發Master單元測試;
6、        開發:測試通過後,觸發構建docker鏡像;
7、        開發:部署到測試環境;
8、        測試:自動觸發TestNg接口自動化測試和Selenium(Appium)功能自動化測試;
9、        測試:測試通過後,進行必要的手工測試;
10、        測試:測試通過後自動部署到RC環境;
11、        業務:自動化測試腳本在RC環境進行業務驗證;
12、        運維:驗證通過後自動部署到生產環境;
13、        運維:生產環境數據收集和監控;

下面以測試環節爲例,介紹下測試部門和開發部門是如何打通部門牆的:
1、        開發階段:自動化測試人員同開發人員並行編寫自動化代碼,將寫完的代碼放到GitLab庫中等待測試環境分支構建;
2、        測試環境構建:通過Jenkins監控測試分支,測試分支構建完後自動觸發接口自動化和功能自動化測試執行;
3、        自動化測試執行:自動化測試執行完畢之後自動發送郵件通知相關干係人並自動觸發後續環節。
筆者認爲,DevOps的最終實施需要羣策羣力,克服軟件生產流水線各個環節遇到挑戰。依舊以測試環節爲例,DevOps實施可預見的問題或挑戰包括:
1、        開發和測試自動化不能完全並行開展;
2、        人機交互的功能無法自動化實現,仍然依賴於手工;
3、        DevOps開展之後,持續化部署帶來的自動化測試投入不足;
4、        DevOps開展之後,快速交付會帶來的質量覆蓋率不足等;
   本文介紹了通過開源工具鏈實現DevOps落地的一種思路並結合測試環節進行舉例,以此拋磚引玉,希望可以啓發更多的思路。最後,需要說明的一點,雖然DevOps通過工具可以有效的落地,但是要實施好DevOps卻離不開標準或規範。以自動化測試爲例,如果要完全通過自動化測試進行DevOps的質量保證工作,減少手工干預,根據自動化測試金字塔原理需要採用分層的測試策略,即70%的單元測試,20%的接口自動化測試和10%的UI自動化測試。而這些百分比都可以認爲是標準,只有滿足了這些標準,DevOps質量保證環節才能更好的實現快速交付
發佈了31 篇原創文章 · 獲贊 16 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章