加速應用上雲的最後一公里

一次曲折的發佈

我們說代碼編寫完成只是一個業務需求的開始,如何將一個需求快速發佈上線、投入生產纔是我們的最終目的。我們先從一個案例開始。

從前,有個開發同學叫小周,他的一次發佈是這樣的:

首先他要在代碼平臺手動創建代碼分支提交代碼,然後要編譯構建,有可能是本地構建,也有可能是使用某個構建工具,構建好之後部署測試環境,需要先申請測試機器,然後去機器上執行某個腳本才能啓動服務。

環境準備好之後纔可以交給測試進行一輪、二輪測試驗收,這一過程要重複很多次,每一次都要走好幾步。驗收通過後,發佈上線還需要申請發佈單,讓運維同學幫忙去做發佈。

這一整個研發過程花費很長時間,需要和很多個角色相互協作,而且需要在很多個平臺之間來回跳轉,比如代碼平臺、構建平臺、資源平臺、運維平臺。

期間存在資源分散、流程混亂、結果不可預期等等問題,整個過程難以追蹤,難以管理。通常一次發佈需要持續一天,糟糕的時候一週甚至兩週只能發佈一次,嚴重影響研發效率。小周不禁感慨,發佈難,難於上青天!

問題這麼多,怎麼辦?

雲效提供一站式應用交付平臺,幫你加速應用研發流程,加速應用上雲。

使用雲效後,小周同學的一次發佈是這樣的:

1、收到業務需求,直接進入目標應用,創建應用變更自動拉取代碼分支;

2、代碼提交後自動觸發流水線部署開發測試環境;

3、部署成功後自動通知測試同學進行測試驗收;

4、驗收完畢,小周同學可以一鍵點擊發布生產,不需要填寫申請單,也不需要找運維。

使用雲效只需簡單幾步即可完成一次應用發佈上線,整個流程更加簡單、更加透明、更加順滑。

那雲效是怎麼做到的呢

1、以應用爲中心

首先雲效以應用爲中心來組織應用資產。通過應用來聚合應用的源代碼、CI/CD流程、構建好的包,如maven包、npm包、docker鏡像等等;以應用來聚合基礎設施資源,包括線上線下環境的,比如企業自建的機房、在某個雲廠商的採購的雲主機或者k8s集羣。讓所有資源都以同一個維度、聚合在同一個平臺集中管理。
此外,應用還爲開發、測試、運維等多角色提供統一協作切面,所有同學都可以在一個應用視圖完成主要工作事宜。
所有資源所有角色都使用同一個平臺,減少各角色在多個平臺來回跳轉,減少流程割裂,打破了各角色職能壁壘。通過這種方式爲企業提供一站式應用交付平臺。

2、應⽤架構統⼀編排、終態定義

小周剛入職時,他負責一個應用的某一個模塊,有一天服務啓動失敗了。他的師兄告訴他,你要先改一下這個配置,然後再修改那個參數,再執行腳本部署纔行。

一個應用有好幾套環境就有好幾份配置和腳本,而且好幾個人負責同一個應用,經常配置打架,來回改那麼幾次就完全亂了。每一次的部署結果都不一樣,都不可預期,拉起服務就真的只能靠”人品”了。

雲效以終態編排的方式統一應用的部署架構,改變了原來過程式、步驟式的部署方式,以聲明式的方式來定義應用服務,同時支持k8s和主機部署,能夠很好的支持應用雲原生化轉型過程的架構遷移。

針對多環境差異,雲效支持編排佔位符,支持將多個環境差異化的配置抽取成變量,實現一套編排多環境差異化部署能力,消除部署過程中的不一致風險,減少環境配置維護成本。

此外雲效的應用編排還可以用白屏化、可視化的方式進行,配合應用編排模板,幫助用戶快速上手,讓小白用戶也可以輕鬆編排併發布自己的應用,降低使用門檻。

3、測試環境一鍵創建、一鍵銷燬

服務啓動了,是一個好的開始。但我們在日常研發過程中經常會聽到這樣的聲音:誰又動了我的環境?

有經驗表明:測試和聯調任務纔是開發日常工作的主要部分,通常佔據開發者⼯作時間的50%以上。

