应用程序分解在应用程序性能测试中的重要性

通过从应用程序中学习企业APM产品,发现更快,更高效的性能监控。 参加AppDynamics APM导览!

摘要

了解如何通过分解应用程序和应用适当的手段来最大程度地提高指标数据的质量。
DevOps正在改变公司开发和维护软件的方式。 通过将运营工程师整合到软件开发团队中,公司减少了从代码完成到实际生产的平均天数,并消除了等待时间和返工等诸多优势。 但是正如我在之前的文章“ DevOps世界中的性能测试”中指出的那样,性能测试仍然是该过程中最薄弱的环节。

除了持续集成和持续交付(CI / CD)之外,公司还需要进行持续的性能测试以完全实现DevOps的优势。 正确的仪器对于确保您收集坚如磐石的指标数据至关重要,而无论您如何寻找关联,拥有可重复的收集过程都将使您受益。 古老的格言“垃圾进,垃圾出”仍然适用,而且永远都会适用。

我的过程从我喜欢的“应用程序分解”开始。 本质上,我想了解有关应用程序或服务中每个事务的所有维度或属性。 大多数(如果不是全部)现代APM软件(如AppDynamics)都使用字节码注入来标记和跟踪从已知入口点到代码出口点的事务。 这样,事务进入API或从特定的类/方法开始,并且将跨线程跟踪并以标头标记退出,该标头标记与运行代理的下一个服务能够关联。

配置字节码注入的位置非常重要,因为我们如何以适当的唯一性程度定义事务也是如此。 为了说明这一点,让我们假设我们有一个为ShoppingCart提供端点的API。

应用程序分解在应用程序性能测试中的重要性

现在,让我们假设,根据所使用的HTTP方法(例如GET,PUT POST等),此ShoppingCart终结点可以执行一些操作。 这些方法中的每一个都通过代码调用不同的路径。 为了分解该应用程序,我们希望通过监视servlet并拆分HTTP方法将它们捕获为自己的事务。

应用程序分解在应用程序性能测试中的重要性

配置事务后,您将需要使用每种HTTP方法调用端点并进行预览,以确保一切正常。 完成后,保存设置并开始加载。 启用开发人员模式将确保您正在捕获快照,以便您可以分析调用堆栈并了解应用程序如何计时。 记下在数据转换,后端调用,DB,CPU和磁盘(如果适用)上花费了多少时间。 它的依赖性是什么? 等等。 应用程序分解是关于了解应用程序或服务执行的基本行为以及如何执行的。 我无法告诉您我做了多少次,并且发现了在不增加负载的情况下优化应用程序的机会。 花费的时间永远不会浪费时间。

评估指标的获取方式是构建或改进绩效工程计划的关键步骤。 尽管策略确实会根据所讨论的框架进行更改,但原理是相同的。 您将需要制定一种监视关键任务代码路径的策略,以便将类似的事务存储在相同的业务事务名称下并作为基线。 如果您将太多不同的事务组合在一起(或无法正确拆分),则基线将反映事务特征和处理速率的差异,而不是系统性能的变化。 在进行此操作时,请确保以某种方式命名这些事务,这不仅对您的DevOps工程师而且对业务都有意义。

在为客户分解应用程序时,我更喜欢编写一个负载生成器,该负载生成器将在循环中一遍又一遍地通过每个事务运行一个虚拟用户。 理想情况下,我是在没有其他任何事情发生的安静环境中执行此操作的,这主要是因为我只是在追求一个很好,干净的数据集,因此我可以深入研究并理解它。 我真正想主要了解的是,这些更改的任何属性值是否导致响应时间或资源消耗发生了重大变化,因此我捕获了请求和响应上的所有数据。 如果这样做,我们可能会调用不同的代码路径,而我想将其分解为自己的事务。

如果您已正确分解了应用程序,则在逐渐增加一些负载时,业务交易的性能概况应该是确定的。 意思是,您应该在图表数据中看到响应时间的曲棍球棒,而不是落基山脉。 如果响应时间变化很大,而且看似无缘无故,则可能表明系统,测试工具或应用程序分解不正确。 在某些极端情况下,应用程序编写得不好,并且与性能工程开发人员的实践不符。 非确定性接口在遗留代码中更为常见,有时根据标头或请求有效载荷中的数据来获得可预测的响应时间并不容易。 在这些情况下,我们可以选择添加逻辑以从通过Data Collector或使用我们的Agent SDK执行的代码中获取指标。

但是,大多数业务交易很容易分解,因此进行连续测试相对容易,特别是如果您具有统一的APM解决方案(如AppDynamics),该解决方案可以使大部分过程实现自动化。

既然您已经确保了指标数据的质量,那么您就应该考虑进行测试了。 在我的下一篇博客文章“在DevOps世界中进行性能测试的五个用例”中,我将介绍建议的测试模式,以提高应用程序的效率和可靠性。

Colin Fallwell是AppDynamics全球服务团队的成员,该团队致力于帮助企业实现业务和应用程序性能监控的价值。 AppDynamics的Global Services的顾问,架构师和项目经理是解锁跨堆栈智能的专家,这些智能是改善业务成果和提高组织效率所必需的。

通过从应用程序中学习企业APM产品,发现更快,更高效的性能监控。 参加AppDynamics APM导览!

翻译自: https://www.javacodegeeks.com/2018/07/decomposition-app-performance-testing.html