Dev無感Ops,如何做到高效軟體交付

Dev無感Ops,如何做到高效軟體交付

來自專欄我是程序員

在2018第二屆研發效能嘉年華上,阿里巴巴雲效技術專家崔力強帶來了如何做到高效軟體交付的精彩演講,首先介紹了阿里巴巴在近幾年在交付平台上的技術經驗,以及目前雲上工具平台交易的趨勢,其次分享了阿里巴巴內部交付平台如何幫助我們統一步調、並行工作,最後詳細講述了Dev無感Ops可以解決DevOps遇到的一些問題。

視頻觀看請點這

PPT下載請點這

以下為精彩視頻內容整理:

阻礙開發者前進的問題

對於一個普通的工程師而言,第一要務是完成需求交付,我們的最終訴求是保障編碼、測試、部署的高效。但實際發現我們在交付的過程中並不順暢,研發流程的混亂經常出現代碼錯合,漏和,丟代碼的現象;質量化下降最主要是代碼有bug,線上環境交付不穩定,會有嚴重問題出現,測試環境不穩定指的是在做集成測試時需有一套環境,若環境不穩定,開發測試工作會被block;團隊之間溝通不暢,開發和開發之間,開發和測試之間,沒有統一規則或流程約定;一堆開源工具攢出來的開發工具鏈,不但提高了學習成本,還導致過程數據無法統一存儲。幾年前,幾乎都使用開源工具模式做持續交付,後續發現存在許多問題,於是開始做自建平台過程。

上圖為知名公司的一份統計數據,統計持續交付是否能幫助我們提升研發效率,分別是瀑布模式、敏捷模式和持續交付模式,可以看出在持續交付模式下,開發在設計、測試、部署上的時間比重大大減少,在真正做開發上的時間達到了80%。也即是說我們更專註,更高效的在進行開發,從Waterfall到Agile的模式在研發階段效率高,主要是因為有更少的時間做設計、coding,而coding時產生核心價值的一個環節;從2-3餅圖開發時間更長,是因為我們把交付時間壓縮。

如何做到持續交付有以下五點:

? 1.需求的小批量流轉,通過拆分讓價值可以快速的交付,減少集成成本,一般單個需求我們不會超過1周。

? 2.自動化一切,不單是測試和部署,運維也需要自動化。

? 3.內建質量,儘早的測試可以顯著降低測試成本,保障交付流水線通暢,增強環境穩定性。

? 4.每個人都為交付過程負責,不單單編碼完成交給測試就ok了,要負責代碼上線,並且各項功能數據都正常才算完成。

? 5.研發過程數據,用戶反饋數據,對我們有非常大的價值,可以看到目前還有哪些坑阻礙著我們前進。

團隊不同階段面臨的問題

最初我們團隊只有1-7人時,是在最敏捷的狀態,類似Jeff Bezos所說的two pizza team。按照目前微服務化的規模,應該有2-3個應用。這樣的團隊首先應該具備基本的CI能力和質量保障,確保自己的代碼在一定質量下持續迭代。至於發布、運維並不一定是馬上需要面對的問題,一些紙面上的流程和腳本,足夠應付一陣子。

團隊成長到7-20人時,我們應該有了一個比較大的產品,有複雜的架構和持續成長的業務。10多個應用之間互相影響,互相阻塞會導致我們線下開發和線上SLA面臨挑戰。此時一個統一的研發流程可以幫助我們規範開發行為,再加上統一的質量標準,不會讓我們集成環境和線上環境面臨較大風險。隨著應用增多,我們也需要一些契約測試來確保服務兼容性。

團隊成長到20-100人時,已經是一個相當大的規模,我們掌握著一個企業核心的產品,業務壓力和穩定性壓力像兩個小人不斷PK。如何在質量和效率上達到最佳平衡,是我們要考慮的核心問題。應用規模達到了幾十個,已經不是簡單研發自動化能解決的了,此時需要一個統一的研發平台,幫助解決從CI到CD的全鏈路問題,甚至包含全自動化的運維工具。產品、開發、測試、運維等角色可以在一個平台上高效協作。在2017年,已經有83%的企業開始使用雲計算來解決企業基礎設施問題和軟體交付問題。相比2016年出現爆髮式增長,不難理解利用現成的經過驗證的可靠方案,可以大大縮短企業達成高效率目標的路徑。幫助企業在市場競爭中獲得先發優勢。

統一步調、並行工作

阿里巴巴內部端到端的研發平台包括項目協作、持續交付、應用運維、測試度量以下幾方面。用雲效首先可以獲得研發模式的標準化,我們將其命名為AoneFlow,這是目前應用最廣最適合阿里巴巴的分支管理模式,不但具有高度自由,快速迭代的特性,還可以與CD流水線結合,讓整個公司具有統一的軟體交付規範。

