线上平稳发布
Posted 码出未来_远
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线上平稳发布相关的知识,希望对你有一定的参考价值。
线上平稳发布(部署)手段:
蓝绿部署
灰度发布(金丝雀发布)
滚动发布
红黑部署
效果验证手段:
AB测试
蓝绿部署
蓝绿部署是不停老版本,部署新版本然后进行测试。确认OK后将流量切到新版本,然后老版本同时也升级到新版本。蓝绿部署无需停机,并且风险较小。
说明下流量管理,在部署新版本之前,需要将部署新版本的流量掐断,全部打到ok的老版本上。
从过程不难发现,在部署的过程中,我们的应用始终在线。并且新版本上线的过程中,并没有修改老版本的任何内容,在部署期间,老版本的状态不受影响,这样风险很小。并且只要老版本的资源不被删除,理论上,我们可以在任何时间回滚到老版本。
最后,点一下注意使用条件,需要有两倍的机器资源。
注意事项
当你切换到蓝色环境时,需要妥当处理未完成的业务和新的业务。如果你的数据库后端无法处理,会是一个比较麻烦的问题。可能会出现需要同时处理微服务架构应用和传统架构应用的情况,如果在蓝绿部署中协调不好这两者,还是有可能会导致服务停止。需要提前考虑数据库与应用部署同步迁移/回滚的问题。蓝绿部署需要有基础设施支持。在非隔离基础架构( VM 、 Docker 等)上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险。
Tag: 全量切换
灰度发布(金丝雀发布)
不停止老版本,额外搞一套新版本,常常按照用户设置路由权重,例如90%的用户维持使用老版本,10%的用户尝鲜新版本。不同版本应用共存,经常与A/B测试一起使用,用于测试选择多种方案。
大致过程简述:
灰度发布/金丝雀发布由以下几个步骤组成:
准备好部署各个阶段的工件,包括:构建工件,测试脚本,配置文件和部署清单文件。
从负载均衡列表中移除掉「金丝雀」服务器。
升级「金丝雀」应用(排掉原有流量并进行部署)。
对应用进行自动化测试。
将「金丝雀」服务器重新添加到负载均衡列表中(连通性和健康检查)。
如果「金丝雀」在线使用测试成功,升级剩余的其他服务器(否则就回滚)。
除此之外灰度发布还可以设置路由权重,动态调整不同的权重来进行新老版本的验证。
- 精确的流量分发控制
需要有确切的策略保证某特征用户访问新版本,某特征用户访问老版本。从产品角度看要做A/B test,必须控制测试样本。
- 做监控
运维: 错误率,吞吐量,延迟,cpu内存消耗
PM: pv, uv
3. 需要灵活发布应用
周期可能会持续很久,所以新旧版本会并存。同时,还有可能各个版本需要各自迭代。版本之间能够区分对应的监控日志信息。
Tag: 小批次切换
滚动发布
比蓝绿部署节约资源,但是服务器节点数量多,会很慢。
部署过程简述:
发布一台金丝雀,主要做流量验证。
需要准备好发布工具和智能LB,平滑的版本替换和流量的拉入拉出。
每次发布先将老版本V1流量从LB移除,然后清楚老版本,发新版本V2,再将LB流量接入新版本。
一次滚动式发布一般由若干个发布批次组成,每批次发布数量可配置。并且每批次之间有时间间隔,所以导致滚动发布过程比较缓慢。
回退,发布的逆过程,所以一样缓慢。
特点
优点:用户体验影响小,体验较平滑。
缺点:发布和回退时间比较缓慢。 发布工具比较复杂,LB 需要平滑的流量摘除和拉入能力。
Tag: 批量切换
红黑部署
红黑部署的好处是服务始终在线,同时采用不可变部署的方式,也不像蓝绿部署一样得保持冗余的服务始终在线。
需要注意: 在蓝绿色部署中,两个版本可能暂时同时获取请求,而在红黑中,只有一个版本在任何时间点获得流量。
AB测试
这个也叫做对照实验,重点是在几种方案中选择最优方案。
简单说就是将多种设计方案暴露给用户,分组对照测试,让用户在使用后决策哪种更优。
A/B测试的应用方式决定了它拥有的三大特性: 先验性、并行性和科学性。
先验性: 分组对照试验,由试验结果得出结论。
并行性: 多组试验同环境同时间进行,更加科学客观对比优劣,且节省验证时间。
科学性: 指的是流量分配的科学性——将相似特征的用户均匀的分配到试验组中,确保每个组的用户特征相似,避免有数据偏差,使得结论更具有代表性。
优化内容:
产品UI
文案内容
页面布局
产品功能
推荐算法
应用场景:
灰度发布
广告着陆页
Web/H5页面
App用户体验
媒体广告投放与管理
以上是关于线上平稳发布的主要内容,如果未能解决你的问题,请参考以下文章