发布系统调研

背景:在使用acdeployment系统之前,我们20+个前后台项目均使用ars系统进行发布,但ars系统因底层安全漏洞需要下线,经过调研后发现虽然有蓝盾,橘子等CI平台可实现git项目文件传输至IDC的功能,但发布页面的信息展示,灰度ip发布,灰度文件发布,文件回滚等操作均支持得不够友好,需要自研一套小型发布系统进行替代。 发布系统需要在功能上贴近ARS系统,操作流程也需要尽量与ARS类似,使大家使用起来可以无门槛,另外,发布系统最好仍通过OCI接入,这样切换成本会比较低,只修改OCI插件配置为新发布系统的配置即可切换完成。

发布模式介绍

1. 文件发布

纯文件发布在前容器时代一直是主流,到了容器时代该发布方式就日渐式微了。不过在解释型语言发布的场景下依然有一席之地。

2. 镜像发布

容器时代的主流发布模式,对于编译型语言来说该发布方式是绝对的主流。

流程解构

发布系统属于发布阶段的范畴,隶属于DevOps中的CD环节。

发布系统需要具备的功能

维度 功能 描述 功能承载的系统
提醒 进度提醒 需要知道发布所属的阶段 oci
提醒 发布单提醒 需要知道去哪里提单 acdeployment
提醒 邮件提醒 说明此次的改动 acdeployment
合法性 语法检查 存在语法错误的文件不能上线,不过这个功能应该是属于CI环节 acdeployment
合法性 单元测试&接口测试 没有通过测试的文件不能上线,不过这个功能应该是属于CI环节 acdeployment
发布 冲突检查 保证发布过程安全 acdeployment
发布 灰度发布 灰度发布保证系统安全 acdeployment
发布 回滚 异常情况下的快速恢复 acdeployment
发布 手动和自动 同时支持手动和自动发布 acdeployment

发布系统流程图