閱讀610 返回首頁    go 技術社區[雲棲]


優雲經驗談:交付自動化的探索與展望

正如Kurt Bittner說的那樣,如果敏捷僅僅是個開始的話,那持續交付則是頭條!(我則更喜歡理解成高潮)。

“If Agile Was the Opening Act,Continuous Delivery is the Headliner!”——Kurt Bittner

現代企業要求軟件開發過程保持最大的工作效率,傳統的瀑布式開發早已跌入曆史洪流,甚至敏捷宣言也已超過10年的曆史,軟件開發在經曆了敏捷開發、持續集成後,正逐步邁入到持續交付的時代

持續交付是持續集成的延伸,強調以自動化、可視化的手段更快的將產品交付到客戶手中。持續交付的一個重要衡量指標就是從代碼提交直到客戶能使用這個功能所花費的時間,通過實行持續交付,這個時間往往可以從原先的幾天、幾周縮短到幾分鍾。當然,快速交付並不意味著不可靠。

那麼我們如何實施自己的持續交付?以我們實際項目為例,與大家進行一個探討,歸納起來,總共經曆了以下3個過程:

搭建持續集成環境

e44fa8c7a6700087cff6b84f883296571955a1e6

以Jenkins為核心搭建持續集成平台,每天定時從代碼庫中檢出最新的代碼進行編譯、構建。構建結果通知到項目組,開發人員隻需要關注每天的集成結果是否是綠的就可以了,同時加入測試環境部署及自動化測試。

48b86a254254d28b33f5f93dc23c502a8d8a85f6

圖1.自動部署測試環境

f44fff11ba154710efeb57d71d75562661dae4ba

圖2. Selenium自動測試

簡潔統一風格的代碼有利於大家更好的理解及進行走查,而單元測試則是為了前期高質量的交付。

6fd4e158c665ad3c3de9c42c3b7b54eba60daac6

圖3.單元測試統計

通過SonarQube+JaCoCo的引入,可方便的定位到存在問題的代碼行及單元測試情況。

9a4a8590fe4f1839ffbd553977c9089d49ad659d

圖4.問題定位

自動化測試流水線

持續交付講究Automate almost everything將一切過程自動化起來,減少人工的幹預。這裏我們主要加入了以下環節。

自動化的接口及集成測試

測試進入的越早,發現問題修複的成本越低,通過引入TestNG等測試框架,對接口以及模塊集成進行測試,有效的降低Bug流入後續環節的風險。

測試分級

將測試用例拆分成SmokingTest、AllTest等多套用例集,一方麵快速反饋代碼更新可能引起的風險,同時保證測試的有效覆蓋,同時通過分布式集群並發執行等方式,加速執行效率,最終形成以下的流水線。

067e89a357508c3431d5af41e0c70e5ef3736b79

圖5.管道流水線

自動化交付及全平台工具整合

在傳統模式下開發、測試、運維往往比較獨立,測試完成後由運維人員進行部署上線,但是由於運維人員能力水平存在高低,複雜環境下的發布往往隻有固定的幾人才能搞得定,從而導致上線發布周期被拉長。我們通過自建交付自動化工具,同時整合平台讓運維對外提供服務,消除開發、測試與運維之間的邊界,大大降低了自動化運維的門檻,讓運維效率有了很大的提升。

0fe037d49b56a5c913dee2753c2289f165406ada

圖6.交付自動化

通過作業流程的編排,沉澱標準化作業封裝,讓普通運維人員快速實現相應的自動化腳本,同時通過整合資源/環境,對開發測試提供資源申請、部署等服務,加速自動化發布的驗證,避免在正式發布時導致問題。

持續的反饋

上線發布完成並不意味著交付結束,當今社會是一個以服務取勝的社會,我們交付給用戶的不再是簡單的產品,更多的應該是服務。通過自動化的監控獲取用戶的反饋快速做出響應,不斷提升我們的服務,才能提高用戶的滿意度和粘性。

總結

持續交付是一套方法論,通用的並不一定適合自己。希望僅以本文做一個引子,讓大家尋找到適合自身的持續交付之路!附上一張交付過程中的工具集供大家參考。

19d4e8ea9657d078f082e5fa4891c4643bb4b46d

作者介紹

葛成遠,10年測試老兵,掉入運維領域而無法自拔。現任職優雲軟件:秉承devops的理念,從監控、到應用體驗,到自動化持續交付,全棧運維解決方案服務商。

優雲全線產品免費試用:https://www.uyun.cn

福利:

24381d748c401f2cc916fee0f904feec3fab5de4

沙龍時間:2017年4月23日(周日,13:30-17:35)

活動詳情:https://www.bagevent.com/event/450820

最後更新:2017-04-17 10:00:35

  上一篇:go 智能預約功能可以提升經營效率和服務品質!
  下一篇:go 1.3—Spring基礎配置—依賴注入