四种策略

 

与传统架构相比,使用微服务构建应用程序可为开发人员提供更高的速度和敏捷性。但是,每次代码更改仍会招致风险,如果未发现和解决代码质量问题,则为潜在的失败奠定了基础。为了减轻这些风险,应用程序团队应实施现代的云原生路由策略,以使其更易于测试危险并确保应用程序已真正准备好在生产环境中部署。

 

以下四种部署策略使用路由技术来安全地引入新服务和功能,测试功能并进行迭代改进,识别和消除漏洞等等。这些方法共同构成了一个虚拟工具箱,应用程序团队可以使用这些工具来降低在开发和部署微服务驱动的应用程序期间的风险。了解它们的异同是了解如何在自己的环境中充分利用它们的关键。

 

金丝雀部署

 

金丝雀部署是根据将实际鸟类送入煤矿以查看空气质量是否对人类安全而言的历史惯例而命名的,它是一种以最小的影响或风险来测试实际生产部署的方法。所谓的canary是服务的候选版本,它捕获传入请求的某些子集百分比(例如1%)以尝试新功能或构建。然后,团队可以检查结果,如果一切顺利,请逐渐将部署增加到100%的服务器或节点。如果不?在检查和调试有问题的代码时,可以从金丝雀部署中快速重定向流量。

 

Canary部署可以通过与负责处理入站用户流量的边缘路由组件的集成来实现。例如,在Kubernetes环境中,金丝雀部署可以利用入口控制器配置为稳定和金丝雀部署分配指定百分比的流量请求。通过这种方式路由流量,可以确保新服务在收到完整的部署之前有机会证明自己。如果没有,他们将被送回以解决问题,然后在准备好时进行另一轮的Canary部署测试。

 

A/B测试

A / B测试类似于金丝雀部署,但有一个重要区别。虽然金丝雀的部署往往侧重于发现错误和性能瓶颈,但A / B测试侧重于衡量用户对新应用程序功能的接受程度。例如,开发人员可能想知道新功能是否在用户中流行,它们是否易于发现或UI是否正常运行。

 

此模式使用软件路由来激活和测试具有不同流量细分的特定功能,从而将新功能暴露于指定百分比的流量或有限的组。A和B路由段可能会将流量发送到软件的不同版本,或者服务实例甚至可能使用相同的软件版本,但具有不同的配置属性(在协调器或其他地方指定)。

 

蓝绿色部署

蓝绿色部署模式涉及并行操作两个生产环境:一个用于当前稳定发行版(蓝色),一个用于上一个版本并在下一个发行版上执行测试(绿色)。这种策略使更新的软件版本能够以易于重复的方式发布。Devops团队可以使用此技术通过CI / CD管道自动执行新版本的发布。

 

使用蓝绿色策略,开发人员可以在当前处理生产流量的现有实例的旁边部署新的服务版本。CI / CD管道应设置为执行自动烟雾测试,以验证新版本的关键功能是否成功。一旦新服务通过了最后的测试,就可以使用软件路由无缝地管理从蓝色到绿色的流量切换,从而安全,自动地将流量重定向到它。同样重要的是,对于关键的,最新的问题,如果出现关键问题,则很容易将部署回退到蓝色版本。

 

交通阴影

 

流量阴影类似于蓝绿色部署,但是路由技术没有使用综合测试来验证“绿色”环境,而是复制了所有传入的生产流量并将其镜像到尚未公开的单独测试部署。因此,流量屏蔽可以根据真实流量准确地描述如果部署新版本会发生什么情况。同时,流量屏蔽确保测试不会影响实际生产。实际上,开发人员可以选择将一定百分比的请求复制到测试服务,然后他们可以在其中执行集成测试和性能基准测试(手动或在自动CI / CD管道的框架内)。

 

企业开发人员已经利用了一系列旨在确保新的应用程序代码满足某些要求的测试技术。例如,单元测试和功能测试仍然是代码必须清除的基本措施。但是,基于微服务的体系结构的性质使端到端集成测试比以往任何时候都更加重要。考虑到微服务体系结构固有的相互依赖关系和长期接口漂移的风险,综合测试仍然有价值,但最终将无法准确表示生产环境中服务之间的所有交互。

 

蓝四种策略一种目标

 

这些路由技术都提供了独特但又相关的方法来帮助发现,缓解和测试基于微服务的应用程序中的缺陷。它们是解决错误,性能问题和安全漏洞的有效工具,尤其是在作为端对端连续集成和交付(CI / CD)管道的一部分进行部署时。

 

哪种方法最适合您自己的情况,在很大程度上取决于最关键的问题。例如,主要的UI检修可以从A / B测试中大大受益,而蓝绿色部署对于查看新功能可能如何影响现有数据存储的性能可能是无价的。

 

通常,这些技术的组合可能会提供最佳的覆盖范围。但是,重要的是要考虑每个组件与您现有的开发模型的集成程度。例如,单个功能的Canary部署比完整版本的蓝绿色部署更适合于敏捷开发方法。而且,尽管流量影子可以很好地了解应用程序性能的预部署,但实现起来既困难又耗时,而且在计算资源方面也很昂贵。

 

无论您采用哪种技术,诸如此类的路由技术都可能是软件开发过程中不可估量的一部分,尤其是在该行业从传统的单片应用程序向基于微服务的云原生系统转移的过程中。通过应用一种,部分或全部这些技术,同时牢记它们的特定优势,应用程序团队可以更好地确保其项目的完整性和成功性,并更有信心地投入生产。

 

作者:Manuel Zapf