天天看點

從 CI_CD 到 DevOps

  在當下的數字化轉型浪潮中,其目标之一便是找到一種新的工作方式,使組織能夠更高效和輕松地應對快速的變化,同時以更快的速度向客戶傳遞更多價值。

  CI/CD 是一種在應用開發階段通過自動化的方式,頻繁向客戶傳遞應用的方法,其核心概念是持續內建、持續傳遞和持續部署。CI/CD 可以讓持續的自動化與監控貫穿整個生命周期,覆寫從內建到測試再到傳遞與部署,與之相關聯的事務通常被統稱為“CI/CD

管道”,具體實施則由開發和運維團隊以靈活開發的方式協作。

  持續內建 CI

  持續內建(CI)是支援疊代開發的重要概念,從 20 世紀 90 年代末開始流行,屬于開發人員的自動化流程。成功搭建的 CI 意味着應用代碼會定期更新、測試并合并到共享存儲庫中。這種方案可以解決在一次開發中有太多應用分支,進而導緻互相沖突的問題。

  現代應用開發的目标是讓多位開發人員同時處理同一應用的不同功能。但如果企業有“合并日”計劃,即計劃在一天之内合并所有分支源代碼,則可能造成工作繁瑣、耗時,而且需要手動完成所有工作。造成此困境的原因是,當一個獨立工作的開發人員在對應用進行更改時,可能也有其他開發人員在進行更改,這就會帶來沖突,而如果每個開發人員都有自定義的本地內建開發環境,而不是整個團隊基于雲的 IDE 達成一緻,那麼問題會更嚴重。

  基于此,持續內建 CI 可以有效改善上述問題。他可以幫助開發人員更頻繁地将代碼合并到共享分支或“主幹”中去,一旦開發人員對應用所做的更改被合并,系統就會通過自動建構應用并運作不同級别的自動化測試,來驗證這些更改,確定這些更改沒有對應用造成破壞。這也意味着測試内容會涵蓋從類和函數,到組成整個應用的不同子產品,如果自動化測試發現新代碼和現有代碼之間存在沖突,CI

則可以更加輕松快速地修複這些錯誤。

  持續內建是一種基礎技術,它可以幫助企業在實作目标的道路上,盡早并且經常性地釋出功能,進而為業務創造價值。

  持續傳遞、持續部署 CD

  持續傳遞最早是靈活方法中的一個概念,是将軟體傳遞過程從緩慢的節奏、較長的釋出周期轉變為快速、增量與疊代的方式的關鍵。有了這個概念,團隊便可確定開發的每個功能在任何時候都可以釋出到生産環境中,借助一些自動化平台和工具,隻需要按下一個按鈕,就可以釋出更改,無需等待滿場的測試和釋出周期。

  當然,想要達成持續傳遞,産品開發團隊需要采用一些重要的技術與實踐,根據《數字化轉型:企業破局的 34 個錦囊》一書中傳授的技巧,這些技術包括:

  建構包括業務人員的更小的跨職能團隊。

  将需求分節成更細粒度的、有價值的、可釋出的獨立單元。

  在“疊代”中工作,在開始下一個疊代之前,從開始到生産中完成一個小需求。

  編寫完全自動化的測試,建立安全的網絡環境。這樣,短的釋出周期就可以在沒有繁重的人工過程和工作的情況下得到适當的測試。

  使用自動化技術,以一緻的方式在從開發到生産的所有環境中啟用“一鍵”部署。

  将基礎設施“作為代碼”管理,以更容易地根據需要建立和重新建立環境,來消除瓶頸,實作可伸縮性和災難恢複。

  有了持續傳遞,團隊就可以確定在任何時候都能将開發的每個特性釋出到生産環境中。

  同時,CD 的另一個概念是指持續部署。對于一個成熟的 CI/CD 管道來說,最終階段的持續部署,是持續傳遞的延伸,持續部署可以自動将應用釋出到生産環境。持續部署在很大程度上需要依賴精心設計的測試自動化。

  實際上,持續部署意味着開發人員對應用的更改可能在更改完成之後的幾分鐘内就生效,這更有利于持續接收和整合使用者回報。總而言之,所有這些 CI/CD 的關聯步驟都有助于降低應用的部署風險,是以更便于頻繁釋出對應用的更改。

  對于一個成熟的 CI/CD 管道來說,最後的階段是持續部署。作為持續傳遞——自動将生産就緒型建構版本釋出到代碼存儲庫——的延伸,持續部署可以自動将應用釋出到生産環境。由于在生産之前的管道階段沒有手動門控,是以持續部署在很大程度上都得依賴精心設計的測試自動化。

  不過,在實施持續部署之前,還需要有自動化測試環節,以适應 CI/CD 中的各種測試和釋出階段。自動化測試可幫助實作持續傳遞,進而確定軟體品質和安全,并提高代碼生産效率。

  從 CI/CD 到 DevOps

  2009 年左右,持續傳遞成為靈活團隊的标準實踐,與此同時,另一種叫做 DevOps 的想法開始在開發者社群中流行開來。

  在大多數技術組織中,軟體開發和運維是兩項各自獨立的活動。軟體系統投入生産後,會有一個專門的團隊做運維工作,包括管理和維護生産環境、軟體配置、監視性能等等,并且處理生産過程中遇到的問題與處理使用者投訴等等。

  而從靈活開發,到持續傳遞的出現,再到 DevOps 概念的提出,其目的都是為促使企業更快、更頻繁地釋出軟體。

  近年來,許多以“解放開發者生産力”為宗旨的工具出現,其本意都是希望讓開發人員從繁瑣的重複性編碼工作中解放出來,而将精力集中在更高難度的設計和規劃層面。從 DevOps 概念之中,新一代全自動軟體開發平台正在普及。

​鄭州精神病醫院​​​​http://www.juenpt.com/​​

  近日,在有關基礎軟體黃金時代之下的新一代開發工具的讨論之中,飛算 SoFlu 全自動軟體工程平台頻頻出鏡。飛算雲智總裁陳定玮表示,飛算 SoFlu 全自動軟體工程平台可以實作一次開發、到處部署,後續不與平台本身強綁定,且整個平台使用可視化的模式面向 Java 開發,單從外表看與 BPM

模式類似,但内在邏輯有很大不同,平台上提供的每個元件都是一個技術點,類似于代碼塊。

  飛算 SoFlu 全自動軟體工程平台的出發點是想讓 DevOps 真正的落地,而實作“落地”,首先重點要解決的就是開發的問題, 包括開發的品質、安全和效率等,再逐漸解決測試和運維問題。

CI