2021 年初,我们计划实现一套高性能、操作便捷、易于维护的 WEB 版测试环境发布管理系统。起初已经完成了设计与关键技术点调研,也完成了基础应用架构和主流程脚本的开发,就差应用梳理和功能开发了。但是由于非技术方面的管理原因,导致项目中止。想来也是自己的一次成长与付出,做个记录纪念我死去的脑细胞,也方便以后翻出来复习。
设计出来的背景是什么?
背景上面介绍了部分,再补充下吧。
我们平时有几十个并行版本会同时在测试,原先使用环境发布系统,设计上存在一定短板,如资源利用率低、系统健壮性差、历史遗留冗余功能太多、交互卡顿,且由于原开发团队人员流失,后续的外系统对接、功能维护和改进方案很难推进,因此我们需要一个易于维护可扩展的发布系统。
要解决什么问题?
我们主要着眼于团队最为关心的质量、时间、成本,这三个方面进行了平台的设计:
质量:采用 k8s 的环境隔离方案,和 rancher 的集群管理能力,结合自定义的深度健康检查机制,保障应用服务容器的稳定在线。
时间:将 git 提交行为与 jenkins 关联,结合动态节点配置,在空闲时段自动准备好发布镜像,让应用编译行为前置,缩短发布时间。
成本:这个分为 2 个方面考虑:人员使用成本、系统资源维护成本。测试应用的占用资源,交由 rancher 在服务器资源中动态分配,摆脱我们老系统资源位置固定、ip、dns 资源固定的弊端。并且我们整合了原来复杂发布步骤,让测试人员可以更便捷管理被版本环境。
解决的核心思路是啥?
核心思路是围绕 rancher 和 jenkins 提供的动态管理能力,串联必要 api 接口,让测试环境从代码到服务的操作路径缩短。
整个流程跑起来是怎么样?
以一个版本测试环境准备为例:
这其中的 2~3 步骤,对于测试人员来说是不用管的,看到的一个部署状态的提示。
# 结语
技术的终点是管理,管理的终点是格局,格局的终点是人性。