灰度部署、蓝绿环境、a/b测试等代码部署方式介绍
灰度发布
也叫金丝雀发布,是指在两个版本之间能够平滑过渡的一种发布方式,灰度发布是增量发布的一种类型,灰度发布时在原有版本可用的情况下,同时部署一个新版本应用作为“金丝雀”(小白鼠),测试新版本的性能和表现,以保障整体系统稳定的情况下,尽早发现,调整问题。
我的理解时在生产环境中,当应用有版本更新时,灰度发布是只升级一小部分的服务器,给一部分用户测试新版本的性能和表现,如果新版本稳定,就将其他的也升级,如果有问题,就将已经升级了的小部分服务器回滚。
灰度发布步骤组成:
- 准备好部署的各个阶段的工作,包括构建工作、测试脚本、配置文件和部署清单文件
- 从负载均衡列表中移除掉“金丝雀”服务器(让用户暂时不能访问需要升级的一小部分服务器)
- 升级“金丝雀”应用(排除原有流量并进行部署)
- 对应用进行自动化测试
- 将“金丝雀”服务器重新添加到负载均衡列表中(连通性和健康检查)
- 如果“金丝雀”在线使用测试成功,升级剩余的其他服务器(否则就回滚)
蓝绿部署:
蓝绿部署指的是不停老版本代码(不影响上一个版本访问),而是在另外一套环境部署新版本然后进行测试,测试通过后将用户流量切到新版本,其特点为业务无中断,升级风险相对较小。
具体过程:
- 当前版本业务正常访问(v1)
- 在另外一套环境部署新代码(v2),代码可能是增加了功能或者是修复了某些bug
- 测试通过之后将用户流量切到新版本环境
- 观察一段时间,如有异常直接切换旧版本
- 下次升级,将旧版本升级到新版本(v3)
A/B测试:
A/B测试也是同时运行两个APP环境,但是蓝绿部署完全是两码事,A/B测试时用来测试应用功能表现的方式,例如可用性、受欢迎程度、可见性等等,蓝绿部署的目的时安全稳定的发布新版本应用,并在必要时回滚,即蓝绿部署是一套正式环境在线,而A/B测试时两套正式环境在线