Microservice架构是离散的、灵活的和适合发展小型团队- Microservices负载测试
坏消息是,当涉及到计划负载测试microservices,我们会犯错误。我知道。我做了我的分享。以下是前5的错误我microservices负载测试连同我的教训。希望我Iearned的教训将帮助你避免犯我犯过的错误。
有什么不喜欢microservices (microservices负载测试)?组织应用程序服务为一组语义相关的资源表示为REST url是有意义的,对开发和使用(见图1),这使得这样一个双比萨团队是完全负责microservice的方方面面——从设计和实现,部署,测试以及维护——创建公司,可以在极小的地方转弯。这是好消息。
坏消息是,当涉及到计划负载测试microservices,我们会犯错误。我知道。我做了我的分享。以下是前5的错误我microservices负载测试连同我的教训。希望我Iearned的教训将帮助你避免犯我犯过的错误。
自动化测试已经成为持续交付/持续集成的一个重要组成部分(CI / CD)的过程。负载测试microservices尤为重要,因为需要执行快速的规模。然而,长时间运行的负载测试会导致执行CI / CD过程中的一个瓶颈,如果过早在软件开发生命周期。188金宝搏官网登录app我们有一个悖论:测试太多太早,我们开发过程慢下来。测试太迟了,我们运行的风险支付固定费用的增加代码在开发周期的后期。解决方案是什么?
诀窍是高风险测试microservices在开发周期的开始,让风险更低的服务。高风险microservices低挂水果值得花时间的负载测试。如果一个问题被发现,节省下来的钱解决问题在早期的成本超过所花费的时间运行测试。这是一个净收益。时间的负载测试在低风险microservices可以稍后在软件开发生命周期。188金宝搏官网登录app
依赖关系可以是软件开发的痛苦之源。188金宝搏官网登录app一个团队已经准备好了的代码但举行从释放它,因为另一个团队尚未交付依赖。这是一个错误。准备好了的代码应该去。
的方式来解决这种类型的延迟是使用服务虚拟化。你可以把服务虚拟化mock服务。您创建一个microservice url需要。这些url接受数据根据microservice规范根据规范和回应。然而,响应范围非常有限。例如,当您模拟端点/客户/ {id},反应总是:
{
“id”: 123年,
“first_name”:“约翰”,
“last_name”:“母鹿”
}
客户的id是123
虽然行为是有限的,它服务于目的要求:提供消耗品的功能仍处于开发阶段的依赖。
有一些microservices负载测试工具,使microservice虚拟化一个轻松的任务。的编辑器和Restito是两个的。你使用这些工具构成microservice指定的url。然后在幕后,所需工具实现其他功能限制,根据规范。
测试服务水平协议似乎是一个显而易见的事情。但是,许多公司都有组织的方式测试人员和产品管理从不了解对方,更不用说以信息化的方式进行交互。这是非常联合国-敏捷,这是一个错误。测试人员想象浪费宝贵的资源以满足操作条件。产品经理最终被沮丧当期望不满足。
完全避免这个问题的简单方法是将产品和测试到一个房间,真实或虚拟,想出一个服务级别协议(SLA)的产品管理的预期是众所188金宝搏官网app注册周知的,可以设计和实现良好的负载测试。SLA不需要写在石头上,永远不会改变,但是如果新的需求发展,成为耗时除了建立SLA,管理和沟通所需要的变化。重要的是,文档提供了具体的、常见的引用集的标准进行测试,和产品将被接受。188金宝搏官网app注册
真实故事:前阵子我microservice项目工作部署在一个大3服务提供者(AWS /天蓝色/ GC,我让你猜)。我们专门部署到美国中西部数据中心。在负载测试期间,我们发现microservice花了太长的时间来执行。我们不明白为什么。跑好内部的代码。所以我们做了一个显而易见的。我们在亚洲部署代码到另一个地区。结果呢?一切都很好。
亚洲有数据中心比中西部我们吗?我们不能说。但是我们有数据证明有一个区别。
所以结论是什么?奉献我们的部署到一个地区是一个错误。我们学到的教训。前进我们运行负载测试在不同的地区,特别是当我们为回归测试。
虽然确实负载测试请求和响应的性能与microservice关联是非常重要的,有更多的被考虑。幕后可以有更多的活动,需要观察和测量,阅读和写作消息队列,例如内存缓存。因此,实现microservices负载测试时,重要的是要有适当的监视器观察的行为与microservice相关联的所有组件。有理由从microservice缓慢反应,他们需要知道。通常一个好的应用程序性能管理API管理解决方案提供了系统监控需要与业绩不佳的负载测试相关的信息。
还有,记住,对于完整的堆栈的应用程序,一个microservice执行低于直接负载测试时可能会有困难的用户体验(UX)测试。例如,一个数据结构的一个小改变UI行为的意外的副作用。对于那些公司发布microservices作为一个更大的应用程序的组件,测试性能在UI级别会有好处。
需要记住的一件重要事情是,很多时候,获得良好的性能配置文件,在线负载测试需要超越仅仅测量响应时间对单个microservice REST调用。
有更多的比征税microservices负载测试一系列url请求的能力。一个高效的负载测试计划将使用服务虚拟化更快地获得更多的测试代码。还一个高效的负载测试将识别高风险服务测试在开发周期的早期和后来离开更耗时的测试。测试人员和产品经理会同意在一个共同的服务水平协议,是负载测试的基础分析。测试将在不同的运行时环境。最后,一个好的测试计划将使用应用程序性能管理/ API管理解决方案与综合负载测试工具和负载测试软件不仅仅是简单地测量响应时间microservice的url。188金宝搏官网登录app
避免上面的五个错误我将很长一段路要创建有效的负载测试,测量范围广泛的microservice行为。广泛的、全面的负载测试在整个软件开发生命周期实现大规模制造质量microservices执行的关键。188金宝搏官网登录app