企業實踐|基於軟體研運一體化DevOps平臺的應用解析

語言: CN / TW / HK

業務現狀分析

典型軟體開發趨勢:瀑布模型和敏捷模型共存(穩態敏態)

企業在發展過程中會面臨諸多的問題與挑戰,傳統企業的典型系統級產品開發和專案以瀑布模型和改進V模型為主,開發週期長,變更成本高。隨著企業數字化轉型,產品開發和專案逐漸演變為以業務為導向,通過拆解細化業務問題,快速進行探索和驗證,減少時間及成本浪費的同時,也能快速找到業務前進方向。以上定位於企業專業化產品能力持續提升,逐步提升企業行業內的核心競爭力。

傳統企業建設現狀

  1. 研發工具分散,管理要求與工具軟體未統一平臺,資料孤島多
  • 各階段的資料未打通:專案管理、需求管理與測試管理脫節,資料追溯不便;
  • 管理要求與工具軟體未結合:管理軟體與工具軟體分離,度量資料採集分析困難。
  1. 研發環境難以滿足制度要求,研發過程缺乏組織視角
  • 程式碼託管分散:沒有統一的程式碼託管服務;缺少知識積累;
  • 釋出上線無控制:多途徑自由釋出,風險擴大;質量要求落實不力;
  • 研發過程不持續:多環節沒有打通,工具性太強;沒有統一平臺;
  • 原始碼不可追溯:無平臺支撐釋出版本與原始碼的對應關係維護;
綜上,致使企業各個團隊都有自己的做法和工具,難以執行的統一的流程、規範和標準。
  1. 自動化整合程度不高,手工作業影響工作效率和專案質量
  • 大部分活動依賴人工,浪費大量時間,依賴個人經驗,影響交付質量。

軟體研發過程面臨主要問題

  • 需求變更後,需求影響分析和跟蹤依賴手工統計;
  • 研發週期緊張,研發資源不足,缺乏資源監控手段;
  • 質量合規要求高,文件手工編寫工作量大;
  • 專案的成果積累分散,各部門大量重複功能開發;
  • 外部開發與內部開發並行,程式碼合併易出錯;
  • 系統耦合性高,升級維護不方便,容易造成版本混亂;
  • 產品開發和系統資源分散,運維人員不足,監控困難。

引進BizDevOps

BizDevOps旨在統一業務、開發和運維的一種軟體工程文化和實踐。其核心理念包括:價值、文化、自動化、精益、度量、共享,最終目標是將軟體開發的所有環節進行自動化和全面監控。主要包含以下功能特點:
  • 價值導向,需求溯源
  • 需求結構化,變更可分析
  • 業務測試,持續驗證
  • 細粒度需求、微服務設計
  • 頻繁提交程式碼、快速反饋缺陷
  • 每日整合與構建
  • 質量關卡、自動測試
  • 高頻、低風險釋出
  • 高頻、自動部署
  • 快速故障探測與恢復
  • 全面監測、視覺化工作過程

提高研發活動的自動化水平

企業研發一體化實現目標主要是為應對易變、不確定、複雜、模糊的研發新常態,滿足使用者對產品快速價值交付要求,引入業界優秀實踐,基於持續交付流水線平臺,逐步實現軟體的自動化編譯構建、自動化部署、自動化測試、自動化監測、自動化資料採集與研發效能態勢感知。實現從手動構建變為自動化構建;從集中發現缺陷到全過程內建質量;從測試製度化到測試自動化。總體來講就是實現持續快速交付高質量,以及有價值的產品及服務。

提升軟體工程生產力的模型:DevOps全球狀態報告

現如今,大部分網際網路廠商均在引入研運一體的概念,包括但不限於金融行業以及各個運營商。通過Gartner報告分析可知,DevOps在以下幾方面確實提高了研發效率與質量:
  • 可用、易用的工具
  • 內部和外部搜尋
  • 減少技術債務,手段包括:提升程式碼可維護性、解耦的架構、監控
  • 心理安全的文化

軟體研運一體化平臺應用實踐

建設目標

建立集專案管理、需求管理、程式碼倉庫、持續整合、自動化測試、持續部署及度量採集分析的自動化、標準化、數字化軟體研發平臺。
 

系統思維

對於大型企業來講,除了工具上面的配套,服務的方面配套所需更多。因此在研運一體專案的實施過程當中,雲智慧通過制度、平臺、培訓三者結合,即加強論證,分而治之,提升效能的敏捷方式來解決企業業務需求繁多且複雜場景需求。整個系統建設是通過統一規劃分佈建設的方式,來支撐企業從傳統瀑布型至矩陣式敏捷研發新形態的轉變。
 

質量思維

雲智慧通過以下三方面內容,完成了企業研運一體的質量內建:
  • 定義統一質量指標,形成指標體系和比較基準;
  • 建立組合的質量管理內控要求,固化到研發平臺;
  • 藉助工具實現自動化的質量管控。

軟體研發業務流程示例

