运维发布方式
- 蓝绿部署
- 灰度发布(金丝雀发布)
- 滚动发布
- 红黑部署
蓝绿部署
蓝绿部署的目的是安全稳定地发布新版本应用,并在必要时回滚。
蓝绿部署是一种应用发布模式,可将用户流量从先前版本的应用或微服务逐渐转移到几乎相同的新版本中(两者均保持在生产环境中运行)。
旧版本可以称为蓝色环境,而新版本则可称为绿色环境。一旦生产流量从蓝色完全转移到绿色,蓝色就可以在回滚或退出生产的情况下保持待机,也可以更新成为下次更新的模板。
这种持续部署模式原本存在不足之处。并非所有环境都具有相同的正常运行时间要求或正确执行 CI/CD 流程(如蓝绿部署)所需的资源。但是,随着企业加大对数字化转型的支持,许多应用开始支持这种持续交付
灰度发布
灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
灰度期:灰度发布开始到结束期间的这一段时间,称为灰度期。
滚动发布
指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。
特点:
用户无感知,平滑过渡;
节约资源。
缺点:
部署时间慢,取决于每阶段更新时间;
发布策略较复杂;
无法确定OK的环境,不易回滚。
部署过程:
先升级1个副本,主要做部署验证;
每次升级副本,自动从LB上摘掉,升级成功后自动加入集群;
事先需要有自动更新策略,分为若干次,每次数量/百分比可配置;
回滚是发布的逆过程,先从LB摘掉新版本,再升级老版本,这个过程一般时间比较长;
自动化要求高
红黑部署
这是Netflix采用的部署手段,Netflix的主要基础设施是在AWS上,所以它利用AWS的特性,在部署新的版本时,通过AutoScaling Group用包含新版本应用的AMI的LaunchConfiguration创建新的服务器。测试不通过,找到问题原因后,直接干掉新生成的服务器以及Autoscaling Group就可以,测试通过,则将ELB指向新的服务器集群,然后销毁掉旧的服务器集群以及AutoScaling Group。
红黑部署的好处是服务始终在线,同时采用不可变部署的方式,也不像蓝绿部署一样得保持冗余的服务始终在线。
A/B 测试
A/B 测试是用来测试应用功能表现的方法,例如可用性、受欢迎程度、可见性等等。
A/B 测试与蓝绿部署的区别在于, A/B 测试目的在于通过科学的实验设计、采样样本代表性、流量分割与小流量测试等方式来获得具有代表性的实验结论,并确信该结论在推广到全部流量可信。
A/B 测试和蓝绿部署可以同时使用。