善事利器 - 我是如何在藥師幫掌店易專案落地 Zadig 的
背景介紹
藥師幫是專注於醫藥智慧供應鏈的綜合服務平臺,而掌店易專案是負責其中藥店 ERP 系統這一環節的,為全國藥店搭建基礎設施,提供增效減本的 SaaS 解決方案。
從 2015 年起,藥師幫公司內部逐漸形成了自己的研發體系,其中包括開發,部署,測試,上線等一系列流程。近兩年起步的掌電易專案,自然繼承了公司內部的這套流程,並基於原有的流程上,進一步優化擴充套件
事出有因
- 自定義部署指令碼的開發和維護成本高
- 開發人員提交程式碼後需要手動去觸發部署指令碼,一方面是可能會被遺忘,另一方面是很被動
- 開發人員執行部署指令碼後,需要等待部署成功後再通知到測試組開啟測試,中間存在許多時間被耽擱
- 編譯部署過程依賴於物理機環境,不同環境(開發服/測試服/正式服)需要做到依賴環境一致很困難
- 沒有對所有釋出部署流程的一個情況做相應的記錄
- 需要維護大量微服務的 Yaml 配置檔案,以及其中的變數
利器善事
都說工欲善其事必先利其器,好的工具是解決問題的關鍵,所以對持續性交付解決方案的利器選型就至關重要了。
一開始從身邊同事渠道,和網友渠道,一致推薦使用 Jenkins 那套自動化部署流程,都說它是持續整合界的神器,你想用它幹啥都行。 公司內部還有一個部門在使用 GitLab 的 CI/CD,直接完成程式碼提交後觸發不同條件下的釋出部署流程,加上它新版的互動介面和統計介面做的比較優美,讓人看的垂涎欲滴,欲罷不能啊。
可是,否定 Jenkins 我個人找了兩個理由,一個是介面真的太醜,互動真的太影響心情了,另一個是它需要每個專案裡維護一個 Jenkins 流程指令碼。 否定 GitLab CI/CD 的原因同樣是因為它需要在專案裡維護一個 gitlab-ci.yml 的配置檔案,和程式碼專案"耦合"是我個人不能接受這兩個方案的最主要原因。
於是在知乎上翻找關於 "devops" 的所有文章,偶然間看到這篇 位元組和騰訊都在使用,DevOps工具Zadig究竟有何魔力 - 知乎 (zhihu.com),文章裡的幾個介面截圖直接告訴了我的直覺,這就是我腦海中一直想要的解決方案。 於是。。。。。。
學習摸索
- 安裝部署簡單:只需要一行命令,一個指令碼,一個K8s 叢集,一個名稱空間,就可以模擬出來一個環境進行學習和技術預研。 這一步就極大降低了入門的門檻了。
- 詳細的官方文件:對系統各個角落的功能都做了仔細的介紹說明,並提供了多個場景下的最佳實踐方案,其中 Spring Boot 專案持續交付 的文案給我們提供了很多的幫助。
- 社群活躍度高:微信群裡問題的及時反饋和跟進,以及後續有針對性的,點對點的飛書文件跟進問題進度,為我們處理解決問題提供了多方面渠道,這個非常 nice~
在其他產品上是很少見到這種多渠道,點對點溝通解決處理產品問題的思路的。 說實話,當初被 Zadig "找上門",專門拉了個群,還建了個飛書問題跟進文件,還遠端語音溝通問題點,真的是受寵若驚的感覺呀!極少有的一種使用者的反饋被產品重視的感覺~
起步學習 Zadig 時,非常建議先看一遍官方文件,第一次可以先簡單從頭到尾過一遍,心裡大概有個底,涉及到哪些操作步驟,操作流程,有哪些功能,可以解決自己的哪些痛點。 因為本人遇到比較尷尬的一件事情是,當一鍵安裝好 Zadig,就一頭扎進去使用了,剛開始連環境,服務,構建這幾個先建立哪個都搞不清楚,自己摸索會遇到一些沒必要浪費時間的坑的,也許文件上一句話就解決了困擾自己半天的疑惑。
測試落地
具體落地還是要從開發服和測試服啟動,目前已經通過 Zadig 完成開發和測試兩個支線的持續交付流程。
後續規劃在正式服上搭建一套 Zadig 環境,並打通開發/測試兩個環境,統一一套 Zadig 解決三個環境下的持續交付流程。 計劃正式服的釋出是已經經過測試組充分檢驗過,沒有問題的交付物進行釋出,而不需要再經過一輪拉取程式碼,編譯打包的工作流程了。
目前測試中心和交付中心兩個模組還沒有深入使用,也是後續的規劃方向。
預計後面正式服落地後,會在公司內部其他團隊做一次分享,畢竟獨樂樂不如眾樂樂嘛。 技術預研期間已和其他專案技術人員溝通過關於 DevOps 這方面的乾貨,向他們推薦 Zadig,大家都很是期待。
總結經驗
Zadig 打通了程式碼倉庫、映象倉庫、K8s 服務叢集,實現了研發人員和測試人員之間的無縫聯動,自從上了 Zadig 後,之前的痛點都不再痛了 ^_^
- 不需要再開發和維護大量指令碼
- 研發人員提交程式碼後,通過工作流自動觸發部署,成功後通過企微 Webhook 通知到測試組的企微群裡
- 打包編譯都是在 Docker 容器中完成,脫離對物理機環境的依賴,交於 Zadig 統一環境管理
- 研發部署過程中,所有流程都有記錄可循,方便追溯、定位問題
- 微服務的 Yaml 配置檔案可以基於統一一個模板檔案,各個微服務也都有各自的變數管理
- 研發人員提交程式碼後直接根據企微群通知就可以知道釋出構建的結果是成功還是失敗,如果失敗了也可以快速通過連結跳轉到構建命令提示介面,檢視原因,為研發人員節省了大量之前花在編譯構建釋出流程的時間
- 測試人員也可以根據企微群的服務釋出記錄提示,看到哪些缺陷已經被修復部署了,節省了和研發人員之間的溝通成本,避免了研發人員已修復的 Bug 但是忘記通知測試人員的情況
建議期待
- 關於整合介面自動化測試流程的實踐(類似現在比較流行的 Apipost,Apifox 這類產品),接下來會重點研究和實踐 Zadig 測試中心模組,希望把團隊的自動化測試也做起來,解決測試端的痛點
- 是否可以考慮接入 Istio,實現服務的灰度釋出,金絲雀釋出等應用場景
- 基於 Zadig 的 GitOps 實踐
- 極速 Zadig 構建效率是這樣煉成的
- 主機基礎設施如何使用 Zadig 做持續交付
- Zadig 環境負載均衡:0 人工干預,極速部署
- 打通了!Jira Zadig 實現需求與研發過程追蹤
- 雲原生 DevOps 現狀調研問卷徵集:KodeRover 聯合 OSCHINA 推出
- Zadig v1.13.0 相信開放的力量,工作流連通一切價值
- 飛書影片會議端到端整合測試工程實踐經驗總結 - Zadig 應用案例
- 在解決了 2961 個使用者反饋後,我做出了這樣的改變...
- 基於 Ingress Controller 在叢集外訪問 Zadig 自測環境(最佳實踐)
- iMile 利用 Zadig 多雲環境周部署千次,跨雲跨地域持續交付全球業務
- 穩!上千微服務接入 Zadig 的最佳姿勢(Helm Chart 篇)
- 穩!上千微服務接入 Zadig 的最佳姿勢(K8s YAML 篇)
- Zadig 洞態 IAST:讓安全溶於持續交付
- TT 語音落地 Zadig:開源共創 Helm 接入場景,環境治理搞得定!
- 00後雲工程師用 Zadig 為企業研發開源節流
- Zadig 構建究竟有何強大?一起來實踐
- 妙盈科技全面實施 Zadig 擁抱雲原生
- Zadig SonarQube,為開發過程安全保駕
- Zadig v1.12.0 推出 VS Code 外掛,全面支援 GitOps ,好工具就要到最後一公里