天天看點

高效能研發體系建構概論

背景

痛點

目标

研發體系建構

1)業務一體化建構

2)技術一體化建構

3)監控一體化建構

4)運維一體化建構

5)管理一體化建構

總結

高效能研發體系建構概論

技術管理者(技術總監/經理/CTO)都會面臨公司戰略執行,公司業績的壓力,以及業務對技術團隊支撐能力的期望和訴求。如何打造一支快速響應,高效能,能打硬仗的技術團隊?是技術管理者的挑戰和必須完成的任務。

1)技術選型混亂,大量基礎技術元件代碼重複建構,使用方式不一樣;一些坑大家都需要重複踩一遍,關鍵是踩完了還不能複用經驗可能還會在其他項目重複發生。

2)項目最終被業務追着跑,産品設計沒有路線圖, 整體業務架構沒有規劃,最終演變成大量業務基礎服務重複建設,業務邊界不清晰,業務服務職責不清晰。

3)線上事故不斷,同一個問題可能重複發生或者一個事故發生後隻有使用者人為回報後才能感覺。解決和排查問題原因,需要很久分析才能解決。

4)線上伺服器管理混亂: 公共服務重複建設,伺服器權限不清晰, 發版斷服,服務不能動态擴容等。運維忙于處理線上故障和版本釋出。

5)研發流程,故障處理流程等标準化制度缺失或不明确; 人員的效能,團隊的效能群組織效能無法量化,隻能靠直覺和經驗。

打造一支快速響應,高效能,能打硬仗的技術團隊。

1)技術人員效能提升50%, 整體人員成本降低50%。

2)業務疊代周期提升30%, 實作秒級釋出秒級復原。

3)故障響應速度提升90%,線上穩定性提升90%。

高效能研發體系建構概論

業務的一體化(或者稱為業務中台),本質是基于功能抽象複用、架構合理性和業務統一管理的視角,通過适度的業務邏輯抽象、彈性的複用功能設計,将産品方案進行抽象、複用和下沉,打造企業級一站式功能服務平台。而這個過程非常考驗産品的統籌規劃設計能力,架構師的業務了解和服務拆分能力。

個人比較推薦采用ddd的戰略設計能力,産品與架構師和業務一起參與事件風暴,并梳理業務的核心流程,明确業務領域中的核心領域,支撐領域,通用領域,以及各個領域的上下文邊界,并據此進行合理的業務微服務拆分,并反複驗證業務領域模型和細節設計(也可同時采用傳統的經驗設計進行驗證)後實施。同時個人也推薦在落地業務中台的時候,可以考慮把業務中台做“薄”一些,業務的前台做“厚”一些,這樣可以保持前台業務的最大靈活性,幫助新業務快速度過探索期。

假如在業務架構頂層設計時候領域拆分不合理,會在未來造成很多的業務架構技術負債而且項目疊代的效能會大大降低。而這些負債越到後面的業務發展,改動越難,影響越大。合理的領域服務拆分,服務調用鍊路應該是理想的樹狀或者可預期的規律調用鍊路。而在實操過程中,我們可以通過觀察pinpoint或者skywalking追尋調用鍊路是否是網狀無規律的循環調用結構?此時我們要确認服務拆分是否合理,是否需要重新梳理業務進行優化。

雖然實際上每家公司的業務形态都不一樣,若假設業務架構拆分合理(至少滿足1-3年左右的業務架構演變),規劃好産品技術路線圖,項目疊代效能應該可以提升20%~30%。

業務領域圖例:

高效能研發體系建構概論

技術的一體化(不僅僅隻稱為技術中台),主要解決的是“業務開發人員”使用技術的統一标準化,比如是技術程式設計語言統一(如java,.net,python),技術選型統一(如分布式的技術選型統一,架構統一),技術使用标準統一(如日志規範),項目腳手架統一(如項目結構,項目文檔統一)等。

我們在實踐過程中通常會建構bsf(base service framework)基礎服務架構,business framework 基礎業務架構及bsf-demo基礎業務腳手架去解決業務開發人員的技術問題。

