金丝雀测试:它是什么,您如何从中受益?
已发表: 2022-08-20如果您不是程序员,您可能从未听说过金丝雀测试。 没关系,但是您可能想知道它是什么,为什么称为金丝雀测试?
该术语源自“煤矿中的金丝雀”一词。 您会看到,煤矿工人过去常常将笼中的金丝雀带入煤矿,因为金丝雀对有毒气体的耐受性较低。
因此,工人们知道,如果金丝雀死了,他们就应该离开矿井。 在软件开发方面,在创建新软件时,目标是在问题成为用户问题之前尽快发现并解决问题。
什么是金丝雀测试?
金丝雀测试是尝试新功能和特性的方法,希望对用户端的负面影响最小。 这种类型的测试通常与一小部分用户一起使用,对于这些用户,应用程序会进行一些小的更改。 这样,大多数用户仍将使用当前版本的软件,而选定的较小用户群将使用略微升级的版本。
这个练习的目的是让大多数使用该软件的人继续使用它,没有任何问题,同时只为一小部分用户推动更改。
这一切都是在保持应用程序的现有版本和新版本同时运行的同时完成的。 然后,如果金丝雀测试没有返回任何错误,您可以继续将其扩展到更大比例的用户。
读者也喜欢:什么是快速应用程序开发? RAD 方法的 4 个阶段 – DevriX
如何进行 Canary 测试?
金丝雀测试的第一步是启动一组后端服务器或容器来运行新代码。 一旦有新用户,您的负载均衡器会将其中的一部分发送到“金丝雀集群”。
然后,DevOps 专家监控服务器以识别潜在问题,例如计算负载或更高的 I/O 速率。 而且,请记住,即使发生严重问题,也很容易将事情恢复到原来的状态,因为该过程不会影响使用该软件的每个人。
否则,您可以使用 Spinnaker 等工具轻松实现和自动化金丝雀测试,以指定使用新代码的用户数量。
所述百分比通常在 5% 左右,一旦指定的 DevOps 团队确定没有问题,他们就可以稳步增加该百分比,直到每个人都在使用应用程序的新代码版本。
此外,金丝雀测试在开发或暂存环境与生产环境不完全匹配的情况下是有益的。 使用一小部分用户测试组可以揭示在登台或开发环境中未检测到的任何问题。
读者也喜欢:使用 WordPress 进行 A/B 测试:权威指南 – DevriX
Canary 测试的优点和缺点
让我们使用金丝雀方法来定义测试的好坏。
金丝雀测试的好处
- 真实世界的测试。 在封闭的内部环境中进行测试非常棒,但是,能够在真实用户身上测试软件会让您更进一步。 通过金丝雀部署,您可以做到这一点——在小规模受众上测试您的应用程序,而不会有发布全新应用程序的风险。
- 更好的风险管理。 逐步发布新功能并确保它们正常工作,可以大大减少任何重大错误和任何失败的总成本。
通过使用金丝雀测试方法,您基本上无需回滚主要更新或重写大量代码。 - 更加面向业务。 需要向经理和营销/销售人员展示业务数据? 使用 Canary,您可以非常快速地查看结果。 例如,如果您想测试一个新的软件功能——您可以为一小部分用户部署一个新功能,然后等待该功能是否顺利进行,然后您可以使用这些数据来提高参与度你的产品。
Canary 测试的缺点
- 软件问题。 仍有未经测试的代码,因此自然存在风险。 如果即使是少数用户在特定功能方面遇到严重问题,最好跳过金丝雀测试,转而进行更严格的内部测试。
- 较大的开支。 如果您打算使用负载均衡器对用户进行分区,您将需要额外的基础设施和更多的管理。 这意味着您必须创建两个独立的生产环境和后端来执行测试。 因此,需要两个应用服务器、两个代码行、两个 Web 服务器和一个网络基础设施来维护。
- 糟糕的用户体验。 一些用户可能不太热衷于被用作测试对象的想法。 如果您想对正在发生的事情持开放态度,您可以通过“早期采用”计划或类似的方式让用户知道他们被用作“金丝雀”。
什么时候不使用 Canary 测试?
金丝雀测试在很多情况下都是有益的,但是,它并不是对所有事情的万无一失的答案(即 42)。
这是你绝对不应该使用金丝雀方法的时候:
- 在不适合持续部署的环境中。
- 在处理生命支持系统或核反应堆等关键软件时。
- 失败可能导致重大经济影响的金融系统。
当您无法远程更新软件时。
如何进行 Canary 部署?
现在,让我们看一下为了执行金丝雀部署需要采取的必要步骤。
- 准备在登台服务器上部署。
- 通过负载均衡排除金丝雀节点。
- 将新版本部署到金丝雀节点。
- 使用自动化测试脚本测试新版本。
- 通过负载平衡将金丝雀节点连接到流量。
- 将更新推广到剩余的生产节点。
实际上,部署从准备登台服务器开始。 检查配置文件、测试脚本、构建工件等。 之后,您可以运行自动或手动测试,或者让服务器保持运行状态,看看一切是否运行良好,或者是否崩溃。
何时将 Canary 投入生产?
一旦您在 5% 或 10% 的用户上测试了您的金丝雀更新,并且一切正常,您可以继续将测试用户的百分比提高一倍或三倍。
然后,再次测试,从指标中收集反馈,一旦您评估一切正常,您就可以继续更新 70% 的生产环境。
最后,重复测试过程,如果一切顺利,向 100% 的用户推出新版本的软件,当然还要继续监控。
已实施 Canary 部署的公司
为了向您展示金丝雀部署是一种流行的实现方法,我们将看看一些使用金丝雀部署的公司。
网飞
自 2018 年以来,这家流媒体服务巨头一直在使用 Kayenta 的自动金丝雀分析。这使得 Netflix 的生产环境能够以极快的速度更新。 该公司表示,这种部署方法提高了开发人员的生产力,同时降低了对其生产环境进行更改的风险。
这个社交媒体平台也一直是金丝雀部署的忠实拥护者。 他们的联合创始人兼首席技术官 Mike Krieger 分享说,金丝雀版本确保错误不会造成太大的损害,并且只会影响一小部分人。
谷歌
您知道 Google Chrome 有一个专门为开发者设计的特殊版本吗? 没错,Google Chrome Canary 允许您测试新的 Web 平台 API,并在其他人之前看到浏览器的未来会是什么样子。
微软
微软使用自己的员工来测试他们所有的产品更新。 自 Windows Vista 和 Microsoft Azure 以来,该过程就已经到位。 Windows 10 升级也是使用其员工操作系统的金丝雀更新完成的。
概括
Canary 测试是在真实测试环境中快速引入新应用程序版本的好方法。 不仅如此,它还可以实现更好的风险管理和更可跟踪的数据。
尽管金丝雀测试有很多好处,但它并不总是能解决所有情况。 确保在开始金丝雀部署之前进行研究,否则可能会适得其反。