品牌名稱(chēng)
閃電出行
所在行業(yè)
互聯(lián)網(wǎng)
企業(yè)規(guī)模
51-200人

結(jié)合自身企業(yè)痛點(diǎn),閃電出行工程師堅(jiān)定選型 Zadig

622次閱讀

簡(jiǎn)介

本文作者 - Alan Wang - 閃電出行工程師

持續(xù)交付作為運(yùn)維工作里極其重要的一個(gè)環(huán)節(jié),本身就存在一些歷史悠久的工具,拿 Jenkins 來(lái)說(shuō),可以通過(guò)插件實(shí)現(xiàn)各種各樣復(fù)雜的功能;隨著云原生、devops、gitops 等理念的不斷普及,也涌現(xiàn)出不少新生力量,比如說(shuō) Gitlab CI、KubeVela、ArgoCD、云效等,在 CI 或者 CD 環(huán)節(jié)中大展身手,合理使用的情況下都能顯著的提升效率;但是今天我們的主角不是上面的這些選手,而是另一個(gè)極具潛力的黑馬:Zadig。

Zadig 是一款分布式持續(xù)交付產(chǎn)品,由 KodeRover 公司基于 Kubernetes 自主設(shè)計(jì)研發(fā),具有產(chǎn)品持續(xù)交付、持續(xù)測(cè)試、持續(xù)追蹤的全流程能力,業(yè)務(wù)架構(gòu)圖:

undefined

為什么選擇 Zadig ?

原來(lái)是使用 Jenkins 做的交付,結(jié)合 kustomize 也能實(shí)現(xiàn)基于 k8s 編排應(yīng)用的絲滑交付。我們考慮其他工具的出發(fā)點(diǎn)一方面是:新增一個(gè)環(huán)境的話配置對(duì)應(yīng)的交付任務(wù)也比較復(fù)雜;另一方面是:為了方便測(cè)試和開(kāi)發(fā)同學(xué),作為一個(gè)交付系統(tǒng)來(lái)說(shuō),Jenkins 是足夠勝任的,但是并不能很好的展示被交付應(yīng)用的運(yùn)行狀態(tài)、日志等,還需要其他工具或者系統(tǒng)去看應(yīng)用運(yùn)行是不是正常、查看日志等,所以考慮是否有開(kāi)源的產(chǎn)品可以滿(mǎn)足需求,經(jīng)過(guò)一頓找找找,Zadig 憑借著出色的能力,在一眾選手中殺出重圍,另一個(gè)有力的競(jìng)爭(zhēng)者是云效,云效是阿里云的 PaaS 應(yīng)用,基于阿里云能力棧可完整覆蓋整個(gè)應(yīng)用的生命周期,簡(jiǎn)單說(shuō)明如下:

  • Zadig 核心優(yōu)勢(shì):并發(fā)工作流(云效并發(fā)任務(wù)大于 6 的話需額外購(gòu)買(mǎi))、更靈活&維護(hù)成本更低(構(gòu)建與部署過(guò)程可高度個(gè)性化定制,公共配置可復(fù)用)、100%開(kāi)源(私有化部署,不強(qiáng)耦合指定云廠商);
  • 云效核心優(yōu)勢(shì):產(chǎn)品線更全(覆蓋應(yīng)用全生命周期)、功能開(kāi)箱即用、更完善的發(fā)布策略(分批發(fā)布、灰度發(fā)布、藍(lán)綠發(fā)布,且發(fā)布過(guò)程可控);

結(jié)合需求和當(dāng)前運(yùn)維現(xiàn)狀,權(quán)衡后選擇了 Zadig,可用的核心功能:

  • 高并發(fā)的工作流:基于云原生實(shí)現(xiàn)多環(huán)境、多服務(wù)的高效并發(fā)交付;
  • 靈活的集成環(huán)境:跨環(huán)境共享服務(wù)配置,通過(guò)參數(shù)化實(shí)現(xiàn)隔離業(yè)務(wù)數(shù)據(jù)和訪問(wèn)入口區(qū)分,可以在數(shù)分鐘內(nèi)創(chuàng)建一套隔離的全新測(cè)試環(huán)境;
  • 兼容性好:無(wú)縫集成 GitHub/GitLab、Jenkins、多家云廠商等;
  • 無(wú)侵入的自動(dòng)化測(cè)試:支持對(duì)接已有的自動(dòng)化測(cè)試框架,通過(guò) GitHub/GitLab WebHook 自動(dòng)觸發(fā)測(cè)試任務(wù);
  • 開(kāi)發(fā)本地聯(lián)調(diào) CLI:支持通過(guò) IDE 插件遠(yuǎn)程調(diào)試本地代碼、日志查看等功能;

落地過(guò)程

安裝

  • Zadig 提供云上測(cè)試環(huán)境(非常 Nice)
  • 官方提供完善的安裝文檔 (opens new window),并且有微信群進(jìn)行全方位技術(shù)支持 ??????,這里只提一下推薦使用外部高可用的數(shù)據(jù)庫(kù)、存儲(chǔ)來(lái)提高部署安全性。

 使用

undefined

  • 集成外部系統(tǒng):ldap(用戶(hù)管理)、gitlab(代碼管理)、oss(保存緩存文件)、鏡像倉(cāng)庫(kù)(保存鏡像制品);
  • 將業(yè)務(wù)線的各個(gè)環(huán)境拆成不同的項(xiàng)目隔離管理;
  • 項(xiàng)目初始化流程:項(xiàng)目 >> 服務(wù) >> 環(huán)境 >> 構(gòu)建 >> 工作流交付。

價(jià)值

  • 并發(fā)工作流顯著提高了發(fā)布效率;
  • 很好的滿(mǎn)足了落盤(pán)和 Stdout 日志查看的需求;
  • 使拉起一個(gè)新環(huán)境的成本大幅度降低;
  • 自測(cè)模式使低成本高效率的開(kāi)發(fā)聯(lián)調(diào)成為可能。

 

Zadig 未來(lái)可期。