品牌名稱
老百姓大藥房
所在行業(yè)
零售
企業(yè)規(guī)模
1001-5000人

縮短研發(fā)周期 1半,完成 50+項(xiàng)目持續(xù)交付

410次閱讀

背景介紹

老百姓大藥房是 是一家由單一民營(yíng)藥店發(fā)展起來的大型醫(yī)藥連鎖企業(yè)。老百姓大藥房除藥品零售外,同時(shí)兼營(yíng)藥品批發(fā)與制造,而服務(wù)開發(fā)平臺(tái)是對(duì)于開發(fā)人員提供更便捷的數(shù)據(jù)分析和可視化平臺(tái)。

從 2019 年起,老百姓技術(shù)研發(fā)團(tuán)隊(duì)希望通過工具化的形式打造一個(gè)適合自己的持續(xù)交付平臺(tái)。我們一開始是基于 Jenkins 和 GitLab 通過 Shell 腳本實(shí)現(xiàn)流水線部署到開發(fā)、測(cè)試、生產(chǎn)環(huán)境。近兩年隨著項(xiàng)目越來越多,傳統(tǒng)的配置方式繁雜,需要花大量時(shí)間進(jìn)行配置和調(diào)整,已不滿足降本提效的發(fā)展需要,于是我們開始采用 云原生的方式 ,對(duì)持續(xù)交付進(jìn)行優(yōu)化和拓展。

流程和痛點(diǎn)分析

我們過去的流程如下:

undefined

痛點(diǎn)的總結(jié):

  • 從服務(wù)到容器化轉(zhuǎn)變到上云的時(shí)間并不長(zhǎng),對(duì)于自動(dòng)化這塊沒有實(shí)際的操作經(jīng)驗(yàn)。
  • 老百姓大藥房傳統(tǒng)運(yùn)維方式需要大量的人力,去維護(hù)服務(wù) YAML 腳本,通過合并代碼觸發(fā) Jenkins 構(gòu)建鏡像,再用 Shell 腳本進(jìn)行服務(wù)更新發(fā)布的繁雜過程。
  • 對(duì)于運(yùn)維人員極其不便,發(fā)布的時(shí)間長(zhǎng),開發(fā)人員難以調(diào)試。
  • 發(fā)版服務(wù)日均 20+,通過人為去解決的問題,容易會(huì)出現(xiàn)字段漏了,配置少了的情況從而提高運(yùn)維的難度。
  • 需要人工截圖并通知開發(fā)人員確認(rèn)服務(wù)是否已發(fā)布,沒有適配企業(yè)微信機(jī)器人。

怎么發(fā)現(xiàn) Zadig 開源項(xiàng)目

從 2021 年度 OSC 中國(guó)開源項(xiàng)目評(píng)選中發(fā)現(xiàn) Zadig 項(xiàng)目,隨后我從官網(wǎng)了解, Zadig 是一個(gè)面向開發(fā)者設(shè)計(jì)的開源、高可用 CI/CD 項(xiàng)目。在不改變現(xiàn)有的流程前提下,可以無縫集成 Github、Harbor、Jenkins、多家云廠商。契合貼切老百姓現(xiàn)有的環(huán)境,混合云(私有云+公有云部署)。 看字節(jié)和騰訊也有用 Zadig,于是便在本地環(huán)境快速拉起 Zadig 環(huán)境,簡(jiǎn)單的使用 Demo 跑流程結(jié)果出乎意料的好用。

如何快速上手 Zadig 使用

聯(lián)系官方社區(qū)人員,加入社區(qū)微信群。通過社區(qū)人員指導(dǎo),Helm 一鍵部署拉起,生產(chǎn)環(huán)境數(shù)據(jù)持久化。跟著官網(wǎng)的文檔流程一步步走和社區(qū)人員的疑問解答,很快就上手了,配置工作流及構(gòu)建流程。一開始 Zadig 有一些小 Bug 和問題,官方迭代的速度非常快。一個(gè)月一個(gè)版本迭代快速解決相關(guān)的問題。

那么多開源產(chǎn)品為什么選擇使用 Zadig

  • 部署簡(jiǎn)單一條命令即可拉起 Zadig 環(huán)境,學(xué)習(xí)門檻非常低社區(qū)人員非常熱情指導(dǎo)如何快速使用 Zadig 構(gòu)建流程。
  • UI 界面簡(jiǎn)潔好看,配置清晰易懂。在官方文檔有詳細(xì)說明項(xiàng)目持續(xù)交付的案例,給我們提供了很多幫助。
  • 社區(qū)活躍度很高,為企業(yè)快速落地 Zadig,他們團(tuán)隊(duì)為老百姓單獨(dú)拉起了內(nèi)部落地群。有問題在微信群里反饋,很快速就有技術(shù)人員一對(duì)一的解答相關(guān)問題,后續(xù)也有針對(duì)性的計(jì)劃跟進(jìn)問題進(jìn)度。

如何測(cè)試落地 Zadig

具體落地從測(cè)試環(huán)境啟動(dòng),目前 已通過 Zadig 完成開發(fā)環(huán)境 50+ 項(xiàng)目的持續(xù)交付流程。

undefined

目前是由測(cè)試環(huán)境搭建 Zadig ,通過集群管理同時(shí)接入其他集群。老百姓生產(chǎn)環(huán)境 K8s 集群有 16+,后面規(guī)劃單獨(dú)搭建一個(gè) Zadig 集群專門作為 CI/CD 集群托管現(xiàn)有的生產(chǎn)環(huán)境。統(tǒng)一一套 Zadig 去 解決多個(gè)環(huán)境下的持續(xù)交付流程。同時(shí)集成代碼掃描和自動(dòng)化測(cè)試,發(fā)布預(yù)生產(chǎn)環(huán)境通過測(cè)試組驗(yàn)證通過后,再將交付物進(jìn)行發(fā)布,不需要再次經(jīng)過編譯打包的流程。

總結(jié):

  1. 統(tǒng)一的 Dockerfile 模板以及 YAML 模板 方便管理,通過一個(gè)模板批量構(gòu)建服務(wù)。
  2. 快速拉起環(huán)境dev、test、pro 項(xiàng)目環(huán)境,一鍵部署。
  3. 流程編排微服務(wù)并行構(gòu)建,實(shí)現(xiàn)持續(xù)部署和交付。無縫集成GitLab、Harbor、Maven、Sonar、Jmeter及阿里云和騰訊云產(chǎn)商。
  4. 解決微服務(wù)聯(lián)調(diào),每一次 PR 都會(huì)經(jīng)過構(gòu)建、部署、測(cè)試整個(gè)流程。
  5. UI簡(jiǎn)潔易用,上手可以按照官方的指引文檔一步步完成,不需要花費(fèi)太多的學(xué)習(xí)成本。
  6. 對(duì)比 Jenkins ,Zadig 的構(gòu)建部署效率,快了一倍不止
  7. 通過 Zadig 系統(tǒng)進(jìn)行多集群管理,可以同時(shí)接入和使用外部多個(gè) K8s 集群資源
  8. 通過 Webhook 通知企業(yè)微信機(jī)器人,快速發(fā)現(xiàn)問題。

 

Zadig 面向工程師提供了一站式的服務(wù),在老百姓內(nèi)部獲得一致好評(píng)。