解救P先生:应用发布前保障性能的十八种方式(二)
在假期之前,我们分享过一篇文章《爱在黎明破晓前|应用发布前保障性能的十八种方式(一)》,它是讨论应用正式推出之前,开发、DevOps包括IT运维等部门应该怎样通力协作的问题,国内外的应用性能管理(APM)以及相关市场的专业人士就APM、APM+统一化监控、DEVOPS、移动APM、最终用户体验等五个方面分享了自己的看法。(如果您错过了这篇文章,可以通过听云微信号历史消息查找,或者扫描今天文章后方的二维码阅读)
那篇文章我用了《爱在黎明破晓前》这部电影作为例子,因为我觉得应用发布,就像一次程序员与应用之间的邂逅。而今天同样可以用一部现在热门的电影来比喻:《解决吾先生》,因为今天我们继续讲到性能测试、负载测试、数据库测试等,就像我们在尽全力解救P先生(Performance)。在未来,我们还会有ITOA、日志分析、双模IT等方面的内容与大家分享。
文章开始之前,我仍想引用Performance Tuning Corporation首席战略官Mark Swanholm的话,这句话不仅是阅读这篇文章应有的心态,同样也是如今IT行业面对应用发布时应有的心态:“要在正式推出之前保障应用的理想性能,最理想的“工具”永远是我们自己开放而认真的心态。除非大家能够选择了一套科学且以实证为基础的、涵盖整套堆栈的方案,否则当今环境的复杂程度必将远超大家的想象,同时带来预料之外的各类问题。”
(接上期)
6.性能基准
拥有来自全部应用的性能基准信息,从而在应用正式投放生产环境之前评估其中可能存在的任何薄弱环节是重中之重。同样重要的还有根据预期最终用户体验开发一套衡量指标,在应用的整个生命周期当中将实时性能与这些指标进行对照,从而确保尽早、尽快地发现并解决用户遭遇的性能问题。
——Bill Berutti
——BMC Software公司性能与可用性业务总裁
确定并总结出各类典型的Web/移动/API使用场景(或者预期使用场景)。对应用以及生产基础设施进行压力测试,从而发现并消除其中存在的瓶颈,同时创建出一套预期性能基准。从最终用户及后端层的角度出发创建服务水平协议以及性能与可用性水平线。
——Anand Sundaram
——SmartBear公司AlertSite用户体验管理产品副总裁
细节决定成败,应用性能问题对于企业关键业务的影响变得愈发重要,APM平台的出现可以切实解决对于业务的关注,让研发团队、运维团队在同一个平台上看到他们各自所关心的问题,通过对用户现有的开发运维的流程和痛点解析,了解下一代业务级运维平台,涵盖由客户端App开始,经过互联网传输到数据中心,由Web服务器,经过App服务器到DB服务器全流程的发现应用性能问题,并提供代码级定位和解决问题的方法建议。
——Fred
— —听云技术副总裁
在应用正式推出前保障其性能水平的工作当中,还有一项简单、经过事实验证但却往往受到忽略的流程,就是建立性能基准。无论是立足于应用还是网络的角度,性能基准无疑都是我们了解当前应用执行状况以及预测新应用执行效果的核心考量标准。这一结论看起来显而易见,但根据我们与客户的交流发现,很多企业往往根本无法回答出这些最为简单的问题——因为没有人负责执行并记录这些周期性基准参数。执行基准测量对于任何一个部门而言都应该是一项既定的高优先级任务。如果没有一套完善的应用及网络性能基准记录流程,那么IT部门的工作将变得非常盲目。
——Jay Botelho
——WildPackets公司产品管理负责人
7.在开发生命周期早期进行性能测试
要想最大限度降低性能缺陷,最理想的途径之一就是在IT体系当中实施一套全面的性能保障策略。尽早对每一个新项目以及变更请求进行性能风险评估,这样大家就能在应用生命周期之内尽早的发现问题。总而言之,性能测试必须成为所有发布版本的强制性质检环节。
——Ian Molyneaux
——Intechnica公司性能事务负责人
利用用户测试、性能测试以及负载测试这套组合拳,尽可能在开发周期早期发现问题,从而在应用正式推出前保障其性能表现。这意味着我们能够尽可能快地获取到任意应用从上线到运行这一过程中的基础性端到端功能表现,甚至可以了解其是否与后端服务相冲突。通过这种方式,商务、测试、开发以及运维人员都能够观察到整个流程并感受处于正常工作下的产品三级模型,同时在打造“精简预览版”或者首个版本时避免其可能出现的性能问题。
——Ken Godskind
——APMexaminer.com网站分析师兼首席博文作者
8. 负载测试
利用APM实现负载测试已经成为一种必然选择。大家需要确保应用当中的所有层面——包括服务器端应用以及微服务、运行在浏览器当中的JavaScript层(如果属于Web应用)以及原生客户端层(如果属于iOS或者Android应用)——都能够在多用户使用场景中能够良好的执行。在这方面,利用生产负载曲线来准确定义测试过程中的负载量是一种理想的处理方式。
——Al Sargent
——New Relic公司产品市场营销高级主管
毫无疑问,要在生产环境下确保应用的峰值性能,最理想的办法就是利用类似于质量保证环境的方案对应用进行生产负载测试。这是项说起来容易做起来难的工作,因为质量保证与生产环境之间存在着很大差异,大部分企业的服务器资源、数据总量以及网络配置都无法在这两种环境之间得到完全统一。不过如果大家不希望在生产环境中遭遇意外的性能问题的话,那么利用较低环境进行应用测试还是很有必要。另外,我们还需要可靠的负载测试工具与APM工具配合。最后,请细心记录每一项性能指标。
——Karun Subramanian
——http://www.karunsubramanian.com网站应用支持专家
9. 数据库测试
相信每个人都明白应用性能优化工作的重要性。但如果大家忽略了后端数据库的性能表现,那么最终用户体验也必然会受到影响。为此,我们需要为自己的数据库设定性能基准,并在推出应用的同时对其进行严格监控。具体举措包括运行生产系统压力测试以确保数据库能够处理新型数据负载,设置阈值以避免低效或者糟糕的查询性能,同时追踪真实用户的响应时间以确保发布流程拥有一致的用户体验体验。
——Josh Stephens
——Idera公司产品战略副总裁
用户体验至上的时代,很多创业团队为了抢夺市场,将快速迭代的产品部署到云端,当服务上线之后影响用户体验的因素就出现了,例如服务响应慢,业务崩溃等,这些原因导致创业团队不能为用户提供更好的服务。而面对这些问题,APM又能做些什么:对软件应用性能和可用性进行监控和管理,致力于发现和定位性能瓶颈和故障,以保证达到预期的服务水平。
有了APM之后,从传统运维转变成业务级运维,从上自下的体验可以发现真实用户的感知,比如说发生了一次APP的加载缓慢,这个APP经过了网络到达你的应用,你的应用服务器由哪一些代码去响应的,调用的哪些数据库、哪些应用,组成了整个响应的时间,每一个方法造成多少影响,这些就是APM要解决的问题。
——杨金全
——听云研发总监
10. 云测试
采用Office 365或者Google Apps等SaaS应用方案的企业往往没有意识到,他们的互联网连接并没有针对即将到来的流量增长做好准备。而这很有可能最终彻底改变企业向云端迁移的运营决策。为了避免这类问题,我们需要对云应用的可用性及性能水平进行全面测试,包括立足当前位置在产品发布前、发布中以及发布后的测试工作,这样我们才能及时发现并解决可能出现的配置与带宽问题。
——Patrick Carey
——Exoprise公司产品管理与市场营销副总裁
注:本文系听云工程师编译整理