【bsf基礎服務架構】解決架構使用,技術選型,性能優化,日志規範及中間件監控等标準。讓業務開發人員無需關注底層架構實作,隻需按照标準技術規範,專注本身領域的業務開發實踐,專注本身領域的業務價值實作。(bsf架構層優先相容新舊技術選型,推進技術演變,業務開發無需改動代碼;同時為運維一體化,監控一體化,管理一體化提供架構級支撐)

參考(部分開源版): https://gitee.com/yhcsx/csx-bsf-all

【business 業務基礎架構】 解決業務之間公共通用使用的類庫,比如業務的通信協定,業務的狀态碼标準(錯誤狀态碼)等等,同時也解決一些新舊架構相容等業務相容問題。

【demo标準腳手架】 解決業務架構标準化項目結構(或ddd項目标準結構)及文檔,讓開發人員1分鐘生成項目3分鐘進入項目開發。

參考(部分開源版): https://gitee.com/yhcsx/csx-bsf-demo

基礎架構內建順序:

高效能研發體系建構概論

标準腳手架結構圖:

高效能研發體系建構概論

通過技術一體化的實踐,我們比較完美的做到剝離業務開發的(與業務無關的)技術,讓業務專注業務的實踐,同時底層技術演進和實踐,業務開發人員無需關注和配合。那麼業務線進階開發人員的比例可以減少50%+,研發效能提升10%+。(當然架構師依舊會深入在某個業務線領域協助業務優化自身的業務架構(如分庫分表),讓業務性能和穩定性得到進一步的提升。)

監控一體化的目的在于自動化的産出項目品質報告,并進行實時的預警機制,讓業務開發人員隻關注業務實踐,無需關注線上性能問題(因為一旦有問題,我們就會自動監測)。

監控中心概要圖

高效能研發體系建構概論

我們建構一個監控體系用于基礎采集名額的收集,其中包含開源的一些采集系統,自建的一些采集名額(插件行使)補充,或第三方商業的工具(如聽雲等),同時也會動态多元度的項目性能品質分析報告及動态評分和評級,同時根據政策實時進行性能及異常預警到特定人員。

一方面将我們對常見的性能及穩定性問題的分析經驗沉澱,形成自動化的監控和報警系統,徹底解放運維人力監控、人力分析預警;另一方面我們自動化的形成品質報告,實時分析出項目的品質情況和相應的解決方案建議(經驗沉澱),推進項目品質改進和分析。

最終實作秒級性能及異常報警,實時品質分析報告,1分鐘内精準定位問題,解放重複的性能分析和排查,研發效能可提升5%+。

運維一體化的本質在于徹底解放運維日常的工作,讓運維更加關注伺服器性能的提升,成本的降低。

在我們實踐的認知中,我們認為運維和架構是一體的(至少也是難以分離),假如項目架構和技術層面沒有做到統一(各自采用不同的技術選型和項目結構),那麼在運維層面也難以做到統一,整體運維的工作量随着項目的數量,不斷增加,甚至大部分場景都要單獨維護,那麼重複性和不必要的工作重複做。

運維自動化概要圖

高效能研發體系建構概論

運維的工作是技術中較為繁雜的(包含環境管理,權限管理,網絡安全建設,資産管理等等),我們期望在基礎設施服務一體化,雲原生容器化,運維一站式,CICD一體化,釋出自動化這幾塊就做到運維的一體化。

【基礎設施服務一體化】架構和運維推進并在設計初級做到技術選型的統一和項目結構的統一,技術内部團隊中隻允許使用一套基礎設施服務和一套基礎技術選型标準,比如分布式相關的基礎服務,監控體系,研發管理體系和釋出體系。

【雲原生容器化】容器化可以有效的節省伺服器成本,快速擴縮容和服務持續可用,在技術體系統一的情況下,實踐虛機到容器化遷移非常迅速,實際可節省伺服器成本約30%左右;同時我們也推進所有的基礎設施服務全部用雲原生方式替代,進一步降低成本和快速部署能力。

