技術團隊運用度量驅動開發提升質量:策略與實踐

架構師修行手冊發表於2023-10-26

來源:之家技術


1. 業務介紹

汽車之家二手車依託平安集團資源,聯合天天拍車,透過資料和科技賦能行業,實現C2B2C全鏈條的打通,並打造車況和車價的標準,進一步鞏固中國最大線上二手車交易服務平臺的領導地位。在C端,透過提供線上+線下賣車服務閉環,以及以真實車源+車史檔案+車況保障為基的誠信車服務,並配套責任險/車險/分期貸等金融產品,為賣車、買車使用者創造透明、可信任的二手車消費環境;在B端,透過打造數字化、智慧化、生態化的二手車雲平臺,賦能車商客戶進、銷、存全場景,提升車輛週轉效率,真正為中國二手車市場帶來全新的活力,創造獨一無二的價值。


2. 現實背景

2022年伴隨著一站式賣車業務的推進,業務已經從相對簡單的使用者和車商的資訊業務逐步轉變為使用者到車商全鏈條交易業務,業務呈現出了多種業態,既包括原有的資訊業務,也包括了交易、O2O等。新年伊始,隨著業務的發展,使用者在二手車業務的生命週期獲得了延長,使用者端和商家端在業務上結合得越發緊密。在此基礎上,還有新舊業務功能持續整合,以此來產生協同效應。越來越多的業務流程也導致了管控難度的提升以及流程上下游之間銜接點的增多。在這個業務發展的背景下,技術系統在支撐業務功能迭代時發現,由於業務的廣度和深度的增加,技術系統在實現業務目標時,服務與服務之間的呼叫鏈路增長,關係增多,業務目標服務與服務之間的轉化難度也在逐步提升,技術系統領域的複雜度也產生了新的增長。這些技術系統的問題會直接反映在業務目標的轉化上,體現在是否更快速、更高效。


3. 意義價值

技術團隊的目標是開發新功能和保障技術系統穩定執行。業務的實現嚴重依賴於技術系統的執行狀況,而越是複雜的技術系統,就越需要技術團隊來掌控其執行狀態。只有當技術團隊很好地掌握了技術系統的執行狀況時,才能助力業務目標的實現。提高技術團隊的掌控能力需要深入洞察技術系統的執行狀態。隨著技術系統的複雜度不斷提高,二手車技術團隊面臨著三個關鍵性洞察力問題。從業務視角來看,技術層面的監控系統缺乏對業務的深度監測和評估,鏈路監控無法實現對業務轉化鏈路的串聯監測,而僅有的基礎資源類監控指標無法反映業務結果。

技術團隊運用度量驅動開發提升質量:策略與實踐

二手車技術團隊作為為商業側服務的技術團隊,其目標都是支撐業務實現商業價值。技術團隊的核心問題在於提升商業轉化路徑上各個業務節點的技術質量。二手車技術團隊在技術層面需要提升對技術系統的洞察力,在業務層面需要確保商業轉化路徑的質量。上述兩個方面的訴求歸根結底都與技術系統的質量相關,既橫向保障業務在商業轉化路徑上的質量,又縱向保障技術系統在系統呼叫鏈路上的質量。綜上所述,技術團隊的任務是實現商業價值,而商業價值的實現路徑需要有很好的質量保障。技術團隊需要解決的問題是提升系統的洞察力,以夯實實現商業價值的基礎。

技術團隊運用度量驅動開發提升質量:策略與實踐


4. 實踐操作

4.1

實現商業價值

技術團隊如何實現商業價值?技術團隊可以透過最佳化業務流程、開發和實施高效的業務流程來提高公司的整體運營效率。也可以透過創新產品或服務、研發新技術或新產品來滿足市場需求,從而帶來商業價值,或者透過降低成本、最佳化技術方案來降低公司的運營成本等多種方式來在實現商業價值中做出貢獻。透過拆解技術團隊的日常工作,技術團隊在實現商業價值中的核心是兩個事項:編寫程式碼和執行程式碼,然後實現新功能、改進現有功能、修復錯誤、提高效能或降低成本等。所有這些產生商業價值的事情只有在程式碼執行時才能提供,而不是在編寫時就可以提供。因為即使程式碼設計模式適用、程式碼註釋詳盡、資料演算法高效,如果沒有執行,對於業務而言仍然沒有實現任何商業價值。執行中的程式碼才是有商業價值的。因此,為了為業務提供最大價值,技術團隊需要儘可能深入地瞭解程式碼執行時的狀態,而技術系統的度量指標通常是實現這一要求的唯一方法。

