计世网

原创|弹性微服务的4种部署策略
作者:Manuel Zapf | 来源:计算机世界
2020-12-18
采用本文所介绍的这些云原生路由技术可以测试并降低微服务部署中的风险。

 

与传统架构相比,开发人员使用微服务构建应用程序速度会更快、更灵活。但是,每一次修改代码仍然会带来风险,如果没有发现并解决代码质量问题,就为潜在的失败埋下了伏笔。为了降低这类风险,应用程序开发团队应实施现代的云原生路由策略,以便更方便地测试危险因素,并确保应用程序能真正准备好部署到产品环境中。

以下4种部署策略使用路由技术安全地引入新的服务和特性、测试功能、改进迭代、发现并消除漏洞等等。这些方法共同构成了一个虚拟工具箱,应用程序开发团队可以使用它们来降低开发和部署微服务应用程序时的风险。

金丝雀部署

“金丝雀”的命名源于一种历史上的习惯做法,人们把实际的鸟类放到煤矿里,目的是查看空气质量对人类是否安全,金丝雀部署是以最小影响和最小风险测试实际产品部署的一种方式。所谓的金丝雀是一个服务的候选版本,它按照一定百分比来采集输入请求的子集(比如1%),尝试一下新的特性或者构建方法。然后,开发团队可以检查结果,如果进展顺利,可逐步将部署增加到100%的服务器或者节点。如果不顺利,则在检查和调试有问题的代码时,可以利用金丝雀部署快速重定向数据流。

金丝雀部署可以通过与负责处理流入用户数据流的边缘路由组件集成来实现。以这种方式路由数据流可以确保在正式推出新服务之前验证新服务是否可行。如果不可行,就会被退回以解决问题,在准备好后再进行新一轮金丝雀部署测试。

A/B测试

A/B测试与金丝雀部署类似,但有一个重要的区别。金丝雀部署偏重于发现漏洞和性能瓶颈,而A/B测试则偏重于衡量用户对新应用程序特性的接受程度。例如,开发人员可能想知道新特性是否受用户欢迎,是否容易被发现,或者UI功能是否正常等等。

这种模式使用软件路由来激活并测试不同数据流区段的某些特性,把新特性呈现给指定百分比的数据流,或者有限的组。A和B路由区段可能会将数据流发送到软件的不同内部开发版本,服务实例甚至能使用相同的软件内部开发版本,但具有不同的配置属性(就像在编排器或者其他地方指定的那样)。

蓝-绿部署

蓝-绿部署模式涉及到并行操作两个产品环境:一个用于当前稳定版本(蓝色),另一个用于在下一版本上准备和执行测试(绿色)。这种策略使更新后的软件版本能够以一种易于重复的方式来发布。DevOps团队可以使用这一方法,通过CI/CD(Continuous Integration and Delivery)管道自动执行新版本的发布。

采用蓝-绿策略,现有实例在处理产品数据流时,开发人员可以同时部署新的服务版本。一旦新服务通过了最后的测试,就可以使用软件路由无缝地管理从蓝到绿的数据流切换,数据流就可以安全地自动重定向到新服务。同样重要的是,如果在最后一刻出现了关键问题,可以简单地将部署回退到蓝色版本。

数据流屏蔽

数据流屏蔽与蓝-绿部署类似,但路由技术不是使用综合测试来验证“绿色”环境,而是复制所有输入的产品数据流,并将其镜像到尚未公开的单独的测试部署中。这样,数据流屏蔽部署基于真实的数据流,能够清楚地展现新版本部署后会出现什么情况。同时,数据流屏蔽部署保证了测试不会影响实际产品。

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

4种策略,一个目标

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

这些方法中哪一种最适合你自己的情况,很大程度上取决于最关键的问题所在。例如,对UI进行重大调整非常适合采用A/B测试,而蓝-绿部署则适用于了解新特性怎样影响现有数据存储的性能。

通常,把这些方法组合起来使用,覆盖范围会更好。但是,重要的是要考虑每一种部署与现有开发模型的集成程度。例如,侧重单个特性的金丝雀部署比完整版本的蓝-绿部署更适合敏捷开发方法。虽然数据流屏蔽部署能够在部署前很好地了解应用程序的性能,但其实现起来很困难而且非常耗时,计算资源也很昂贵。

通过应用这些方法中的一种、一些或者全部,同时注意它们的具体优势,应用程序开发团队能够更好地保证项目的完整性和项目的成功,更有信心地投入生产。

Manuel Zapf是从事开源项目Traefik和Maesh的云原生网络公司Containous的产品OSS负责人。

编译:Charles

原文网址 https://www.infoworld.com/article/3565750/4-deployment-strategies-for-resilient-microservices.html

责任编辑:资讯