自動駕駛團隊如何用 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,開放,鏈接,專業。