通過云效解決企業代碼托管和軟件集成發布問題,整體發布節奏由原來一周發版1次提升為每日交付;發布時長由原來一次發布30分鐘提升為2分鐘;現在各個項目組完成代碼評審后自動集成發布,目前有30條生產環境流水線,單次發布節省20分鐘的情況下可以節省10個小時。
背景
出于對研發效能的深刻理解與共同追求,于是有了這次杭州幻熊科技與云效的對話。我們將全方位展示本次共創的過程、最終產生的效果,希望能為不同行業的創業與小微企業提供可以借鑒的經驗。
杭州幻熊科技是一家根植于婚禮行業的移動互聯網公司,幫助客戶創造并提升品牌與消費者之間的關系。主要從事結婚新零售和產業云平臺建設,旨在提供行業出色的產品,推進中國婚嫁行業的互聯網化變革,重塑行業服務體系與商業文明,建立全新的婚嫁消費格局?;眯芸萍计煜庐a品主要包括云設計系統、智能一體機、供應鏈云倉、移動端APP和小程序。小而精的技術團隊保障產品發布的同時承擔著更為重要的創新任務,其中上海分公司15人,主要從事具體產品研發,包括移動端APP、小程序和H5等;武漢分公司10人,主要從事婚禮實景VR研究和開發。
面臨的問題
經過進一步接觸,我們了解到為了支撐快速發展的行業業務,企業內部正在調研并準備搭建持續集成和持續交付平臺。云效的出現恰好在時機上契合了企業流程升級的需求。
企業現狀
流程升級首先要洞悉當前流程遇到了什么問題,找出其中影響效率與質量的關鍵節點,加以改進并獲得良好的效果。以幻熊上海研發團隊為例,研發人員共15人,其中:
服務端4人,主要開發語言PHP。
Web前端4人,主要開發語言JS。
Android客戶端3人,主要開發語言JAVA。
iOS客戶端2人,主要開發語言SWIFT。
測試2人,負責所有產品測試。
技術團隊負責產品全棧開發,整體規模較小并且沒有專職的運維人員?;诳焖侔l展的業務,要求產品迭代速度持續加快。迭代次數增加同時加重了發布負擔,發布逐漸變成了制約產品創新的瓶頸。流程升級前基本情況如下:
產品迭代周期以周為單位。
代碼通過開源代碼平臺“碼云”托管。
版本發布以FTP+手工部署的方式進行。
自建Jenkins流水線執行Android/iOS客戶端構建。
企業痛點及解決方案
發布流程和人員協調復雜,時間長:為了保障服務器安全,生產環境只有特定的人員可以操作。所有項目發布都需要事先協調,并等待有權發布的人員,等待和依賴發布人員需要消耗較長的時間。
BUG從修復到驗證耗時久、效率低:測試環境通常需要頻繁打包,一個BUG從修復到部署至測試環境進行驗證,消耗時間較長,且多為重復性工作,已經嚴重影響到了開發效率。
人工部署生產環境存在安全隱患:具有發布權限的開發人員身兼數職,直接通過人工執行部署不能避免誤操作,給生產環境安全帶來了極大的隱患。
以上是企業切身感受到的痛點,從這些問題來看恰好是云效致力于解決的問題。通過良好的分支策略、自動化的流水部署和環境管理,增強的測試與質量卡點,只需要簡單的變化就可以將成熟的DevOps經驗應用于企業研發流程,解決企業遇到的實實在的問題,總結下來有以下幾點:
增加代碼評審加強開發質量。
高度自動化,盡可能減少人工干預。
需要快速且準確地反饋問題。
加強質量管控和可視化呈現。
解決效果
小微研發團隊通常不會面臨復雜的開發策略與產品維護需求,其核心訴求是產品快速迭代,以滿足不斷變化的業務需求。引入成熟的方法快速提升研發效率,規范現有流程是最直接的方式。這是一個小變化引起大收益的典型案例,通過以下對比可以看到流程升級帶來的變化:
對比項目 | 原來 | 現在 |
發布方式 | 手工發布 | 自動發布 |
正式發布頻率、時長 | 1次/周 平均30分鐘/次 | 隨時發布 2分鐘/次 |
代碼集成頻率 | 3~4次/日 | 隨時集成 |
BUG修復完成至開始測試等待時間 | 平均2小時 | 5分鐘 |
代碼評審 | 無強制要求 | 合并請求強制評審 |
構建通知 | 無通知 | 自動釘釘通知 |
測試、生產環境管理 | 人工 | 工具自動管理 |
質量和效能提升:
流程升級前,測試環境和生產環境部署完全依賴開發人員;流程升級后,發布幾乎不占用人力,每周至少節省1.5人/日。
正式發布限制解除,可以按照業務需求隨時發布。
代碼集成頻率提升,集成問題隨時發現。
等待測試時間縮短到5分鐘,測試吞吐率提升數倍。
生產環境誤操作問題基本消除。
目前幻熊科技服務端程序和Web前端程序已建立近60條流水線,支持測試與生產兩套環境的自動部署。由Jenkins管理的Android/iOS移動應用也正在逐步納入流水線,全部實現自動構建和打包發布。
打出效率的組合拳
代碼平臺和流水線自誕生之日起,即致力于解決企業代碼托管和軟件集成發布問題。結合業界先進經驗和阿里巴巴多年工程實踐,將質量和效能融入工具,實現開箱即用的代碼管理與自動化流水線。在幻熊科技的方案中,使用代碼平臺托管代碼,使用流水線管理生產和測試的發布,通過自動觸發流水線實現自動化部署,成倍提高了集成、測試、發布效率。
用代碼平臺增強代碼管理
代碼平臺是一款企業級代碼管理應用,提供代碼托管、代碼評審、代碼掃描、質量檢測等功能,有效保護企業代碼資產,助力企業實現安全、穩定、高效的研發生產。
研發模式
通過對業務場景和研發模式梳理,采用基于主干的開發模式即可滿足日常開發需求,如圖:
2. 代碼評審
利用代碼平臺提供的代碼評審能力,設置代碼合入主分支前必須評審通過,如圖:運營管理后臺合并記錄。
發起代碼合并評審。
強制代碼評審有利于提高代碼質量,幫助開發人員盡早發現問題,提高問題修復的效率。更進一步,企業還可以結合自身實際情況,啟用代碼靜態掃描和代碼規范檢查。
用流水線賦能集成與交付
流水線是一款企業級、自動化的研發交付流水線,提供靈活易用的持續集成、持續驗證、持續發布功能,幫助企業高質量、高效率的交付業務。
流水線是持續交付的載體,通過構建自動化、集成自動化、驗證自動化、部署自動化,完成從開發到上線過程的持續交付。通過持續向團隊提供及時反饋,讓交付過程高效順暢?;眯芸萍挤斩顺绦蚝蚖eb前端程序總共有近60條流水線。
流水線整體方案
完整的研發流程說明如下:
開發人員基于dev集成分支開發,流水線輸入源設置為dev集成分支。
開發自測通過后,代碼提交遠端分支并觸發集成分支流水線運行,構建完成后自動部署測試環境。
測試人員收到通知執行測試驗證。
測試環境驗證通過后,dev分支發起合并請求,開展代碼評審工作。
代碼評審通過后合并到master發布分支。
開始觸發正式環境流水線運行,構建完成后部署正式環境。
測試人員開展正式環境驗收工作。
1. 模板化快速創建流水線
產品提供多種流水線模板,便于企業快速上手創建一條適配的流水線場景。
2. 可視化編排和展示
所見即所得,流水線運行過程直觀展示,企業可完整看到當前流水線運行所處階段和場景。
3. 在關鍵節點設置卡點
效能提升的同時質量問題同樣值得關注,流水線支持在關鍵位置設置卡點,例如測試用例通過之后才能允許發布,可以在發布前添加人工審批卡點。
4. 環境部署
流水線區分測試環境和生產環境兩條流水線;測試環境通過流水線的代碼提交自動觸發部署,整個部署過程不需要人工干預,測試人員可以進行立即驗證,部署失敗可快速回滾。
5. 釘釘消息通知
用戶可以在流水線中配置釘釘群通知插件,為釘釘群自動發送流水線運行信息。
消息通知釘釘群流水線運行結果:
結語
持續交付是軟件企業最需要的能力,意味著從業務需求開始到交付上線之后的端到端的過程,做好持續交付對整個研發體系意義重大。從理論上講,通過持續交付可以滿足每天、每周、或者滿足業務需求的任何頻度。
持續交付是DevOps最佳實踐之一,利用DevOps的能力和實踐可以幫助企業顯著提升軟件交付效能,提升工程生產力。DevOps不是趨勢,是事實上都應該采用的軟件研發和交付方法,它能給企業帶來更高的產出,創造更大的價值。不是每個企業都需要有DevOps專家,通過成熟的研發效能工具,小微企業同樣可以享受DevOps帶來的收益。
作者(合作者)介紹
吳同偉,技術平臺總監,負責幻熊科技所有產品線的研發管理和平臺團隊建設。產品主要有禮成(婚禮策劃服務)、人人宴(婚宴服務)、北極熊(婚禮業智慧營銷系統)、云設計系統(云渲染引擎)、智能一體機(婚宴酒店行業賦能)等。在平臺內推動敏捷研發落地和DevOps轉型。
張莉,前阿里巴巴云效解決方案架構師,擁有多年敏捷與持續集成工作經驗,經歷過通信及互聯網多個行業,曾負責大麥持續交付流程建設,成功幫助飛豬、餓了么研發流程與阿里巴巴集團融合,對項目管理、持續交付過程中的痛點有深刻認識,專注于幫助中小企業提升研發效能,完成DevOps轉型。
本文內容非阿里云官方提供,如您發現本文檔存在侵權內容或其他問題,請提供相應證明材料并在本頁面內提交反饋信息,阿里云會協調或通知相關作者進行處理。