什么是蓝绿部署?蓝绿部署是一种软件发布模型,可将流量从当前版本转移到新版本。它涉及使用两个几乎相同的生产环境,称为蓝色和绿色。只有一个环境保持活动状态并处理所有生产流量。
组织使用蓝绿部署等渐进式交付策略来避免停机并最大限度地降低更新期间的风险。现代开发方法优先考虑速度、质量、安全性和可靠性。为了满足这些标准,组织利用持续集成和持续部署 (CI/CD) 管道来实现高度自动化和高效的流程。
CI/CD 管道有助于满足软件测试和稳定性标准,同时经常发布软件更新以确保积极的客户体验。蓝绿部署可帮助组织在不影响用户体验的情况下不断改进其产品。
蓝绿部署如何工作?
自动化部署需要将软件从测试环境转移到生产环境,最理想的情况是尽量减少市中心。蓝绿部署有两个几乎相同的环境,允许更容易地在测试和实时环境之间转换。
测试在“绿色”环境中进行,而“蓝色”环境承载实时应用程序。完成测试后,将流量重定向到测试环境,该环境现在成为生产环境,而蓝色环境成为新的测试环境。可以使用传统的负载均衡器或服务网格等更先进的技术在环境之间路由流量。
这种方法支持快速回滚,允许您在切换到绿色(新)环境时将蓝色环境作为备份。例如,您可以在测试期间以只读模式运行您的应用程序,并在运行时切换到读写模式。这两个环境应尽可能相似,以确保无缝过渡。他们可以共享一个 IP 地址。
当环境稳定后,就可以开始测试了。此阶段涉及将绿色环境部署为暂存环境。您在绿色环境中部署下一个版本,蓝色成为备份。这种方法可以让您持续测试灾难恢复系统。
蓝绿部署的好处
以下是蓝绿部署方法的主要优点。
拥有备份系统
蓝绿部署提供了一个可靠的备份系统,其中一台服务器始终处于待机状态,以便在实时系统出现故障时接管。这种强大的风险管理策略是组织选择蓝绿部署的原因。当一台服务器处于活动状态时,可能会出现与新软件更新无关的问题——这可能表明存在恶意软件或攻击者以主机服务器为目标。
蓝绿部署需要复制所有应用程序基础设施,允许后端开发人员快速将流量重定向到备用版本。当您修复另一台服务器上的问题时,您的组织可以保持运作并提供服务。这个备份系统给你额外的信心。
快速发布
蓝绿部署是产品所有者使用 CI/CD 框架将软件发布到生产环境的好方法。DevOps 团队可以随时发布更新,而中断最少——实施发布通常就像更改路由一样简单。不涉及停机时间,因此您的部署不会对您的用户产生负面影响。
团队可以在不安排额外时间或考虑因停机造成的收入损失的情况下推送版本。他们可以在不匆忙的情况下正确实施更新,从而最大限度地减少压力和错误。
轻松回滚
与发布一样,撤消或回滚更新既简单又快速。蓝绿部署有两个生产就绪环境,允许您在实时环境出现问题时快速切换到更稳定的备份环境。识别生产中问题的常用方法是Kubernetes 健康检查。
快速回滚降低了在生产环境中进行试验的相关风险。团队可以通过将流量路由回备用环境来快速解决问题。这里的主要风险是用户交易的损失,但可以管理这种风险。您可以在切换期间暂时将应用程序设置为只读。或者,您可以在等待事务在实时环境中完成时使用负载均衡器实施滚动切换。
零停机
由于应用程序变得不可用,停机可能会导致业务生产力下降,并对最终用户的体验产生负面影响。对于关键服务,停机成本可能高得令人望而却步,尤其是当它影响到具有大量交易的大型在线平台时。
蓝绿部署使您的组织可以避免通常与解决问题相关的停机时间。您可以在用户不注意的情况下将用户切换到备份环境,同时修复重复出现的问题或执行维护检查。其他部署模型通常需要在流量较低的非高峰时段进行修复和升级。即使需求较低,停机时间也会给客户带来不便。
在现实环境中测试
生产测试允许您在服务器上运行时检查产品的功能。它允许您从 UI 中查看软件的功能。但是,当您在修复错误之前发现错误时,这通常很困难并且会影响用户体验。蓝绿部署允许您在非活动服务器上测试产品,而用户可以继续访问活动服务器上的应用程序。
这种方法最大限度地降低了生产过程中出现意外问题的风险,因为您可以在用户不知情的情况下在几乎相同的环境中测试和消除它们。在生产中进行测试可以让您的组织保持其专业性和公众声誉。
蓝绿部署的缺点是什么?
尽管蓝绿部署有各种好处,但它们也可能涉及一些额外的挑战和成本。
基础设施的复杂性
决定蓝绿部署过程需要权衡取舍。尽管您消除了停机时间,但这些部署的管理起来可能很复杂,因为它们需要持续集成服务器和不断重新路由网络流量。
例如,当您为“蓝色”实例提供服务时,持续交付管道必须将流量推向绿色环境(如果您已经切换,反之亦然)。一些部署平台提供了解决方案,但这是一个需要考虑的重要挑战。
部署的复杂性
理想情况下,蓝绿部署允许您在发布出现问题时安全轻松地回滚更改。实际上,并不总是可以实现简单的回滚。例如,如果多个应用程序共享一个数据库并且版本具有模式依赖性,则您可能无法在不迁移模式的情况下将其回滚。
虽然您通常可以处理这些问题,但与停机的标准部署相比,它们增加了更多的复杂性。蓝绿部署有更多的活动部件和更多需要自动化的东西,从而提供了更多出错的机会。您必须投资 CI/CD 技能和工具来帮助管理这种复杂性。
扩展和成本考虑
当您维护一个应用程序的多个实例时,重要的是要考虑与托管第二个生产环境相关的额外成本。对于某些用例,成本可能超过收益。
例如,如果您使用微服务架构或托管多个应用程序,成本可能会急剧增加。在这种情况下,您可能更喜欢蓝绿部署的修改形式,它可以消除停机时间,而无需支付托管两个环境的全部成本(即,在评估部署后删除旧版本)。