技術團隊運用度量驅動開發提升質量:策略與實踐

4.2

行業解決方案

二手車技術團隊作為服務於業務側的技術團隊,希望能夠透過對技術系統的持續改進在實現商業價值中做出更多的貢獻。結合團隊的訴求和現實情況,行業內有各種各樣的監控系統,能夠實現技術系統端到端的監控,比如Prometheus等。同時,汽車之家內部也有一些自研的監控系統,基本能夠實現全覆蓋的監控。然而,技術系統的持續改進與帶來商業價值之間總是缺乏一個有效的連結。我們逐漸認識到單純部署一個或是幾個監控系統不能解決我們的訴求,我們需要的是一種能夠建立在基於資料的決策思想之上的方法,旨在提高軟體質量、效能和可維護性,在整個軟體開發生命週期中持續收集、分析和利用各種度量和指標,透過與業務側深度協作,透過有益的決策來推動持續改進。這與度量驅動開發(Metrics-Driven Development,簡稱MDD)的理念不謀而合。

度量驅動開發主張整個應用開發過程由指標度量驅動,透過實時度量指標來驅動快速、精確和細粒度的軟體迭代。度量驅動開發的理念,不但可以讓技術團隊實時感知技術系統的狀態,及時跟蹤定位並解決問題,而且可以幫助業務和運維團隊一起關注相關的業務指標

技術團隊運用度量驅動開發提升質量:策略與實踐

度量驅動開發(Metrics-Driven Development)的理念理早是在2011年3月12日Etsy公司舉辦的一次技術交流會上,由Etsy核心平臺部負責人Mike Brittain提出的。


►應用可觀測性

業界對於度量驅動開發有許多應用的案例和實踐,來自Gartner的《2023年重要戰略技術趨勢》中的“應用可觀測性”也介紹了類似度量驅動開發一致的理念。

應用可觀測性是指,以高度協調和整合的方式 在業務職能部門、應用和運維(I&O)團隊中應 用可觀測的資料,儘可能縮短行動與響應之間 的延遲,實現業務決策的主動規劃。

► Prometheus

Prometheus官網的宣傳標語是From metrics to insight(從指標度量到洞察力)。

技術團隊運用度量驅動開發提升質量:策略與實踐

► 度量驅動開發

度量驅動開發的理念是需求階段就考慮設定關鍵指標監控項,隨著應用上線,透過指標瞭解系統狀態,透過對現狀的數字化和視覺化,幫助業務對未來進行規劃和預測,進而實現業務改善。而且度量驅動開發是一種文化的紐帶,對於敏捷開發、持續整合、持續交付,以及各個職能崗位提升合作共贏的意識具有很大的幫助。

  • 對業務而言,可以實時掌控業務各項指標,透過資料做出決策。

  • 對研發而言,可以實時感知應用各項指標、聚焦應用最佳化。

  • 對運維而言,可以實時感知系統各項指標、快速定位問題。

技術團隊運用度量驅動開發提升質量:策略與實踐

度量驅動開發可使所有可以測量的東西都得到量化和最佳化,進而為整個開發過程帶來可見性,幫助相關人員快速、準確地做出決策,並在發生錯誤時立即發現問題並修復。我們希望透過感知技術系統的執行狀態,並且不斷根據執行時的資料提供改進策略,將上線、監控、除錯、故障調查及最佳化等納入設計階段,而不是等到系統部署後再去補充。相對於透過制定各種複雜、嚴格的研發規定,以及各種評審會議來確保技術系統的安全可靠、穩定執行,度量驅動開發的理念的特別之處在於,透過採集必要的監控資訊,透過持續交付方式進行快速迭代並進行反饋和修正,所有決定都是基於對不斷變化的情況的觀察做出的。

技術團隊運用度量驅動開發提升質量:策略與實踐

