滴滴業務研發的精益實踐

滴滴技術 發表於 2022-12-06

滴滴業務研發的精益實踐

桔妹導讀:”精益生產“起源於豐田生產方式,它致力於在大量生產中實現多品種和高質量產品的低成本生產,隨著在製造業取得巨大成功,精益思想也逐步滲透到了各行各業,其中在軟體行業就演化出了很多新的理論,比如精益研發、DevOps等。精益生產堅信前置時間(Lead time)是提升產品質量、客戶滿意度和員工幸福感的最佳度量指標,而業務研發正好是處在前置時間中,並且佔有重要的地位,所以本文將從從業務研發側來聊聊精益實踐。


1.

思考



滴滴業務研發的精益實踐

說到精益就不得不提DevOps,它融合了精益和其他各種理論,從思想、方法論到實踐無所不談,我們不可能面面俱到,只能從自身的實際情況出發持續不斷的最佳化,這也正是精益思想裡表達的”為下游最佳化我們的工作“。在實際情況中,很多好的基礎服務得不到推廣,同時業務團隊也不清楚怎麼利用好基礎服務,導致很多重複性工作和資源浪費。

我們透過分析DevOps各個環節,從實際需求入手,透過規範、引導、封裝和創造基礎服務來友好的支援業務需求,同時根據業務需求推動和最佳化基礎服務的不足,達到一個良性迴圈,如果把業務團隊和基礎服務團隊比作兩個大的齒輪,為了讓他們朝著一個方向轉動,就需要一個介輪,而我們做的就是介輪的工作。下面我會從編碼、測試、監控和生態四個方面來進行詳細介紹。

滴滴業務研發的精益實踐

2.

實踐介紹


▍編碼


滴滴業務研發的精益實踐
定規範
 
在我們的實踐中,第一條做的就是定規範,為什麼把定規範放到這麼重要的位置,這就像交通規則一樣,沒有規範,交通很容易癱瘓,更別說在上面行駛更快的汽車了。包管理就是我們實踐的一個規範,我們遵循 SemVer 規範,從剛開始混亂的程式碼裡抽離出一個個的庫,並且按照 MAJOR.MINOR.PATCH 版本號規則來進行升級,同時業務在進行升級的時候自動更新到最新的相容包,這樣就可以實現 bugfix 和新功能等相容升級能快速上線,而非相容升級可以慢慢灰度。
 

滴滴業務研發的精益實踐

滴滴業務研發的精益實踐


得益於包管理的基礎,我們開始抽象一些通用元件,慢慢形成了接下來要說的"搭架子",也就是框架。
 
滴滴業務研發的精益實踐
 搭架子
 

透過整合所有基礎服務的 SDK 和基礎功能元件,就逐漸演化成了一個公司級的定製框架,我們叫她 NUWA (女媧)框架。她減少了很多重複性的工作,比如技術改造、功能複用、最佳化化升級等等,對業務來說都是透明的。在框架中最核心的部件就屬 RPC 了,因為它是微服務治理最重要的抓手,但由於歷史遺留問題,線上存在多套通訊方式:HTTP、Thrift、GRPC 等等,同時也存在多語言的問題(目前主要是 Golang 和 PHP ),尤其 php - fpm + Nginx 方式,在 RPC Server 方面,幾乎沒有什麼開源解決方案,透過各方面考慮,同時借鑑 grpc-gateway 方案,我們實現瞭如下解決方案:


滴滴業務研發的精益實踐

方案同時支援了 GRPC 和 HTTP 兩種通訊方式,但放棄了 Thrift,這主要從三個方面考慮:對現有基礎服務的相容性(比如閘道器支援的協議有限)、更靈活的透傳機制( Thrift 沒有Header 頭,無法透傳一些非業務引數,比如 Traceid,當然我知道有改造辦法,但成本比較大)、對未來技術的相容性(開源的 Service mesh 把 HTTP 和 GRPC 作為一等公民)。

▍測試


由於我們處在業務層,相當於後端服務的最上層,所以在測試上面臨的問題會更嚴重一些,因為依賴方會更多,不管是從 mock 和搭建環境上成本都是最大的,所以針對重構類的測試,我們開發了流量錄製&回放,免去了 mock 和構建環境的成本,同時實現了更精準的測試。

滴滴業務研發的精益實踐

滴滴業務研發的精益實踐

我們知道在測試環境中,線上模擬環境一直是一個高成本環境,除了機器資源,呼叫閉環(環境之間呼叫隔離)也是一個難題,如何實現複用一套穩定環境(pre)的情況下構建出每人一套的環境,並能實現呼叫閉環,我們在原來模擬環境的基礎上新增了一個 sim sidecar,它把全鏈路追蹤中的 Traceid 當成了資料通道,透過解析 Traceid 實現路由分發,最終實現以上目標。

滴滴業務研發的精益實踐


▍監控

專案上線以後,標準監控並不能滿足我們更細粒度的監控和分析,比如GC時間、耗時分析、火焰圖等等,為讓我們在發現和定位問題上更快一步,也更準確,我們依託公司監控平臺定製了自己的監控指標和採集工具,依靠這些工具不止可以排查問題,還可以給線上服務做更詳細的“體檢”,提前規避風險。


滴滴業務研發的精益實踐
滴滴業務研發的精益實踐

▍生態

以上從三個方面介紹了一下我們的精益實踐,這只是其中一部分,圍繞DevOps我們打造了一套研發生態——NUWA生態,我們把區域性的經驗推廣到全域性最佳化,很多實踐經驗在全公司遍地開花。


滴滴業務研發的精益實踐


3.

感悟與收穫


在整個精益實踐過程中,讓我明白任何技術和思想都有可能過時或者淘汰,但唯獨學習型的組織不會淘汰,因為它永遠能找到更好的辦法,並勇於嘗試,但如何打造這樣的組織,這個話題比較大,不如從我做起,把時間用在更創新的探索和最佳化上,而把那些無聊的工作交給機器去做。

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