那麼一個穩定、好用的測試環境就非常重要了,它能夠極⼤提⾼開發者的⼯作效率和幸福感。

雲效提供測試環境管理功能,幫助開發者高效自運維:

支持測試環境一鍵創建、一鍵銷燬,無需人肉申請資源,測試資源按需使用,避免浪費;
聯調過程中支持測試環境一鍵佔用,鎖定環境,我的環境我做主,保障測試環境穩定性,讓獨佔穩定的測試環境成爲可能。

4、多種部署策略、部署過程可觀測可干預

測試完成後就到最後一步發佈了,對於生產發佈,雲效支持滾動升級、分批發布、藍綠髮布等多種部署方式。

通常我們發佈上線,會先發一個小的批次,進行灰度驗證,驗證沒問題再逐步放大後續批次。雲效支持精細化的分批策略設置,支持手動指定批次數量,精確定義分批過程。

此外整個部署過程可以實時查看部署進度,可以查看機器的執行日誌。對於k8s部署,我們還支持查看pod關鍵事件、容器啓動日誌等,幫助快速發現問題、定位問題。遇到問題時可以一鍵暫停、一鍵回滾,保障發佈過程的安全性,讓開發自運維更可靠。

5、研發流程可視化、可管控

終於我們的發佈流程走完了,小周入職半年後,這一套流程也已經非常熟悉了,這就是我們說的熟能生巧。
但個人效率高並不代表整個企業效率高。個人經驗能發揮的作用範圍,會隨着個人的升遷、調動、離職而消失。只有將個人經驗流程化,才能沉澱爲組織資產,幫助企業提效。

雲效支持自定義企業研發流程,將企業研發習慣、研發方式通過配置固化在平臺上,這樣小周就可以把自己的經驗落實到平臺上。

當公司有新人入職時,新人可以一眼看到研發流程,再也去問他的師兄了,也不需要去接手“祖傳”的機器、“祖傳”的腳本了。研發過程可以快速上手、快速執行,提升了整個企業研發運維活動的規範性、確定性。

此外我們日常研發過程經常還會遇到這樣的問題,一段沒有經過測試驗證的代碼發佈到生產環境了,導致了線上故障。這是一種非常低級又常見的錯誤,那麼有沒有辦法避免呢?

雲效支持自定義變更規則,限制只有通過日常測試驗收、通過集成測試驗收的代碼才能進入生產發佈階段,幫助企業守護研發質量。

此外雲效還支持人工卡點、以及精細化的角色權限管控,讓研發流程更安全、更可靠。

6、打通業務需求到發佈的端到端流程

回顧我們整個過程,好像都沒有提及到另外一個角色:產品。但其實產品同學無處不在,他每天都會來催你的需求,催你的進度。爲什麼要催呢?因爲他不知道,所以要問。那能否有一個地方讓產品同學實時看到進度呢?
雲效將一次業務需求對應代碼變化、配置改變或其他要素改變定義爲一次變更,通過變更連接業務需求到發佈,串聯整個開發、測試、生產整個過程。

通過自動化規則實現一旦應用發佈上線、應用變更完成、需求狀態可以做到自動同步,讓業務需求狀態和研發進度一目瞭然。產品再也不用每天來催了。

總結

雲效AppStack可以助力企業:將分散的資源轉變爲聚合的應用資產,將過程式操作轉變爲 終態聲明式應用架構定義,將運維做發佈 轉變爲開發高效自運維,將個人經驗轉變爲平臺固化的流程和標準,實現業務需求的全生命週期跟蹤,讓應用上雲最後一公里更快、更順滑!

有開發同學反饋說,使用雲效後,可以一邊喝着咖啡、一邊聽着交響樂,一邊做發佈,發佈再也不用排隊啦;運維同學說,使用雲效後,所有資源都能在一個平臺管理,再也不用好幾個平臺來回跳了,真正是解放了雙手,解放了生產力;產品說,使用雲效後,需求進度一目瞭然,再也不用每天去催進度啦。

雲效讓應用交付可看見、可落實、可傳承,讓一切井井有條

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章