4.3

團隊實踐探索

二手車技術團隊在採用度量驅動開發的實踐探索過程中,總體分為4個階段,首先,依據二手車業務的範圍進一步圈定核心領域。其次,透過核心領取構建度量指標體系。再次,透過對於度量指標的監控協同業務側推動部分指標的改善,我們在此採用了最小可行產品(Minimum Viable Product,MVP)的策略,透過構建具有最少功能的版本,儘早地推出產品以測試反饋並驗證概念的可行性。最後在驗證效果後建立視覺化的技術系統來推動整體的實踐探索更具易用性、擴充套件性的落地和發展 。

技術團隊運用度量驅動開發提升質量:策略與實踐

度量驅動開發那麼首先需要解決的問題就是度量,也就是度量指標體系的構建,回顧探索實踐的過程,在實踐探索的過程中遇到的困難的也是度量指標體系的構建。度量指標體系的構建我們的目標是做到覆蓋儘可能全面的覆蓋,我們對於全面覆蓋總結為橫向和縱向2個方向上的覆蓋。首先,橫向需要滿足業務的廣度儘可能的納入更多的核心關鍵業務,其次,縱向需要將業務-技術縱深進行深入的挖掘覆蓋儘可能多的核心關鍵技術系統。

技術團隊運用度量驅動開發提升質量:策略與實踐


團隊在度量指標體系的構建中,圍繞業務流程的服務樹,透過業務流程中各個關鍵節點的指標的下鑽和穿透到極致,再透過參考Google SRE中提出的系統監控的四個黃金指標,構造業務-技術的全覆蓋度量指標體系。

  • 延遲(Latency):衡量服務請求所需時間。例如,從技術視角所關注的HTTP請求平均耗時,而在業務視角下為使用者完成下單操作的所需時長。

  • 流量(Traffic):衡量服務的容量需求。例如,從技術視角下每秒處理的HTTP請求數或者資料庫系統的事務數量,業務視角下使用者完成下單的數量。

  • 錯誤(Errors):衡量服務錯誤發生的速率。例如,技術視角下HTTP 500錯誤數等顯式失敗,返回錯誤內容或無效內容等隱式失敗,業務視角下使用者下單失敗數量等。

  • 飽和度(Saturation):衡量當前服務的飽和度。例如,技術視角下記憶體、CPU、I/O、磁碟使用量,業務視角下的任務的完成率、優惠卷的使用量等。

二手車技術在系統建設階段完成了一個覆蓋業務上使用者端到商家端,技術上客戶端到服務端的全景監控系統的建設,核心功能包括資料視覺化、業務鏈路定製和監控預警。首先,我們複用公司的資料處理能力,包括資料收集、清洗、轉換和儲存等基礎資料處理服務,透過複用它們,我們能夠迅速獲取資料處理能力,確保資料的準確性和一致性。另外,我們透過接入前端效能監控、雲監控以及質量羅盤等監控系統,我們實現對整個技術系統的實時監控。在系統建設的技術選型上,我們選擇了低程式碼平臺作為開發工具。低程式碼平臺提供了視覺化開發環境,減少了開發工作的複雜性,不僅加快了構建和迭代速度,還提高了系統的靈活性和可擴充套件性。全景監控系統的建設不僅有助於團隊更好地理解和管理其業務和技術系統,還為未來的創新和擴充套件奠定了堅實的基礎。

技術團隊運用度量驅動開發提升質量:策略與實踐


5. 實踐成果

在上部分中對 CLS 的基礎理論進行了介紹,並透過相關示例演示了 CLS 值是如何計算的,接下來我們看一下在瀏覽器中如何透過工具對 CLS 進行跟蹤測量。

5.1

完成度量指標體系構建

完成基於二手車業務的度量指標體系構建,完成設計近400個相關資料指標,實現了二手車業務流程和技術系統的全面覆蓋,具有重要意義。這一成果為二手車業務提供了全面的資料洞察,幫助業務和技術人員更好地理解業務進展和技術系統,從而做出更明智的戰略決策、提高效率、最佳化資源分配、改善客戶體驗,最終實現競爭優勢和可持續增長。這些指標不僅提供了深刻的業務洞察,還為資料驅動的決策和創新奠定了堅實的基礎。  

