使用临时环境转变微服务测试5种方式

微服务测试告别预发布瓶颈!沙盒环境像 Uber、Lyft 一样,用动态路由隔离“正在测试”服务,降低基础设施成本,加速迭代。通过预览 URL 快速获得反馈,利用影子测试和合约验证保障API质量,左移性能测试和安全扫描,实现“你构建,你测试”,提升开发效率,加速创新,拥抱云原生未来!

译自:5 Ways Ephemeral Environments Transform Microservice Testing

作者:Arjun Iyer

“预发布环境又宕机了。”

这四个字让各地的工程团队感到恐惧。它们预示着又一次降低生产力的调查的开始,这可能会浪费半天或更多的时间。

微服务的世界中,共享预发布环境已成为一个臭名昭著的瓶颈。曾经是一个简单的测试过程,现在已经演变成一个跨越数十个服务的复杂协调挑战,团队不断地互相妨碍。

计算结果是残酷的:您添加的微服务越多,您加入的团队越多,您的预发布问题就越严重。传统的解决方案(例如启动更多环境)随着架构的增长,很快变得成本高昂且难以维护。

沙盒解决方案:向巨人学习

像 Uber、Lyft 和 Airbnb 这样的领先科技公司很早就意识到了这一挑战,并率先提出了一种解决方案:沙盒环境。这些公司没有为每个开发人员复制整个环境(这在规模上变得非常昂贵),而是通过智能请求路由实现了应用层的隔离。

沙盒封装了与稳定版本的服务通信的服务的“正在测试”版本和组件。

沙盒封装了与稳定版本的服务通信的服务的“正在测试”版本和组件。

沙盒环境不启动每个服务的单独副本,而是使用具有动态路由的共享基础设施。当开发人员想要测试更改时,系统会创建一个隔离的“沙盒”,其中仅包含正在修改的服务。沙盒连接到共享基线以进行其他所有操作,从而在保持隔离的同时显着降低资源需求。

这种方法具有显着的优势:

  • 资源效率:通过共享组件降低基础设施成本
  • 速度:环境在几秒钟内启动,而不是几小时
  • 生产保真度:针对真实依赖项而不是模拟进行测试
  • 规模:支持数百个并行测试环境

但沙盒测试的真正力量不仅仅是解决预发布瓶颈;而是这种方法解锁的新功能。让我们深入了解一下这如何改变开发工作流程。

解锁的用例

利益相关者反馈的即时预览

传统的开发周期通常会导致像这样的痛苦时刻:

“这不是我们同意的!”产品经理在演示期间说,距离发布只有几天了。

发生脱节的原因是,产品利益相关者通常在功能已完全构建并部署到预发布环境后才看到工作实现。到那时,进行重大更改既昂贵又耗时。

沙盒环境通过在本地开发或拉取请求阶段提供即时预览 URL来改变这种动态。这些预览可以在代码完成后的几分钟内与产品经理、设计师和其他利益相关者共享。

我合作过的一个团队将其反馈循环从两三天缩短到不到一个小时,使他们能够以比以前快 10 倍的速度迭代功能。

影子测试和合约验证

影子测试可能代表了沙盒环境解锁的最具变革性的功能。您可以将新代码与当前版本一起部署,向两者发送相同的流量,并系统地比较响应,而不是依赖猜测。这种真实世界的验证可以在功能回归、性能问题和意外行为影响用户之前发现它们,从而消除非常常见的“在预发布环境中工作,在生产环境中失败”的现象。

这种方法自然地扩展到合约测试,在微服务架构中,API 更改经常导致集成失败。传统的合约测试依赖于随着时间推移而偏离现实的模拟。沙盒环境允许您针对实际的下游依赖项执行 API,从而捕获细微的合约问题,例如字段类型更改或模拟会错过的时序依赖项。通过在沙盒中部署您更改的服务并运行连接到真实服务的集成测试,您可以验证合约是否得到维护,并在破坏性更改影响其他团队之前检测到它们。

左移性能测试

“为什么系统突然变得这么慢?” 这个问题让每一位随叫随到的工程师都感到恐惧。性能衰退通常会避开传统的测试流程——开发人员很少访问性能环境,负载测试在合并后运行,并且许多问题只会在实际条件下出现。

沙箱环境通过启用合并前性能验证来彻底改变这一点。工程师可以将更改部署到沙箱,针对关键路径运行有针对性的负载测试,并将指标与基线进行比较,以便在问题到达生产环境之前发现它们。这直接解决了凌晨 3 点的那些痛苦的电话。缓慢的数据库查询或内存泄漏会在代码仍然在开发人员的脑海中时被捕获,而不是几天后在生产事故中被捕获。

持续运行时安全扫描

安全漏洞通常只在运行的系统中显现,而不是在静态代码中,但传统的扫描发生在部署后,此时问题已经暴露。沙箱通过让团队将更改部署到隔离的环境并针对实际运行时运行动态扫描器,从而实现真正主动的安全。这种“左移”方法可以在关键问题(如不安全的 API 端点、配置错误的身份验证和意外的数据暴露)到达生产环境之前发现它们——这些漏洞通常会避开静态分析工具。

组织转型

沙箱测试的影响超越了技术能力;它从根本上改变了工程文化。“你构建它,你测试它” 变成了现实,测试从一项专门的活动转变为每个开发人员工作流程中不可或缺的一部分。反馈周期从几天缩短到几分钟,测试金字塔自然地向更易于访问的 API 级别验证重新平衡。

也许最重要的是,沙箱打破了速度和质量之间的虚假二分法。传统方法迫使组织在以更多缺陷快速前进或以较慢的交付速度保持质量之间做出选择。沙箱测试证明这些目标是互补的:对功能正确性和性能的即时反馈可以实现更快的迭代周期,同时提高发布质量。团队以更大的信心进行部署,减少了救火的时间,而将更多时间用于构建有价值的功能。

最终影响

这种转变的业务影响是巨大的。

沙箱环境的业务影响:来源:Signadot

来源:Signadot

但也许最有价值的好处是工程文化的转变——从谨慎和流程转变为信心和实验。当开发人员可以轻松地测试复杂的更改而无需担心破坏任何东西时,创新就会蓬勃发展。

展望未来

传统的 微服务测试 方法人为地限制了开发人员的生产力和软件质量。沙箱环境消除了这种限制。

随着微服务架构的复杂性不断增长,蓬勃发展的组织将是那些采用能够随着其架构扩展的测试方法的组织。由 Uber 和 Lyft 等公司率先推出的沙箱测试模型——现在可以通过 Signadot 等工具提供给各种规模的组织——代表了微服务测试的未来。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注