品牌名稱
思創科技
所在行業
零售
企業規模
51-200人

用 Zadig 為研發開源節流完成廣州公交系統的數字化轉型

458次閱讀

思創科技作為一家公交行業的互聯網轉型企業,在規模較小的時候開發人員能夠擔任“全棧工程師”。所有的研發步驟節點都可以由開發人員參與完成項目迭代上線。但是隨著公司的發展,項目的增長和需求的繁多。研發人員在進行代碼驗證的時候,花費了太多的時間。無法全身心投入到研發過程當中。

同時針對于研發人員天馬行空的想法驗證也有著局限性。一個行業的創新,必定是需要驗證眾多天馬行空的想法,才能最終實現突破性的創造。但如果依舊按照之前傳統的研發體系,那么軟件研發創新的可能性就會隨著時間的發展,研發人員的精神疲憊,無法獲取靈感創新。

IT 技術發展自身技術的跟進和變革(虛擬化無法滿足現有狀態)

傳統的虛擬化在項目中已經逐步地感到“疲憊”。在項目申報中,服務器一般都會有著部分的冗余空間,但是恰恰就是這部分的冗余空間,在某些時刻就是浪費。我們需要做到一個變革,一場能夠將 IT 利用率達到最好的變革。

DevOps 和容器化隨著研發瓶頸逐漸出現在我們后續的工作中。

DevOps 的探索

為什么選擇 Zadig?

起初我們選擇的是 Jenkins ,因為 Jenkins 在業內太有名。隨意在馬路邊上拉上一個 IT 從業者,你問他 Jenkins 是什么,他肯定知道。哈哈。隨后的落地中,我們也確實是使用著 Jenkins 去做一個探索。起初想做到如下,但是效果不太理想。

undefined

  • Jenkins 首先創立的初衷是針對于主機服務,在創立的時候并沒有為 Kubernetes 留下一道方便之門。
  • Jenkins 做持續集成部署有著繁多的 Pipeline 和 Jenkinsfile,Dockerfile 以及各類 K8s 服務 Yaml 文件。在文件管理上略顯雜亂。這些東西都是比較有規律的文件,缺乏統一管理。且如果 Jenkins 是包括了以往傳統的主機部署項目的話是可以說是繼續探索下去的,但是在大規模實現容器化編排的現在 Jenkins 在我們這就有點乏力
  • 但是 Jenkins 有著靈活的插件和 Pipeline ,可以實現人工介入發布,這是我們比較喜歡的一點。但隨著項目的上線和使用,發現他的并發構建在現有環境下較慢故暫時擱置。
  • Jenkins Pipeline 在微服務發布項目中,需要修改 Pipeline ,造成不必要的麻煩。
  • Jenkins 無法對服務的發布順序做改變,只能通過腳本的形式手動選擇順序發布。

在后續的工作中,發現了 Zadig ,他成為了我們高效研發的“尚方寶劍”

初識 Zadig

Zadig 其實我覺得接觸起來非常容易,前提是你要了解基本的 K8s 概念和你需要構建服務的語言基本情況,這樣你使用起來就是直接起飛

undefined

Zadig 在我們這有著高效的研發流程,具體體現在:

  1. 高效管理 K8s 服務 Yaml,Helm,微服務的 Dockerfile 的模版,完美解決了 Jenkins 中繁多的文件問題
  2. Zadig 完美支持云原生項目和主機項目,可以實現魚和熊掌,我都要!
  3. 在我們扁平化的環境下, Zadig 的效能能夠完美覆蓋我們的所有場景
  4. Zadig 環境管理能力很強大,能夠提供其他工具無法提供的環境復制功能,在不同環境下支持不同的 Configmap,環境變量等
  5. Zadig 進行 CI 提速較為明顯
  6. 具有強大的統計數據模塊

我們從 1.6 版本就開始使用 Zadig ,那個時候 Zadig 還是一個比較稚嫩的 CI/CD 工具,但是現在都已經發版到 1.12 了,具有太多有用的功能了。

那個時候我們就是十分看重 Zadig 對 Kubernetes CI/CD 的管控力。只需要定義好相關服務的 Yaml ,這個 Yaml 可以從模板庫中提取,就十分的 Nice。填寫相關的服務參數,就可以實現運行了。并且他可以自定義運行順序,可以說非常棒。

在后續對 Zadig 的關注中,我們發現他逐步的推出了新的產品。我們對 Zadig 也十分充滿信心。在后續我們也嘗試過升級,但是那個時候自己電腦上 VMware 做虛擬化升級測試是可以,信心滿滿的去生產做升級。好家伙,什么服務都起來了,但就是無法訪問 UI 界面。只能回退,后續我們在和官方接觸后才發現是 Istio 和 Zadig 的網關沖突,在升級的時候關閉了相關的參數后才正常升級,體驗到了更好的產品。通過這個事件我也體會到了開源產品社區和用戶之間的聯系更緊,那么問題定位也能更方便,不斷的使用產品,不斷的反饋,社區不斷的打磨,鑄就一個更為強大的產品誕生,未嘗不是一件美事。

怎么判斷 Zadig 是否適合你

如果你們公司的是和我們一樣在推動數字化轉型,容器化編排,那么 Zadig 十分適合你。

如果你們公司用著 Jenkins 做傳統的主機發布管理,這個時候要上 Kubernetes 實現容器化,那么 Zadig 同樣適合你們,可以做到 Jenkins 和 Zadig 的集成發布。

如果你們公司的項目較為扁平化,那么 Zadig 可以基本覆蓋 95% 的場景,加上 Zadig 眾多的優勢,何樂不為呢?

如果你們公司剛剛開始進行云原生探索,那么 Zadig 是你們的不二之選,上手快,社區活躍度高。問題響應之快,絕對可以為貴公司 DevOps 理念的落地提供技術支撐。

Zadig 實現的價值

Zadig 不僅僅是一個優秀的 CI/CD 工具,他更是 DevOps 文化的踐行者。通過 Zadig 我們實現了高效研發,在研發人員的每日研發利用率上對比以往做到了更大的提升,省出寶貴時間去創造更多產品價值。

  • 針對需求迭代,做到了每日服務需求有更新
  • 針對開發驗證,可以做到集成環境資源的收縮自如
  • Zadig 不僅實現了自身的企業價值,還幫助解決了我們這些軟件企業發展中的許多瓶頸問題。

使用情況總結

  • 當前思創科技產品業務線 5 條,其中 3 條業務線都已完全接入 Zadig,其余 2 條業務線屬于傳統業務,更新頻率較低。
  • 通過 Zadig 管理了3個集群,其中 2 套集群為遠端業務集群。部分環境無法通過 Kubernetes 去編排容器實現遠程發布,通過zadig的主機項目,實現遠程容器發布,方便后續的業務遷移。
  • 運行環境 17 個其中 12 個測試、5 個生產,共計 200+ 個應用程序,實現了 4000+ 次自動化構建和部署,部署成功率 99% 以上 從發布頻率上看,以往都是有開發人員主動介入發布,在本地通過打包的形式部署在服務器上,發布。一天發布的頻率大約在 10 次上下。在接入 Zadig 之后代碼更新迭代的頻率得以飛速提升,慢的一天也是30 左右,快的一天 70 余次。

undefined

undefined