在前期,酷家乐正式推出了其前端工具平台(下文简称"pub平台"),彼时该平台正处于初步构建阶段。在实际应用过程中,我们遇到了若干挑战,核心问题聚焦于发布质量欠佳、工作效率低下以及应急支持工具匮乏等方面。深入剖析,这些问题的根源可追溯到酷家乐复杂且繁琐的工具架构体系。
面对当时既定的工具架构,实施灰度发布策略时,我们不得不审慎考虑插件间的链路依赖关系,同时还要密切关注通用业务层改造可能给整个系统带来的连锁反应。此外,Application层的灰度时间窗口需求以及前后端之间的紧密依赖关系也是我们必须周全考虑的因素。
这一系列的复杂性导致整个发布流程极易陷入困境,比如:集成节点的管理缺乏统一标准,进而造成环境稳定性下降,测试时间被大幅压缩;又如,灰度发布规则间频繁出现冲突,直接诱发了灰度过程中的故障现象。因此,每当迎来工具发布的重要时刻,整个团队总是处于高度紧张且繁忙的状态之中。
为了提升整体发布质量,公司于2022年启动了工具发布质量优化项目。经过一期和二期的改造优化,我们建立了统一的应用发布全生命周期管理平台,并提供丰富多样的发布能力。同时,我们还接入了多种自动化能力,建立了全面的质量卡点体系。
酷家乐的核心发布平台是pub工具,它包括以下几个模块:
应用管理:管理前端业务应用及权限。
配置管理:实现配置数据与应用隔离,并支持在线修改。
发布管理:集中依赖编排、灰度规则及报告等内容。
通过这些模块组合,可以实现标准发布、单分支发布和灰度发布等多种策略。
在本文中,我将分享前端发布平台建设过程中的关键问题解决方案及当前运行能力。
酷家乐迭代过程可分为需求、开发和测试阶段。在早期,每个阶段主要依靠人工统计和线下会议确认。随着业务发展,队伍扩大且应用复杂度提高,这种人工协调方式成本逐渐增加。
通过对发布平台信息收集和分析,我们总结出目前存在以下三个主要问题:
应用环境混乱,集成测试成本高。
发布策略单一,难以控制风险。
部署质量不可控,测试环境不稳定。
为了确保需求按时高质交付,需要打造标准统一的发布链路,并建立一个易用且灵活的平台作为支撑。
为了降低跨组协作沟通的成本,pub平台建立了sit - beta - prod的标准流转模型,针对不同的应用环境(如开发, 测试, 生产等)维护和执行一致的标准与操作。标准涉及三大类:
发布前
云图权限规范
基础库变更规范
轮值日志规范
白名单管理规范
新应用上线规范
前端语义化命名规范
发布时
云图发布规范
prepare环境管理规范
发布轮值规范
应急操作规范
异常发布规范
灰度重发规范
同时针对发布过程的重要节点,还增加了操作的详细说明文档,例如迭代发布操作文档,应急操作文档。文档都采用图文的方式,降低大家学习的成本。
pub平台现支持研发周期内各节点环境、资源及配置的一体化管控,实现可视化流程操作。目前已探索出五种新的发布能力,有效解决了近两年的发布困境。
场景 | 发布策略 | 风险 |
---|---|---|
新功能逐步验证 | 灰度发布 | 不均匀的用户体验: 不同用户之间可能会有不同的体验,导致对新特性的看法分歧。 潜在数据一致性问题: 如果旧版和新版同时运行,可能会出现数据处理上的不一致。 |
验证不同版本之间的实际效果 | 单分支发布 | 灰度规则设计和执行难度大: 若流量不足或设计不当,结果可能无法推广至整体用户群体。 实现复杂度高: 需要保证测试环境的一致性,并准确收集数据。 |
能快速切回稳定环境 | latest备份发布 | 资源消耗大: 同时维护两套环境需要额外的基础设施投入 配置管理复杂: 确保两个环境始终保持一致配置比较困难。 |
多维度的分阶段计划 | 分桶引流 | 部署失败影响部分用户:如果存在严重缺陷,会影响到使用该版本的小部分用户。* 用户反馈信息滞后:少数用户的数据可能无法反映整体情况,因此做出的决策存在一定的不确定性。 |
在非发布窗口期上线 | 紧急发布 | 影响面大:上线之后会对全面用户生效 |
经过流程与平台改造,目前已显著降低集成测试成本并改善环境混乱的状况。
应用环境统一和丰富多样的发布策略满足了快速交付的目的,但部分版本的不稳定性仍然存在。我们因此增加了卡点管理,将自动化能力融入部署流程,从而提高环境稳定性并促进团队协作。通过实现频繁而可靠的小规模变更集成,研发团队能够快速响应需求变化。
目前设有多个质量卡点,如:prepare P0case卡点、灰度流转质量红线卡点、前置依赖发布卡点、封网期禁止变更卡点等,使得大家可以灵活设置,提高整体可靠性。
优化前:灰度0延迟情况约85%,准时率仅73%;全年仅完成45次版本更新,但是灰度重发次数达到惊人的84次。
优化后:每周约150+个应用及30+敏捷组通过系统交付产品需求;截至2024年上半年,全量时间实现100%准时率。
此外,pub平台还与测试架构、devops、监控告警、企业流程体系打通,构建全生态的发布解决方案。整个过程中不仅提升了moon(酷家乐内部的一站式devops解决方案)、pub、监控等基建能力,还调整了一系列操作说明和指导文档,实现从单分支测试到上线全过程标准化规范。
为了配合公司的出海方针,24年开始发布平台又进行了全球化流程改造,并且于2024/08/06版本开始试点运行。目前发布平台已经同时支持kujiale(酷家乐国内版)和coohom(酷家乐海外版)产品多个版本的迭代发布操作。
从下图可以清晰的了解工具前端的发布节奏:
除了上面提到的应用环境的统一管理,丰富多样的发布策略以及自动化管控体系,工具发布还开发了灵活的编排引擎,与moon、kaptain(酷家乐企业内部效能支撑平台)、itest(酷家乐测试门户,负责管理和维护测试相关的能力和数据)等系统的生态集成,以及全面严格的权限管控。
然而,工具发布的提升之路仍任重道远,目前仍面临不少挑战。例如:从2024年上半年的发布质量来看,异常发布的次数尚未得到有效控制,每个版本的异常发布频率依然偏高。
此外,目前的发布周期较长(灰度阶段从周二晚上开始,到下周一晚上才结束),且涉及多个分布节点。目前这些节点操作主要依赖人工控制,因此容易出现操作失误或延迟,从而导致发布问题。
为此,平台未来需在自动化和智能化方面持续加强。我们计划引入更多自动化工具,实现代码提交、构建、测试和部署等环节全流程自动化,以减少人工干预,提高效率并降低人为错误。
同时,我们将利用机器学习和数据分析技术,对历史发布数据进行深入分析,从中提取模式和规则,以支持更科学的决策过程。
通过提升平台能力、解决遗留问题以及增强团队协作,我们期待未来的发布系统能够实现更高效、更稳定和更灵活的发展。
微信扫一扫
关注该公众号