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

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

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

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

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

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

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

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

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

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

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

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

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

分享到

songjy

相關(guān)推薦