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