在 12 月 17 日下午的“云原生領(lǐng)導力論壇”上,七牛云業(yè)務效率負責人姬長軍帶來《企業(yè)技術(shù)棧向云原生轉(zhuǎn)型的實踐與思考》的主題演講。演講中,姬長軍講解如何通過研發(fā)賦能,來推動企業(yè)技術(shù)人才升級云原生技能,以及他們的總結(jié)與思考。

從 CNCF 2020 最新的調(diào)研報告可以看到,在采用容器技術(shù)時,受訪者普遍反饋其復雜性和對開發(fā)文化的改變是最大的挑戰(zhàn)。事實也確實如此,云原生涉及的技術(shù)棧較多,研發(fā)人員需要一定的時間去了解和實踐,因此在做技術(shù)棧升級時,技術(shù)領(lǐng)導者需要充分考慮到這一點。

如何優(yōu)雅地應對云原生技術(shù)挑戰(zhàn)?

一、基于云原生的測試左移生態(tài)

姬長軍通過三個維度分享七牛云測試左移技術(shù)落地實踐全貌,首先這個生態(tài)主打的還是業(yè)務質(zhì)量保障,是基于 PR (變動)構(gòu)建多維反饋,包括單測、全量集測、系統(tǒng)測試,甚至是增量覆蓋率分析,以及受影響服務反饋等等,能夠在源頭保障入庫代碼質(zhì)量。其次是工程效能提升,姬長軍認為這是切入測試左移所帶來的價值。核心是在 QA 未介入的情況下,能夠自動化的提供多維度的質(zhì)量反饋,對研發(fā)來講足夠優(yōu)雅,也讓整個迭代足夠流暢。最后是云原生技術(shù)的落地,七牛云選擇 Prow 作為 CI 平臺,充分利用云原生技術(shù),做到體驗最優(yōu)。姬長軍表示,這種測試左移的模式,能夠在源頭保障質(zhì)量,極大的提升研發(fā)整體迭代效率。

那七牛云在技術(shù)決策上為什么選擇 Prow ?姬長軍介紹,Prow 基本上是云原生測試基礎(chǔ)設施的一個標配,主流云原生項目都在用 Prow ,比如 Kubernetes ,Istio 等。Prow 有很多優(yōu)點,比如它輕量,基本是無狀態(tài)的,基于 CRD 實現(xiàn)。且 Prow 采用 Yaml 作為配置語言,基于 PR 的 CI 環(huán)境用完即銷毀,擁有很好的隔離性,場景需求完美契合,其豐富的 GitOps/ChatOps plugin,方便二次開發(fā)。姬長軍講解道:“有看到一些企業(yè)在考慮云原生時,會將重點放在封裝 Kubernetes 的復雜性,企圖通過一套 UI 去降低用戶上容器的負擔。雖然這個想法很好,但實踐下來可能不太現(xiàn)實,因為大家知道 YAML 基本上是 Kubernetes 聲明式 API 的標配。而聲明式 API 是云原生五大技術(shù)特性之一,如果這個時候還考慮繞過他,基本是走了彎路。因此我認為在云原生時代,技術(shù)人員應該對 YAML 比較親和才對,就像面對自己擅長的編程語言一樣?!?/p>

姬長軍表示通過云原生技術(shù),把 CI 場景做透。在解決問題的同時也給研發(fā)同學提供了一個接觸云原生的場景。而這個場景又足夠聚焦,不會讓不熟悉的 Kubernetes 技術(shù)的同學一下子被其復雜性所淹沒。所以這其實是云原生技術(shù)布道很好的一個落腳點。

除了平臺,基于云原生的測試左移里有很多技術(shù)細節(jié),姬長軍著重分享了兩個場景。一是基于PR 的增量覆蓋率精準分析,通過測試覆蓋率做精準反饋,極方便從 PR 中查看修改代碼的單測和集測覆蓋詳情?!斑@背后對應的是一款 Go 語言精準測試覆蓋率收集系統(tǒng),名叫 goc。該系統(tǒng)已經(jīng)開源,且在測試開發(fā)圈有著不錯的反響,我們看到很多使用 Go 語言的企業(yè)已經(jīng)在使用,甚至包括一些頭部企業(yè)?!奔чL軍說。

另一個是基于 PR 的受影響服務自動反饋。這一實踐背后也是涉及到一個小工具,且已經(jīng)開源。它解決問題的價值比較實在。此系統(tǒng)能夠精準反饋修改代碼影響的應用服務列表,幫助我們在發(fā)布時,避免遺漏服務。

對于第一個實踐玩法,姬長軍總結(jié)道:“基于云原生的測試左移戰(zhàn)略讓單個團隊體驗到云原生技術(shù)的魅力,但我們知道,一個人可能走得很快,一群人才走的更遠。而我們要想更大的利用云原生技能提升企業(yè)研發(fā)效能,那就必須讓更多的人都能玩轉(zhuǎn)云原生技術(shù)。”

二、將研發(fā)流程徹底搬到 Kubernetes 之上

帶著這個思路,七牛云開啟了第二個玩法,就是將研發(fā)流程徹底搬到 Kubernetes 之上去探索全員云原生姿勢。姬長軍表示,他們主要做了以下幾件事:首先,所有業(yè)務均在 Kubernetes 測試集群容器化,其次,各業(yè)務能夠基于最新代碼一鍵部署一套容器化開發(fā)測試環(huán)境,隨用隨起。然后提供姿勢,能夠一鍵將變動的服務直接發(fā)布到容器化開發(fā)環(huán)境,不需要 CI/CD。最后是拉平辦公網(wǎng)絡和 Kubernetes 集群網(wǎng)絡,做到直連 Pod IP/Cluster IP。姬長軍表示,最終的收獲效果是研發(fā)可以在日常業(yè)務開發(fā)中,自由玩轉(zhuǎn) Kubernetes。

在介紹完兩個實踐玩法之后,關(guān)于企業(yè)技術(shù)棧升級,姬長軍分享了他的總結(jié)與思考。他表示,一定要從價值導向出發(fā),通過解決和優(yōu)化實際問題來推動技術(shù)升級,同時掌握好節(jié)奏,要能階段性的拿結(jié)果。其次要以人為本,企業(yè)技術(shù)棧升級本質(zhì)也是企業(yè)人才的升級,若能促進現(xiàn)有人才的升維,當能獲得最大 ROI 。

分享到

songjy

相關(guān)推薦