Zadig 將研發(fā)復(fù)雜性下沉到平臺,讓開發(fā)更聚焦創(chuàng)新
妙盈科技(MioTech) 是一家 ESG 領(lǐng)域的金融科技企業(yè),服務(wù)國內(nèi)外眾多大型金融機構(gòu)。妙盈的基礎(chǔ)架構(gòu)團隊一直致力于在持續(xù)交付領(lǐng)域通過技術(shù)更迭,為開發(fā)者提供更便捷和高效的基礎(chǔ)平臺,提升研發(fā)效率,支撐業(yè)務(wù)的高速發(fā)展。
痛點分析
在引入 Zadig 項目之前,我們采用的是 GitLab 的 CI 加上自研的 CD 系統(tǒng)來實現(xiàn)整個部署流程。雖說也能正常工作,但使用和維護起來還是有諸多不便:
- 需要開發(fā)和運維人員熟悉 GitLab CI 的 YAML 配置語言,有一定的學(xué)習(xí)成本。
- 修改 .gitlab-ci.yml 需要穿梭于多個項目倉庫,不便于統(tǒng)一維護。
- Runner 在 GitLab 之外,需要單獨配置管理。
- CI 和 CD 的流程不在一個系統(tǒng)里,體驗感割裂。
- 與 GitLab 緊耦合,不能支持其他代碼托管平臺。
選型之路
帶著以上的痛點,并且站在云原生領(lǐng)域蓬勃發(fā)展的今天,重新尋找一個體驗更好的解決方案的意念越發(fā)強烈。
由于我們已經(jīng)采用了 KubeSphere 作為 Kubernetes 的管理方案,所以對集群管理方面要求并不高,側(cè)重點是在于研發(fā)側(cè)的流程打通和易用好用的上手體驗。
有兩條路徑可選擇:
- 使用 DevOps 的一站式解決服務(wù)。目前在該領(lǐng)域,國內(nèi)已有多家公司入場。其中不乏互聯(lián)網(wǎng)巨頭的產(chǎn)品,例如阿里云云效、騰訊云 CODING,以及專業(yè)做 DevOps 的公司,例如 JFrog 等。
- 尋找一個全面擁抱 Kubernetes 和云原生的開源項目。
考慮到團隊的規(guī)模、技術(shù)儲備以及公司開放創(chuàng)新的發(fā)展理念,我們還是選擇了第二條尋找開源的路徑。
即便將目光放到開源領(lǐng)域,DevOps 發(fā)展至今,開源的 CI/CD 產(chǎn)品品類也已經(jīng)相當(dāng)之多。其中不乏有CI 老牌勁旅 Jenkins、CD 強敵 Spinnaker。CNCF 孵化項目 Argo,F(xiàn)lux;以及諸如 Jenkins X,Tekton 之類的產(chǎn)品。
以上這些開源項目各有優(yōu)勢和缺點,有的功能強大但設(shè)置復(fù)雜,上手難度高。有的易用性還可以但調(diào)研下來功能又不太滿足需求。機緣巧合,在去年的優(yōu)秀中國開源原生創(chuàng)企中發(fā)現(xiàn)了 KodeRover 創(chuàng)企以及其主推的 Zadig 項目,在官網(wǎng)的橫評對比中展現(xiàn)出"過人”的能力,便決定先嘗試一下,看看是否名副其實。
簡單試用之后的第一印象是:比想象中的還好。部署簡單,使用方便,并且一個平臺解決了構(gòu)建、部署、測試、制品管理、定時調(diào)度、webhook、通知等方面功能都具備,確實能滿足我們的需求。
進一步了解之后,發(fā)現(xiàn) Zadig 的側(cè)重點更加偏向于研發(fā)側(cè)的流程打通,面向的重點人群是業(yè)務(wù)開發(fā)和測試工程師,非常符合我們對該平臺的定位。并且Zadig 基于云原生的理念開發(fā),以及對 Kubernetes 的全面支持,也與妙盈的全面容器化基礎(chǔ)架構(gòu)建設(shè)理念高度吻合。基于以上種種,便與Zadig 結(jié)了緣。
落地方案
由于 Zadig 支持 EKS/ACK/GKE 等容器云平臺,部署輕松無障礙,所以落地部分其實很順利。我們采用的部署方式是基于 Kubernetes,采用 Helm 一鍵在 EKS 上部署。最終使用單獨集群部署的方式,并同時管理開發(fā)/生產(chǎn)兩套 K8s 集群。需考慮預(yù)留資源以執(zhí)行構(gòu)建任務(wù)。同時可配合 autoscaler 使用,增加集群靈活性也可最大限度節(jié)省成本。
Zadig 還支持多種統(tǒng)一認證方式,方便對接企業(yè)SSO。我們也成功對接了 OAuth 統(tǒng)一認證,用戶管理更方便。
成果初現(xiàn)
短暫的嘗試之后,我們便開始了線上開發(fā)、生產(chǎn)環(huán)境的遷移改造工作。截至目前,已將 80% 的部署項目、50% 的構(gòu)建項目遷移到 Zadig 平臺,測試項目也逐步測試和上線的過程中。
整體感受如下:
1. 構(gòu)建易用:在 Dockerfile 構(gòu)建完備的情況下,只需編寫簡單的構(gòu)建腳本即可使用,使用難度低。亦可對接 GitLab webhook,實現(xiàn)自動觸發(fā)。
2. 部署易用:通過交付物部署的手段,僅需從鏡像 Tag 列表中選取版本即可進行手動部署,或者通過自動同步 Chart 倉庫的功能,實現(xiàn)GitOps場景。
3. 測試易用:獨立的測試中心設(shè)計,屏蔽了 Kubernetes 概念,測試工程師無需關(guān)心 Kubernetes 的底層邏輯,只需編寫自己熟悉的測試腳本即可方便地利用集群容器資源運行測試 Case,降低了測試人員的心智負擔(dān)。調(diào)試完畢后還可對接到工作流中實現(xiàn)測試自動化。
一句話總結(jié):Zadig 把復(fù)雜性下沉到工具端,方便了業(yè)務(wù)開發(fā)和測試的使用,讓不同專業(yè)的人將能力聚焦在自己的專業(yè)領(lǐng)域中。