縮短研發周期 1半,完成 50+項目持續交付
背景介紹
老百姓大藥房是 是一家由單一民營藥店發展起來的大型醫藥連鎖企業。老百姓大藥房除藥品零售外,同時兼營藥品批發與制造,而服務開發平臺是對于開發人員提供更便捷的數據分析和可視化平臺。
從 2019 年起,老百姓技術研發團隊希望通過工具化的形式打造一個適合自己的持續交付平臺。我們一開始是基于 Jenkins 和 GitLab 通過 Shell 腳本實現流水線部署到開發、測試、生產環境。近兩年隨著項目越來越多,傳統的配置方式繁雜,需要花大量時間進行配置和調整,已不滿足降本提效的發展需要,于是我們開始采用 云原生的方式 ,對持續交付進行優化和拓展。
流程和痛點分析
我們過去的流程如下:
痛點的總結:
- 從服務到容器化轉變到上云的時間并不長,對于自動化這塊沒有實際的操作經驗。
- 老百姓大藥房傳統運維方式需要大量的人力,去維護服務 YAML 腳本,通過合并代碼觸發 Jenkins 構建鏡像,再用 Shell 腳本進行服務更新發布的繁雜過程。
- 對于運維人員極其不便,發布的時間長,開發人員難以調試。
- 發版服務日均 20+,通過人為去解決的問題,容易會出現字段漏了,配置少了的情況從而提高運維的難度。
- 需要人工截圖并通知開發人員確認服務是否已發布,沒有適配企業微信機器人。
怎么發現 Zadig 開源項目
從 2021 年度 OSC 中國開源項目評選中發現 Zadig 項目,隨后我從官網了解, Zadig 是一個面向開發者設計的開源、高可用 CI/CD 項目。在不改變現有的流程前提下,可以無縫集成 Github、Harbor、Jenkins、多家云廠商。契合貼切老百姓現有的環境,混合云(私有云+公有云部署)。 看字節和騰訊也有用 Zadig,于是便在本地環境快速拉起 Zadig 環境,簡單的使用 Demo 跑流程結果出乎意料的好用。
如何快速上手 Zadig 使用
聯系官方社區人員,加入社區微信群。通過社區人員指導,Helm 一鍵部署拉起,生產環境數據持久化。跟著官網的文檔流程一步步走和社區人員的疑問解答,很快就上手了,配置工作流及構建流程。一開始 Zadig 有一些小 Bug 和問題,官方迭代的速度非常快。一個月一個版本迭代快速解決相關的問題。
那么多開源產品為什么選擇使用 Zadig
- 部署簡單一條命令即可拉起 Zadig 環境,學習門檻非常低社區人員非常熱情指導如何快速使用 Zadig 構建流程。
- UI 界面簡潔好看,配置清晰易懂。在官方文檔有詳細說明項目持續交付的案例,給我們提供了很多幫助。
- 社區活躍度很高,為企業快速落地 Zadig,他們團隊為老百姓單獨拉起了內部落地群。有問題在微信群里反饋,很快速就有技術人員一對一的解答相關問題,后續也有針對性的計劃跟進問題進度。
如何測試落地 Zadig
具體落地從測試環境啟動,目前 已通過 Zadig 完成開發環境 50+ 項目的持續交付流程。
目前是由測試環境搭建 Zadig ,通過集群管理同時接入其他集群。老百姓生產環境 K8s 集群有 16+,后面規劃單獨搭建一個 Zadig 集群專門作為 CI/CD 集群托管現有的生產環境。統一一套 Zadig 去 解決多個環境下的持續交付流程。同時集成代碼掃描和自動化測試,發布預生產環境通過測試組驗證通過后,再將交付物進行發布,不需要再次經過編譯打包的流程。
總結:
- 統一的 Dockerfile 模板以及 YAML 模板 方便管理,通過一個模板批量構建服務。
- 快速拉起環境dev、test、pro 項目環境,一鍵部署。
- 流程編排微服務并行構建,實現持續部署和交付。無縫集成GitLab、Harbor、Maven、Sonar、Jmeter及阿里云和騰訊云產商。
- 解決微服務聯調,每一次 PR 都會經過構建、部署、測試整個流程。
- UI簡潔易用,上手可以按照官方的指引文檔一步步完成,不需要花費太多的學習成本。
- 對比 Jenkins ,Zadig 的構建部署效率,快了一倍不止
- 通過 Zadig 系統進行多集群管理,可以同時接入和使用外部多個 K8s 集群資源
- 通過 Webhook 通知企業微信機器人,快速發現問題。
Zadig 面向工程師提供了一站式的服務,在老百姓內部獲得一致好評。