下圖為軟體研發業務流程示例圖。對於裝備製造業來講,整個研發生命週期會包括需求分析、軟體設計、編碼測試。與傳統金融及網際網路企業不同,裝備製造業會在聯試後再進行驗收交付和售後服務,這是裝備製造業的一個典型特點。
 
 
下圖為業務流程圖示例,雲智慧根據企業研發組織人員數量對企業進行了分級。
  • 底層團隊級:通過需求的多次迭代完成研發過程。
  • 上層組織級:是多產品、多團隊的。即將多層級的 CICD 或者是需求設計形成一種關聯的研發關係。組織級比在團隊級上線之前多涉及一個聯試過程。
 
 
軟體研運一體化平臺開發流程是從業務需求部門或者需求訂單開始,隨後需求進到開發中心,開發中心結束之後交到運維中心做運維維護,隨後通過迭代開發的方式完成整個開發過程,最後完成投產驗證。
 

研運一體化平臺業務架構

下圖為研運一體化平臺業務架構,包含基礎層、服務層和應用層。基礎層和服務層是底層能力,設計的思想為平臺加應用。應用層包含實現需求開發、測試管理、引用釋出等功能。
 
 
下圖為客戶典型例項場景介紹。從專案開始,負責人通過軟體研運一體化平臺建立專案,隨後開發人員通過環境管理來進行環境準備,如所需伺服器、配置等進行申報。專案負責人專案建立完之後,進行專案的派發和拆解。隨後以任務為中心,串聯整個研發流程。上述過程的核心指標便是在開發過程跑通所有的CI/CD。
 
 

技術架構

軟體研運一體化平臺的基礎架構採用的是微服務架構,包括註冊管理、服務監控、統一認證、鏈路追蹤、訊息佇列、日誌分析等功能。
 
 

流水線排程引擎(可整合工具鏈)

雲智慧軟體研運一體化平臺除了可整合雲加速內部產品外,還可通過流水線排程引擎整合其他產品,如JIRA、Jfrog等熱門產品。無需 hard coding,通過拖拉拽的方式即可進行資料的整合,打通整體開發流水線。
 
 

平臺部署架構(容器平臺+物理機)

軟體研運一體化平臺部署架構包括通過容器、平臺和物理機進行部署,此外,也可以通過雲部署以及支援虛擬機器的方式去部署。那最小的配置與企業使用者數相關,目前最低配需至少要有 4 臺以上的伺服器。
 
 

研發一體化平臺特點

  1. 自主可控流水線引擎,標準介面
    1. 簡單易用:視覺化拖拽設計流水線
    2. 原子級指令碼:豐富可擴充套件的流水線指令碼,定製接入新工具
    3. 全環節支援:持續整合、持續部署各環節
    4. 極致體驗:面向不同角色的使用設計,良好的使用者體驗
  1. 全面的程式碼檢查,提升程式碼質量
    1. 語言支援:Java、C/C++、JavaScript等主流語言支援
    2. 程式碼掃描:整合商用、自研、開源掃描工具
    3. 安全檢查:JAR包黑名單、資原始檔白名單、groupid和version規範、禁止快照上線等
    4. 智慧提示:根據掃描結果給出智慧修復提示和樣例
  1. 服務團隊協作、管控和改進
    1. 協作平臺:讓所有團隊協作的專案管理平臺
    2. 質量關卡:提升釋出軟體質量和質量管控力度
    3. 度量報表:為持續改進提供依據,落地研發專案度量規範
  1. 強大的研發平臺,擴充套件資源能力
    1. 編譯加速:多種技術提升程式碼編譯30%-80%
    2. 資源交付:虛擬化、容器等資源自動化部署
    3. 業務成功:全面支撐Biz/Dev/Ops一體化
    4. 國產化適配:適配國產化作業系統

平臺建設收益

  • 適用於多種交付模式(整包、批次、按需),實現交付價值。
  • 質量內嵌,通過自動化手段提高交付質量。
  • 開發協同,問題/需求反饋更及時,提高交付速率。
  • 主動發現研發過程潛在風險,降低交付成本。
  • 承載工程師文化,增強團隊成功交付信心,提升團隊交付能力。
  • 多維度指標自動採集分析展示,支援研發效能持續改進。

FlyFish開源福利

雲智慧已開源資料視覺化編排平臺 FlyFish 。通過配置資料模型為使用者提供上百種視覺化圖形元件,零編碼即可實現符合自己業務需求的炫酷視覺化大屏。 同時,飛魚也提供了靈活的拓展能力,支援元件開發、自定義函式與全域性事件等配置, 面向複雜需求場景能夠保證高效開發與交付。
 
點選下方地址連結,歡迎大家給 FlyFish 點贊送 Star。參與元件開發,更有萬元現金等你來拿。
GitHub 地址: http://github.com/CloudWise-OpenSource/FlyFish
Gitee 地址:http://gitee.com/CloudWise/fly-fish
 
微信掃描識別下方二維碼,備註【飛魚】加入AIOps社群飛魚開發者交流群,與 FlyFish 專案 PMC 面對面交流~