5.2

改善關鍵的度量指標

商業價值提升,使用者買賣車資訊的處理效率提升240%,使用者賣車資訊的從車輛資訊的提交再到將車輛資訊通知商家進行處理這其中要經歷很多業務流程以及技術系統,透過對車輛資訊資料處理流程時長的監測發現問題點,透過與業務方協作的方式,改進車輛資訊資料的處理流程,提高了資料留轉與處理的時效,透過技術系統的改善提升了業務的運轉效率,提升了商業價值。

商業價值挽回,攔截異常車況報告解析訂單2000單,在車況報告解析積壓和延時的及時預警發現問題點,透過對異常情況的的及時跟進處理攔截異常訂單,實現商業價值的挽回。


6. 未來展望

度量驅動開發(Metric-Driven Development,MDD)在軟體工程領域扮演著關鍵的角色。它強調了度量資料在軟體開發過程中的重要性,這些度量資料可以是關於程式碼質量、效能、可維護性、進度等各個方面的資訊。

首先,度量驅動開發有助於質量的改進。透過定期收集和分析度量資料,技術團隊可以更好地瞭解軟體質量的狀態。這包括瞭解程式碼質量、效能表現、可維護性等各個方面。當度量資料揭示出問題或潛在的缺陷時,團隊可以採取措施來改進質量,確保軟體達到高標準。

其次,度量資料可以用於目標設定。技術團隊可以根據度量資料來設定明確的開發目標。例如,他們可以使用效能度量來設定效能目標,程式碼質量度量來設定程式碼質量標準。將這些目標加入到技術團隊開發過程中的指導原則,有助於確保專案朝著期望的方向前進。

此外,度量資料可以提供決策支援。專案管理和決策制定者可以根據度量資料做出明智的決策。例如,他們可以根據度量資料決定是否進行技術債務的償還、是否進行效能最佳化、是否進行安全漏洞修復等關鍵決策。

持續改進是度量驅動開發的核心原則之一。透過分析度量資料,團隊可以識別問題的根本原因,並採取措施來不斷改進開發流程、工具和實踐,以提高效率和質量。最後,度量資料還有助於提高透明度和溝通。團隊成員可以共享度量資料,讓每個人都瞭解專案的狀態和質量,有助於更好地協作解決問題。

6.1

通用化建設

下一個階段重點建設的方向是監控工具的通用化建設,通用化的工具建設將更加靈活,允許團隊根據其特定需求進行定製和擴充套件,能夠滿足不同團隊和業務的需求。通用化的工具建設將更易於擴充套件,支援整合新的資料來源、第三方外掛和自定義指令碼,以適應不斷變化的技術棧和複雜性。這將為團隊提供更大的靈活性,使他們能夠構建適合其獨特需求的度量驅動開發的解決方案,從而更好地理解和管理他們的技術系統和業務。

6.2

智慧化建計

人工智慧在軟體領域有廣泛的應用場景,比如AIOps等,未來支援度量驅動開發的工具系統需要更加自動化和智慧化。機器學習和人工智慧技術將用於分析監測資料,自動檢測問題、異常和趨勢,並提供實時的反饋和建議。透過機器學習和人工智慧技術的應用將更有助於更精準的定位問題,更快地響應和解決問題,減少人為干預的需求,提高效率、可用性和安全性,降低成本,推動團隊更好地進行資源利用。


7. 寫在最後

正如現代管理學大師彼得·德魯克所說的“如果你無法度量它,就無法改進它”,度量幫助我們更深刻認識軟體工程領域中的方方面面,設定改進方向,並衡量改進效果。


[參考文件] 

Metrics-Driven-Development https://legacy.devopsdays.org/events/2012-italy/proposals/MetricsDrivenDevelopment/

An Intro to Metrics Driven Development: What Are Metrics and Why Should You Use Them? https://www.freecodecamp.org/news/metrics-driven-development/ Metrics-Driven-Development  

Metrics-Driven-Development  https://www.infoq.com/articles/metrics-driven-development/


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027824/viewspace-2991197/,如需轉載,請註明出處,否則將追究法律責任。

相關文章