背景
随着公司站点的增多和国际化业务的发展,Apollo配置平台也呈现出多国家、多环境部署、各环境配置孤立操作、配置上下线无规范流程的情况。基于当前的情况,主要的痛点问题如下:
国际化apollo未与主营apollo统一, 导致国际化Apollo生产配置可以随意变更,风险极大;用户在使用过程中需要同时打开6、7个平台进行操作,效率极低。
由于缺乏配置上线流程规范,用户在各环境之间随意增加和删除配置,导致各环境配置差异大;研发、测试人员协作过程中极易出现漏配置,协作成本高;配置不经过测试环境直接上生产,导致无法测试回归,极易出现生产事故。
规范治理
国际化apollo接入基石统一管理
针对当前国际、主营使用规范不统一,操作平台多,环境多,效率低,风险大的问题。主要的解决思路是将国际化apollo接入基石进行统一管理,如何进行统一管理,思路如下:
数据现状分析
国家及环境数据映射
业务 / 环境测试环境预发环境生产环境主营是是是印尼是
是印尼MF是
是菲律宾是
是
主营测试站点和国际化测试站点使用同一套测试环境数据
主营预发为单独部署的服务;国际化中使用生产环境的UAT集群作为预发环境,无独立预发服务
主营和国际化的生产服务全部为单独的一套部署
设计要点:
测试环境站点数据,通过各国家域名后缀进行区分和筛选
设计(国家、环境)与网关环境的映射关系,网关环境对应真实的Apollo实例
在前端的公共请求中根据(国家 + 环境 )-> 【网关环境】进行接口地址拼接后,通过生产内网网关平台进行数据转发到对应的apollo部署服务
对功能进行整体梳理后,改造点主要分为基本配置功能改造,对比同步功能改造,审批功能改造
后续有新国家接入时,能通过自动化配置的方式接入基石
国家、环境 与 Apollo实例的对应映射关系如下:
国际化整体改造架构
基本功能架构改造
获取单一环境的数据功能通过网关映射转发的方式实现
对比同步功能改造
对比功能中涉及到同时获取两个环境的数据做对比,加入到基石后端做调度
审批功能改造
审批后的回调需要调到不同国家的apollo实例,通过拼接bpm的回调地址来进行分发
整体实现效果展示
系统层面规范配置上下线
针对目前Apollo缺乏上线规范,协作成本高,上线漏配置,配置不经过测试直接上生产,各环境配置差异大的问题。我们决定与业务中台团队合作,按目前在中台推行的配置上下线规范,系统层面落地来提升配置上线效率和及规范性。
业务中台推行的配置上线规范如下
设计要点
配置上线、下线流程以工单的形式来保证和约束
关闭UAT、预发、生产配置添加和删除入口,只能通过工单来进行上下线
将配置同步和发布能力结合到工单中,各环境通过同步和发布实现完整的配置上、下线流程,提升效率
动态检测配置的存在(fat\uat\pre\pro),根据存在的配置灵活编排工单中的上、下线流程
配合发布卡点,校验工单上线状态,已经增加工单到期提醒,防止工单漏上线
实现架构
实现效果
配置上线申请页面:用户在测试环境增加配置后,即可发起配置上线工单,申请页面具体动态检测配置能力
配置上线同步页面:同步页面能对比环境的配置差异,用户灵活选择需要同步的key
配置上线发布页面:发布页面能对key进行审批、发布上线,编排进流程中,提升用户上线效率
总结
通过对Apollo的国际化治理及配置上下线规范的推广和落地,基石平台已完成对于主营和国际化的apollo配置统一管理,并且已经具备自动化快速完成新国家的接入和适配能力;各站apollo配置上下线规范已覆盖所有站点,从目前的数据和用户反馈中,极大提升了配置上下线的效率及规范性。