自動駕駛團隊如何用 Zadig 為開發者提供更好體驗

語言: CN / TW / HK

作者:某車企自動駕駛中心 大資料 SRE 工程師

背景介紹

某頭部新能源車企成立於 2014 年,是一家專注研發未來出行的科技公司,用科技創造豐富多彩的出行生活。自動駕駛中心是公司核心中心,致力於構建資料平臺全棧自研和資料閉環迭代的能力,為此我們擁有一支多元化創新性人才團隊。
作為自動駕駛中心大資料部門 SRE 團隊,為自動駕駛大資料業務的高速迭代提供強有力的技術支撐,促進公司的技術創新和產品迭代。

挑戰分析和方案思考

從早期的研發到現在的 SRE 工程師,變化的是 從基礎設施能力的使用者,轉變為基礎設施能力的構建者。雲原生概念讓我感受較深,很多企業各條業務線都選擇上雲並致力於構建雲原生能力,隨之業務應用架構也會應變來追求更高的迭代效率,以及更強的穩定性建設。
CI/CD 作為提高軟體迭代效率的重要環節之一,起初我們部門使用 GitLab + Jenkins 指令碼配置+ 一部分的自動化模式來構建,這個過程中也面臨諸多痛點。隨著業務的迅猛發展產生越來越多的 Jenkins Job,碎片化指令碼導致管理和維護成本過高。
對於交付端混合場景,其部署和運維複雜度都較高,隨著專案的增多,以下痛點尤為明顯:
  • 上線資源裝置只能人工確認,資源裝置沒有統一的管理平臺。
  • 研發排查問題困難,對於服務進行診斷,每有一個資源裝置都需要給研發單獨分配 SSH 許可權,管理成本巨高。
  • 開發 debug 過程需要登入統一的內網主機使用 Kubectl 操作,許可權不可控,風險大。
  • 對於新上專案,面對不同的使用場景,需要建立多條 Jenkins Job,配置繁瑣,維護負擔重。
基於此,讓我們不得不重新思考是否需要迭代一套新的 CI/CD 體系,其中我們調研了 ArgoCD、Tekton 等方案,它們的功能點都較為豐富,並且易於擴充套件,但是基於它們,我們內部需要花較長時間來構建上層體系,週期較為長。我們亟待建設應用構建與運營一體、許可權管控、多環境管理以及效能洞悉等工程能力。
在調研其中,Zadig 開源平臺是從朋友處瞭解到,然後我們就嘗試去了解與試用。KodeRover 團隊把構建與部署原本繁瑣的操作做的簡單明瞭,讓使用者或者流程構建者不用太費精力去構建繁瑣的步驟, 大部分操作都在一個平臺完成,並且豐富的許可權管控以及多叢集接入等等功能能很好滿足我們的需求。在完成調研後,我們選擇 Zadig 作為我們下一階段的 CI/CD 體系建設的重要元件。
 

落地和實踐過程

由於我們大資料部門有大量的採集車,需要對採集車的採集軟體平臺進行管理以及版本釋出,同時內部有很多平臺軟體,最終我們採用 Zadig 的主機和 Helm 兩種方式接入。Zadig 的主機管理方式可以批量管理我們的採集車軟體平臺,而大資料部門內部的所有平臺軟體都通過 Helm 方式接入管理,形成了較為統一的 GitLab + Zadig 的管理模式。以下我們對兩種接入方式的看法與瞭解
Zadig 的主機方式:
  • 支援系統主機管理的同時支援了專案級別的主機管理,專案成員可以自己上下線資源裝置
  • 主機管理支援強大的探活機制(TCP/HTTP 協議),精準檢測資源裝置是否線上
  • 服務可以檢視到關聯的主機資源,支援登入主機,方便開發登入資源裝置診斷問題
  • 完備的許可權控制,極大降低了管理成本,實現安全風險可控
Helm 場景接入服務
由於我們微服務體量比較可控,根據 Zadig K8s Helm Chart 教程我們很快搭建起來基礎的專案環境和工作流,然後採用 K8s 叢集拓展不同的測試環境(dev/staging) 來滿足不同團隊的環境需求。通過 Zadig 環境管理,給研發提供統一協作平臺:

 

截至目前,Zadig 已經全面推廣了,基本上覆蓋了 90% 以上業務,研發非常喜歡使用,涵蓋了國內和北美團隊的工程師日常開發、測試、驗證工作。

當前的成果及未來計劃

在我們場景下,主要有以下的亮點,讓工程師日常工作極其便利:
  • 統一協作平面:不需要切換各種平臺和系統,通過 Zadig 提供統一的開發者入口,只要通過程式碼觸發和日常環境的協作就能完成大部分工程師的日常工作。
  • 環境隨時取用:在 Zadig 上一鍵建立 dev 和 staging 環境,在不同的叢集上隨時幾分鐘複製環境,隨時滿足自測需求
  • 日常開發過程更便利:直接在 Zadig 上檢視服務的狀態、服務日誌、登入到容器中排查診斷問題,減少多平臺切換
  • 高併發工作流觸發:在 Zadig 上觸發多服務的構建,研發更新服務更方便,不需要額外維護工作流的負擔。
截至目前,已有 11 個叢集,44 個專案、三百多個服務接入 Zadig,滿足工程師日常程式碼驗證的需求。
 
對於未來計劃,由於我們有北美的同事,期望 Zadig 可以支援英文版 i18n。我們也會陸續基於 Zadig 構建上層流程體系,也期待 Zadig 能提供更多的擴充套件能力,讓廣大的使用者可以較為便捷的將 Zadig 融入公司流程中,並且也希望 Zadig 在擴充套件能力上發揮更多想象力,集廣大的研發能力共同推進 Zadig 的生態建設。

 

Zadig,開放,連結,專業。