灰度升级注意事项

一 点睛

在灰度升级过程中,有以下几个维度需要注意。按照灰度升级的策略,研发人员需要一些运营指标来观测升级的有效性。

灰度升级需要注意以下几点。

  • 数据采样

  • 及时回滚

  • 周期完全

  • 测试完全

  • 充分验证

二 数据采样

在未灰度时,就要考虑好验证灰度升级与否的数据指标。当灰度升级开始后,能够有地方查看新老版本的数据,同时对数据进行比对。

灰度升级要求在开发阶段就要在程序层面完善监控的上报,而且对于需要分析的场景,例如用户使用习惯,使用时长的统计分析,在这个阶段也要进行分析程序的开发工作。

一般对于程序优化类的灰度升级,比较好衡量。对比前后的成功率,访问量和时延的比值等,就能够衡量出优化后的效果。

对于产品体验类优化的灰度升级,衡量的时候要注意,如果按照用户来灰度的,那么要根据用户的特点选取老样本进行比对。

在评估优化效果的时候,即使有数据,也要分析数据背后的逻辑,防止出现因为采样不对影响分析结果的现象。

三 及时回滚

灰度升级前,要做好最坏的打算——在灰度升级过程中,如果出现发布异常,不符合程序运行预期,要如何回滚以保证线上服务正常?这在架构设计之初就要考虑清楚。

灰度升级前要有快速回到原始状态的预案,而且有尽快查到出错原因、尽快修改的方案。

如果出现问题不能回滚,那么系统就会处在一个进退两难的局面。

如果是存储类程序出问题了,那么不能回滚可能导致数据进一步写错,最终用备份的数据来恢复数据,对用户影响很大。

把数据备份也要强于没有数据可用,所以一般都会先备份数据,然后思考如何做到回滚逻辑层的同时把数据层也一并恢复。一般可以采用双写,要求新老两种逻辑数据格式兼容。

四 周期完全

虽然灰度升级方式很多,保证用户最终能体验到最新的服务。但并不是“灰度”完全部用户,观察业务没问题,整体就一定没问题。一种常见的灰度升级容易忽略的现象是灰度升级周期不足,灰度升级周期没有覆盖产品特性中的整个生命周期。

五 测试完全

开发人员要保证代码经过充分自测,再提测。除了自测,开发人员还要具备快速构建测试环境的能力。当发现问题时,能够通过不同的环境,快速复现问题,利用测试环境进行调试验证。

一般要准备以下几种环境。

  • 开发环境

  • 自测环境

  • 测试环境

  • 预发布环境

  • 正式环境

六 充分验证

在实施一些迁移服务类的灰度策略时,要做到充分验证、客观举证。特别是做一些已有业务的迁移操作,客观举证是必须要做到的。

迁移类需求通常要做好以下几步

1 要考虑迁移可以回滚。

2  要有迁移前后效果的对比。

3 老系统要有监控,是否真的没了流量,而不是依赖于具体业务迁移方,要相信自己的眼睛。

4 有一个冷却时间,过了冷却时间再下线服务器。

5 下线操作全部完成后,要有一个全体通知,让大家都知道从前老服务已经结束了,并给出新服务的使用方案。

互联网注重速度和敏捷,要达到质量稳定、测试完全和快速发布三者之间的平衡,灰度升级是一个有效的方法。灰度升级可以让影响尽量小,快速发现变更中的问题,把由于程序问题引起的影响降低到最小。在实际灰度升级的时候,要有回滚方案,能够主动发现问题并反馈,在发现问题后快速修复。

你可能感兴趣的:(架构师,架构)