蓝绿色部署,A / B测试和Canary版本

我最近与之交谈的许多团队都对“ DevOps”非常感兴趣(这意味着……似乎对不同的人意味着不同的事情?),当我们坐下来谈论这到底意味着什么时,对话的方向就可以了沿许多有趣的路径。 有时,它所走的路使人们感到非常不舒服 。 不久前,我正与一个团队讨论部署最佳实践,热部署,回滚等问题,当我提到蓝绿色部署时 ,它们变得有些古怪。 另一个团队无法理解为什么做他们一直做的事情并不是一件好事

在亚马逊等地方实施“ 绿色环保”部署已有多年了。 它们是一种安全,可靠的方法。 现在,蓝绿色的部署并不是灵丹妙药,但对它们来说很有用。 但是A / B测试呢? 甚至金丝雀测试? 在#microservices,DevOps和云原生的所有讨论中,有很多关于它们的讨论,但是我想澄清它们之间的区别。

蓝绿色部署

请参阅Martin Fowler关于蓝绿色部署的链接 。 它给出了总体要点。 基本上,这是一种以可预测的方式发布应用程序的技术,目的是减少与发布相关的停机时间 。 这是在发布应用前准备应用的快速方法,如果发现问题也可以快速回滚。

简而言之,您有两个相同的环境(基础结构),其中的“绿色”环境托管着当前的生产应用程序(例如,app1 version1,app2 version1,app3 version1):

绿色部署

现在,例如,当您准备对app2进行更改并将其升级到v2时,您将在“蓝色环境”中进行操作。 在该环境中,您将部署新版本的应用程序,运行冒烟测试以及任何其他测试(包括对操作系统,缓存,CPU等进行测试/启动的测试)。 当一切看起来不错时,您可以更改负载平衡器/反向代理/路由器以指向蓝色环境:

蓝色部署

您监视由于发行而导致的任何故障或异常。 如果一切正常,您最终可以关闭绿色环境,并使用它来发行任何新版本。 如果没有,您可以通过将负载均衡器向后指向来快速回滚到绿色环境。

理论上听起来不错。 但是有些事情要提防。

  • 在绿色环境中长期运行的事务。 当您切换到蓝色时,您必须优雅地处理那些未完成的交易以及新的交易。 如果您的数据库后端无法处理此问题,这也会变得很麻烦(请参阅下文)
  • 企业部署通常不适合“微服务”风格的部署-也就是说,您可能混合了微服务风格的应用程序和一些传统的,难以更改的应用程序一起工作。 进行蓝绿色部署之间的协调仍然会导致停机
  • 数据库迁移可能会变得非常棘手,必须与应用程序部署一起迁移/回滚。 有很好的工具和技术可以执行此操作,但是在具有传统RDBMS,NoSQL和文件系统支持的DB的环境中,确实需要提前考虑这些事情; 盲目地说您正在进行Blue Green部署没有任何帮助-实际上可能会造成伤害。
  • 您需要具备执行此操作的基础结构
  • 如果尝试在非隔离的基础架构(VM,Docker等)上执行此操作,则可能会破坏蓝色和绿色环境

正如我已经说过的那样,有许多好的技术可以克服这些挑战,并使这种部署样式很好地实现,包括插入一个连续的部署管道,但不要轻描淡写。

A / B测试

A / B测试不是蓝绿色部署。 我碰到了会误解这一点的团体。 A / B测试是一种出于各种原因(例如可用性,受欢迎程度,引人注意等)以及这些因素如何影响底线而测试应用程序功能的方法。 它通常与应用程序的UI部分相关联,但是当然需要后端服务才能实现此目的。 您可以使用应用程序级开关(即,知道何时显示某些UI控件的智能逻辑),静态开关(在应用程序中)以及Canary版本(如下所述)来实现此功能。

令人憎恶的

蓝绿色部署与A / B测试之间的区别在于A / B测试是为了衡量应用程序中的功能。 蓝绿色部署是关于安全发布新软件并可以预测地回滚。 您显然可以将它们组合在一起:使用蓝绿色部署在可用于A / B测试的应用程序中部署新功能。

金丝雀发布

最后,Canary版本是一种将应用程序的新版本发送到生产环境中的一种方法,该过程扮演“ canary”角色,以了解其性能(与其他应用程序,CPU,内存,磁盘使用情况等集成) )。 这是另一种发布策略,可以缓解以下事实:无论在较低环境中进行的巨大测试级别如何,在生产中仍然会有一些错误。 金丝雀释放器使您可以在完全释放之前扣动扳机,测试水域。

金丝雀部署

获得的反馈越快,部署失败或谨慎进行的速度就越大。 出于与蓝绿色部署相同的原因,请当心以上几点,请当心。 即,数据库更改仍然会使您失望。

摘要

无论您是否使用特定的云技术,都可以实施所有这些策略。 但是正如您可以想象的那样,诸如DockerKubernetes之类的技术对于实施这些策略可能非常有帮助(甚至没有内置规定)。 例如, OpenShiftFabric8通过提供使用这些技术所需的工具而不必担心底层细节, 从而大大简化了Docker和Kubernetes的使用。 要分享一些精彩的视频,这些视频演示了此工具以及我上面讨论的即用型部署功能:

翻译自: https://www.javacodegeeks.com/2015/08/blue-green-deployments-ab-testing-and-canary-releases.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值