【CICD一體化】在技術一體化的基礎上,采用一套部署腳本和機制,滿足一鍵釋出服務,一鍵復原服務,所有服務版本化,所有服務秒級釋出。開發人員無需關注線上部署腳本情況,無需關注服務啟動切換,無需關注線上服務運作環境(虛機還是容器)。

【運維一站式】所有運維的定時/監控等腳本分發執行,所有伺服器,資産及成本等關鍵性的運維工作進行統一的管控及自動化平台。

【釋出自動化】在技術一體化的基礎上,通過可視化流程形式建構整套釋出流程和復原流程,建構審批流程,将版本釋出工作交還給項目團隊,徹底解放運維的日常項目疊代發版的協同工作。

按照兩家公司的不同技術團隊(150-200人左右)同等規模下實踐對比,運維一體化實踐較好的公司運維僅需1-2人,而另外一家公司運維約7人左右,而對整個技術團隊的效能提升應該在5%~10%左右。

管理一體化的目标在于建立數字化,标準化的管理方式,将經驗和理念沉澱到系統中,通過資料去指導及驗證管理決策,提升整體研發人員能效;同時我們期望将“人治”逐漸變成"系統化",讓管理者精力更加聚焦業務價值實作。

管理模式演變概要圖

高效能研發體系建構概論

在管理實踐中,我們将“經驗直覺”人治管理方式逐漸演變成規範化标準化的人治管理方式(管理成本也逐漸增加),也期望逐漸向“資料化”“自動化”的系統管理轉變(更加精準,更加實時且直覺的暴露問題),通過資料名額進行分析和對比,快速的決策和改進。

從項目初期,我們就推進各個環節的标準化(管理規範一體化),并制定關鍵核心規範并落地到各個項目中,但是效果不一定很理想。因為管理者在做業務價值和技術負債的取舍沖突中,往往選擇優先滿足業務價值,本質是因為我們沒有直覺的量化的名額去衡量投入産出比,項目品質的變化,有效業務價值,這個也是最初數字化管理的需求痛點。

管理要“以人為本”,管人要以“人性”為前提,但管理者要有财務思維。研發效能平台将組織架構,組織文化,項目管理工具(禅道/tapd),項目品質(監控一體化),标準規範(管理規範标準化),缺陷故障(線上bug/故障rca複盤),資源成本(伺服器,資産,人員成本),周報管理,激勵+成長+360考核等等已知研發體系資訊進行分析。

以“員工”為次元産出員工/管理者的職級,任務數,bug數,任務完成度,有效産出量,代碼品質,工作時長,有效工作時長,線上故障數,工作飽和度,分享能力,學習能力,成長度,産品價值,技術價值,業務價值等等;

以“項目”為次元産出項目/疊代的人員數,工時數,産品價值(達成率),技術價值(達成率),業務價值(達成率),人員投入成本,伺服器投入成本;

以“組織”為次元産出團隊/組織的人員數,工時數,産品價值(達成率),技術價值(達成率),業務價值(達成率),人員投入成本,伺服器投入成本,任務數,bug數,任務完成度,有效産出量,代碼品質,工作時長,有效工作時長,線上故障數,工作飽和度,分享能力,學習能力,成長度等等。

管理者最重要的事:制定目标,帶領團隊,拿出結果。我們期望通過将管理方法論沉澱為資料化,自動化的系統平台化管理,讓管理者更加聚焦業務本身,通過一體化的量化資料增強管理和精準決策(驗證管理成果),同時通過系統化降低管理(人員/職能)成本,(百人以上研發團隊規模下)整體研發效能提升10%~20%。

通過研發體系的建構,五個次元的一體化建設,我們不斷努力的實踐并驗證人員能效提升并聚焦業務價值;然而研發管理體系的建設并沒有銀彈,我們依舊在不斷的沉澱,實踐,總結,交流,打破,提升;歡迎一起交流分享!