https://blog.csdn.net/zy_281870667/article/details/79795510
过去的10年里,很多大公司都在使用蓝绿部署,安全、可靠是这种部署方式的特点。蓝绿部署虽然算不上”Sliver Bullet“,但确实很实用。在有关于“微服务”、“DevOps”、“Cloud-native”的讨论中,蓝绿部署、A/B测试、灰度发布,这三种部署方式往往同时出镜。
那么问题来了,蓝绿部署、A/B测试、灰度发布,这三者之间究竟有何不同?
蓝绿部署
Martin Flower曾在文章中阐述了蓝绿部署的整体要点,建议大家看看。
基本上,蓝绿部署是一种以可预测的方式发布应用的技术,目的是减少发布过程中服务停止的时间。
简单来说,你需要准备两个相同的环境(基础架构),在蓝色环境运行当前生产环境中的应用,也就是旧版本应用,如图中App1 version1、App2 version1、App3 version3。
当你想要升级App2到version2,在蓝色环境中进行操作,即部署新版本应用,并进行测试。如果测试没问题,就可以把负载均衡器/反向代理/路由指向蓝色环境了。
随后你需要监测新版本应用,也就是App2 version2是否有故障和异常。如果运行良好,就可以删除App2 version1使用的资源。如果运行出现了问题,你可以通过负载均衡器指向快速回滚到绿色环境。
理论上听起来很棒,但还是要注意一些细节:
当你切换到蓝色环境时,需要妥当处理未完成的业务和新的业务。如果你的数据库后端无法处理,会是一个比较麻烦的问题;
有可能会出现需要同时处理“微服务架构应用”和“传统架构应用”的情况,如果在蓝绿部署中协调不好这两者,还是有可能导致服务停止的;
需要提前考虑数据库与应用部署同步迁移/回滚的问题;
蓝绿部署需要有基础设施支持
在非隔离基础架构(VM、Docker等)上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险
A/B Testing
A/B测试跟蓝绿部署完全是两码事。
A/B测试是用来测试应用功能表现的方法,例如可用性、受欢迎程度、可见性等等。A/B测试通常用在应用的前端上,不过当然需要后端来支持。
A/B测试与蓝绿部署的区别在于,A
过去的10年里,很多大公司都在使用蓝绿部署,安全、可靠是这种部署方式的特点。蓝绿部署虽然算不上”Sliver Bullet“,但确实很实用。在有关于“微服务”、“DevOps”、“Cloud-native”的讨论中,蓝绿部署、A/B测试、灰度发布,这三种部署方式往往同时出镜。
那么问题来了,蓝绿部署、A/B测试、灰度发布,这三者之间究竟有何不同?
蓝绿部署
Martin Flower曾在文章中阐述了蓝绿部署的整体要点,建议大家看看。
基本上,蓝绿部署是一种以可预测的方式发布应用的技术,目的是减少发布过程中服务停止的时间。
简单来说,你需要准备两个相同的环境(基础架构),在蓝色环境运行当前生产环境中的应用,也就是旧版本应用,如图中App1 version1、App2 version1、App3 version3。
当你想要升级App2到version2,在蓝色环境中进行操作,即部署新版本应用,并进行测试。如果测试没问题,就可以把负载均衡器/反向代理/路由指向蓝色环境了。
随后你需要监测新版本应用,也就是App2 version2是否有故障和异常。如果运行良好,就可以删除App2 version1使用的资源。如果运行出现了问题,你可以通过负载均衡器指向快速回滚到绿色环境。
理论上听起来很棒,但还是要注意一些细节:
当你切换到蓝色环境时,需要妥当处理未完成的业务和新的业务。如果你的数据库后端无法处理,会是一个比较麻烦的问题;
有可能会出现需要同时处理“微服务架构应用”和“传统架构应用”的情况,如果在蓝绿部署中协调不好这两者,还是有可能导致服务停止的;
需要提前考虑数据库与应用部署同步迁移/回滚的问题;
蓝绿部署需要有基础设施支持
在非隔离基础架构(VM、Docker等)上执行蓝绿部署,蓝色环境和绿色环境有被摧毁的风险
A/B Testing
A/B测试跟蓝绿部署完全是两码事。
A/B测试是用来测试应用功能表现的方法,例如可用性、受欢迎程度、可见性等等。A/B测试通常用在应用的前端上,不过当然需要后端来支持。
A/B测试与蓝绿部署的区别在于,A
