缩短研发周期 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 面向工程师提供了一站式的服务,在老百姓内部获得一致好评。