上圖為研發模式標準化-AoneFlow,將分支管理模式落地到產品層面,開發只要通過平台新建特性分支,checkout push代碼,後續合併上線全過程全部由平台接管,不但可以讓開發者協作變的非常簡單,高效,永不出錯,而且在研發流程中可以加入自由配置的預設規則,比如什麼時候合併代碼,需要達到什麼樣的標準,codereview 安全是否通過,發布分支怎麼處理,等等像樂高積木一般定義自己的研發流程。

將繁瑣的易出錯的事情留給平台,實現研發模式全自動化。真正的做到了研發過程全上平台,所有數據可追蹤,並且徹底杜絕了漏發、錯合、管理混亂的情況。讓開發專心價值交付,是雲效首先要解決的問題。

持續交付核心是快速交付價值,給與開發最大自由度,負責開發和運維全部過程。在監控、故障防控工具,功能開關的配合下,可以在保障用戶體驗和快速交付價值之間找到平衡點。

Dev無感Ops

Ops自身複雜由繁雜重複性的工作,Dev可以很輕易做Ops,是Dev感覺不到Ops的存在,Ops真正出現問題時,平台會通知Dev處理問題,最後幫助團隊做度量。首先介紹阿里巴巴內部是以應用為中心DevOps理念使用來應用串聯整個DevOps工具鏈、開發定義應用,同時定義運維、開發為應用全生命周期負責、系統自動完成應用運維配置。

因此我們一直在推動標準化,智能化,無感的Ops體系建設。目前在研發端我們的三個實踐第一個是無人值守發布,眾做周知絕大部分的故障來自於變更,變更的絕大部分又來自於發布,如何保障每次發布都是對用戶無影響的,如何用系統代替人來關注龐雜繁瑣的運維指標。去年我們應用運維產品推出了無人值守發布功能,它使用人工智慧的方法,計算髮布過程中監控指標、日誌數據、用戶數據等等多重維度的變化,預判可能出現的風險,警告用戶或者觸發回滾,保障發布過程無人參與。最終避免了90%的發布故障。第二個是應用健康檢查,同樣我們用大數據,人工智慧的辦法,獲取多重運維數據,來幫助開發同學發現目前應用存在的風險,進行一鍵修復,有點類似大家電腦里的360管家。不需要有多少經驗,人人都可以成為運維專家。最後是應用自愈,我們將運維工具和經驗沉澱到了這個產品,對一些場景和問題進行自動修復和調整,達到無人參與的目的。這就是我們無感Ops的目標。

截圖來自阿里云云效研發的某過程

上圖為全雲端構建,加速研發過程,雲效完全自研的全雲化構建調度系統,已經可以支持所有語言構建,擁有經過阿里雲安全團隊認可的安全加固機制。並且根據不同技術棧提供了自適應的構建緩存策略,避免依賴的重複下載,大大節約構建時間,提高開發過程效率。開發在使用雲效只需要選擇他的技術棧和構建命令,其他都可以交給平台自動化完成。

雲效目前支持阿里雲容器服務、edas、ecs三種部署方式,對每個應用的每個環境都可單獨定義它的部署方式,並且實現任意切換。比如我們生產環境使用edas保障穩定,測試環境使用ecs混合部署節省資源都是可以實現的,非常方便。

在我們做運維棧轉型升級的時候,可以通過修改部署配置進行平滑升級,如果有問題,我們還可以實現一鍵回滾。雲效保存著歷史所有軟體發布升級的基線數據隨時可查,隨時可rollback,這些都是阿里巴巴內部多年經驗的積累實踐。

在運維方面,我們支持了通過ECS模板快速擴容,並且在雲市場也上線了雲效推薦鏡像,直接可以獲得和阿里巴巴一致的運維標準。最後是基於特性分支的測試環境管理功能,支持環境隔離能力,具有生命周期管理功能,讓每個開發都可以享受到獨立的研發環境,並行工作,高效交付。以上功能都可以在阿里云云效幫助中獲得詳細操作指南。

數十款阿里雲產品限時折扣中,趕快點擊這裡,領券開始雲上實踐吧!

本文作者:雲跡九州

原文鏈接

更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎

本文為雲棲社區原創內容,未經允許不得轉載。


推薦閱讀:

《戰爭機器》之父的沉淪和他的名人效應丨遊戲講堂
這款AR遊戲將幫助更多中風患者擺脫後遺症
數博會現場|MobData帶你暢遊最真實的數據海洋
FCS遊戲生態圈。
十大好玩的BT手游熱門榜

TAG:軟體 | 遊戲 | 遊戲從業者 |