现在有很多部署策略可供选择,而且随着时间的推移,只会有更多。也就是说,当今一些最大的公司积极使用的两种最常见的部署策略是金丝雀和蓝绿部署策略。
在比较蓝绿部署与金丝雀部署时,这不仅仅是速度或简单性的问题;还在于速度或简单性的问题。选择其中一种策略时要考虑的最重要因素之一是部署停机时间。
为了最大限度地减少部署停机时间并在部署更新或修改时提供无缝过渡,从金丝雀部署与蓝绿部署中选择更合适的选项至关重要。
因此,让我们了解每种策略提供的内容,包括蓝绿部署与金丝雀部署的直接比较,以及我们自己在金丝雀部署与蓝绿部署方面的经验。
什么是蓝绿部署,它提供什么?
在蓝绿部署策略中,新版本的应用程序一旦经过测试和验证就可以立即部署。这要归功于两个相同的环境:蓝色和绿色环境,因此称为蓝绿部署。
这是有效的,因为这些环境之一处于活动状态,而另一个处于非活动状态。这意味着应用程序的新版本可以部署到非活动环境(假设是绿色环境)。由于这两个环境在资源、基础设施和配置方面完全相同,因此更新中的任何问题都可以在完全部署之前解决。
一旦更新经过测试并且开发人员对其工作感到满意,实时流量就会切换到这个非活动环境。这使得非活动环境(绿色环境)成为活动环境,而之前的活动环境(蓝色环境)成为非活动环境。
现在,不活动的蓝色环境成为备用环境,可用于测试较新的更新,而绿色环境处于活动状态,运行新部署的更新。这样,几乎不会出现停机,因为流量会立即更改为非活动环境。
另外,如果更新出现任何问题,回滚功能允许您切换回应用程序的旧版本。也就是说,如果开发人员在非活动环境中开始处理新更新时出现问题,则回滚到此环境不再可行,因为旧版本在此环境中也不再可用。
虽然许多公司和组织都采用这一策略,但 Spotify 就是这一策略的实际应用例子。由于 Spotify 的服务需要 24/7 可用,因此在发布新更新时,它始终准备好备份、非活动环境。
什么是金丝雀部署,它提供什么?
金丝雀部署与蓝绿部署之间的主要区别在于,在金丝雀部署策略中,更新首先发布给一小批用户,而不是同时向所有用户部署更新的两个环境。
如果更新有任何问题,只有一小部分用户遇到并提供反馈。 Once the issues have been resolved, the update is released to a bigger portion of users, where they leave feedback to the developers if they experience any issues.
This cycle is repeated with incrementally larger portions of users, and all issues with the update are resolved until the update is released to 100% of the users.例如,一开始,更新只会发布给2%的用户,然后是25%,然后是75%,最后是100%的用户。
与蓝绿部署相比,金丝雀部署的逐步发布提供了更受控和灵活的部署,允许开发人员在受控环境中测试功能和更新,其中只有一小部分遇到潜在问题。
最后,Canary 还提供了类似的回滚功能;但是,由于部署是逐步分阶段完成的,因此 Canary 中的回滚也是逐步分阶段完成的,直到达到稳定版本。
A well-known example of this deployment strategy is Netflix’s use of Canary in tandem with a tool called Chaos Monkey, which intentionally introduces failures in their system.如果故障影响了金丝雀环境,Netflix 团队可以分析系统如何响应并进行相应调整。这样,Netflix 就可以验证更新即使在不利条件下也保持稳定和弹性。
蓝绿部署对比金丝雀
这两种部署策略都有其独特的优势;然而,它们也有其局限性。这就是为什么在做出决定之前权衡蓝绿开发与金丝雀开发的利弊很重要。
如果您在本节之后仍然不确定该采取哪一种策略,我还提供了我们在这两种策略方面的经验以及我们在本文末尾学到的内容。
减少停机时间
本文的主要关注点和重点之一是蓝绿部署与金丝雀部署相比减少的部署停机时间。 One of the strong suits of Blue-Green deployment is its speed, as you can deploy your application update or feature instantly through the use of its two environments.
另一方面,Canary 的渐进式部署方法可以最大限度地减少停机时间,因为不仅一小部分用户会遇到问题,而且由于每个阶段都会提供反馈,因此可以更快地完成故障排除,并且不会造成任何停机。
此外,虽然这两种服务都提供回滚功能,但蓝绿部署的回滚功能是即时的,可以在出现任何重大问题时为开发人员提供可靠的备份。也就是说,正如我之前提到的,如果在非活动环境中完成更新版本的工作,则备份版本将不可用。
Canary 的回滚功能只能逐步使用,与其部署过程相同。但是,它始终可用,因为较旧的稳定版本不依赖于测试和使用新更新的环境。
在减少部署停机时间方面,金丝雀部署与蓝绿部署相比,金丝雀在风险控制和粒度控制方面更胜一筹;但是,如果我们纯粹考虑减少停机时间,那么蓝绿是两者中更好的一个,因为切换是瞬时的。
也就是说,在讨论蓝绿部署与金丝雀部署时,考虑减少停机时间以外的因素也很重要。
应用类型
一般来说,我们可以将应用程序分为交易密集型或内容驱动型应用程序。在交易量大的应用程序中,蓝绿部署是一个更好的选择,因为高服务可用性和最小停机时间是优先考虑的,这就是为什么蓝绿的即时切换和即时回滚功能使其领先于金丝雀。
另一方面,内容驱动的应用程序不依赖于实时交易。由于这些应用程序通常用于社交媒体平台和用户参与服务,因此金丝雀是一个更好的策略,因为您可以逐步推出更新并在每个阶段不断收到反馈。
基础设施成本
在蓝绿部署与金丝雀部署之间进行选择时的另一个主要问题是成本。当然,在蓝绿部署中,由于需要维护两个单独的环境,成本会更高。
这就是为什么 Canary 的单一生产环境是一个成本更加友好的选择,使其更适合较小的团队或资源密集度较低的应用程序。
可扩展性和长期维护
最后,虽然蓝绿部署可以扩展,但为大型应用程序维护两个完整的环境可能会占用大量资源且很复杂。随着时间的推移,管理和维护重复环境可能会增加大量开销,特别是对于具有复杂基础设施需求的应用程序。
这使得金丝雀部署与蓝绿部署在可扩展性和维护方面变得相当容易决定。通过金丝雀部署,可扩展性通常更简单且更具成本效益,因为它不需要重复的环境。
相反,它侧重于通过逐渐扩大暴露于新变化的用户群来在主要环境中进行扩展。从长远来看,这种设置更易于管理,因为它降低了基础设施的复杂性并简化了维护。
Cloudzy 的蓝绿部署经验对比。金丝雀部署
在向客户提供 DevOps 服务时,我们了解客户满意度、高可用性和最少的停机时间对于他们的业务成功至关重要。在一个特定案例中,一位客户向我们寻求帮助,以帮助进行重大基础设施升级。该团队的任务是在系统的蓝绿部署和金丝雀部署之间做出选择。
经过深思熟虑,我们首先决定尝试蓝绿部署,因为它几乎不会造成停机。我们建立了相同的绿色环境并准备推出升级。压力很大,因为只要按一下按钮,所有流量都会切换到绿色环境,而且正如开发人员所知,无论您对这些东西进行多少测试,结果仍然有点像掷骰子。
值得庆幸的是,一切都很顺利。过渡过程非常顺利,我们几乎没有遇到任何问题。随着时间的推移,随着我们客户的服务和用户的增长,我们需要推出新功能,蓝绿与金丝雀的争论再次引发。
然而,这一次,并没有引起太大的争论。这些都是相对较小的功能,而且当然不符合基础设施更新的规模。因此,我们很自然地选择了 Canary,因为我们可以向一小部分客户用户群推出功能,并通过用户反馈解决他们遇到的任何问题。
这绝对是正确的决定,因为虽然我们没有遇到任何重大问题,但一些较小的问题开始出现,据我们客户的 5% 的用户报告,该功能已推出。
在 Cloudzy,我们相信定制解决方案的力量。无论您的企业需要蓝绿部署的可靠性还是金丝雀部署的灵活性,我们的 DevOps 团队都拥有丰富的经验和知识,可以为您的基础设施实施最佳策略。联系我们 这里 今天了解我们如何优化您的部署流程并保持您的运营顺利运行。
说到 VPS,我们提供 VPS 行业中最低的费率,其功能包括全球超过 12 个地点、高达 10 Gbps 的专用互联网连接、企业 NVMe SSD 存储、强大的 3.23 GHz 涡轮速度 AMD EPYC 处理器以及 99.95% 的正常运行时间。看看我们的 VPS 定价 了解更多详情。
最后的想法
归根结底,在讨论金丝雀部署与蓝绿部署时,你不能真正说一个在任何主要方面都比另一个更好。这只是用例以及最适合您的特定需求的问题。
常见问题解答
蓝绿部署和金丝雀部署之间的主要区别是什么?
蓝绿部署策略和金丝雀部署策略之间的主要区别在于更新的发布方式。蓝绿部署使用两个相同的环境,并将更新应用于非活动环境,从而实现即时切换,几乎无需停机。相比之下,金丝雀部署首先逐步向一小部分用户发布更新,在逐步向整个用户群推广之前监控问题。
蓝绿部署还是金丝雀部署更能减少停机时间?
蓝绿部署通常更适合减少停机时间,因为它允许在环境之间进行即时切换。这可以最大限度地减少任何潜在的干扰。虽然金丝雀部署也旨在最大限度地减少停机时间,但它是通过逐步推出来实现的,这可能涉及一些仅影响一小部分用户的次要局部问题。
蓝绿部署与金丝雀部署的成本考虑因素是什么?
蓝绿部署通常更昂贵,因为它们需要维护两个完整的环境。另一方面,金丝雀部署更具成本效益,因为它们不需要重复的基础设施;更新是在主环境中推出的,这使其成为小型团队或资源密集型应用程序的更好选择。