全链路压测(6):确认范围和识别风险

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 全链路压测,见名知意,其本质是一个技术验证手段和过程。即通过一系列的准备工作和测试手段,来验证系统在生产环境的“三高”是否能满足某些特定情况下的业务需要。

前言


上篇文章用了很长的篇幅讲述了全链路压测从零开始落地实施的主要过程,其中在准备阶段是最耗费时间和精力的。全链路压测是个复杂的跨团队协作的技术工程,所以在实施之前,需要明确项目的范围边界和尽可能提前识别可能存在的风险。这篇文章,就来聊聊落地过程中,如何确定范围边界和识别存在的风险。


确定范围


全链路压测,见名知意,其本质是一个技术验证手段和过程。即通过一系列的准备工作和测试手段,来验证系统在生产环境的“三高”是否能满足某些特定情况下的业务需要。


所谓三高,指的是:高并发、高性能、高可用。


就像我在这个技术系列文章的开篇提到的一句话:“全链路压测适合某一部分具有特定业务需求的公司,能否实施取决于是否有合适的组织管理能力和对应的技术架构”。


那么如何来确定全链路压测涉及的范围呢?流程图如下:


640.jpg


640.png


如上述2张图所示,以电商双十一大促举例说明。


1、确定业务范围


电商业务,比较核心的是导购→活动→交易的业务,因为这些业务能带来比较直接的交易额和利润,也是用户直接访问频次较高的业务场景。


确定业务范围,可以参考下面这张思维导图:


640.jpg


2、梳理应用范围


确定大促的业务范围后,根据业务和应用的对照关系,梳理出对应的应用列表。


PS:这个过程可能有多次的沟通协调和battle妥协,因为谁也不想由于自己的应用不在范围内而导致出事故背锅。


3、识别核心链路


目前互联网行业大多是微服务这种分布式系统架构,服务之间的内部互相调用关系很复杂,一般会借用链路追踪工具来识别他们的调用关系以及调用频次,以此来判断哪些是核心链路,以及他们的强弱依赖关系。


PS:强弱依赖关系,影响到稳定性预案如何设计,比如强依赖一般不可降级,弱依赖可通过降级和熔断或异步解耦来解决高并发下的流量冲击。这点我会在后续的文章中重点说明。


4、识别核心接口


知道了核心应用以及核心的链路,那么核心的接口基本就可以梳理出来了。梳理出来的核心接口,一般也是我们在做全链路压测时候的接口。


PS:到这里测试同学就可以开始着手准备对应的测试case、数据和压测脚本了,其中准备测试数据会耗时较久


5、明确范围边界


如上图所示,交易是个实时且高频的场景,但订单支付成功后的仓储、物流以及收货后的社区分享,就是个非实时且流量更分散的情况,因此这些业务场景可以视其为非核心业务场景。


PS:当然,业务涉及的一些基本功能或者外部应用,如消息push、短信通知以及三方物流等,根据具体情况和对应供应商沟通协调好即可。


识别风险


除了确认压测范围之外,提前识别风险也是很重要的一项工作。常见的风险有如下几种:


1、交付风险


交付风险常见的有:拆分的细项任务无法按期完成,比如核心链路梳理,强弱依赖梳理。这些会导致后续的某些工作无法正常进行。因为在准备阶段,越是前面的准备工作,他的优先级和前置性越高,后续工作对它进度依赖更大。


核心任务拆解,可以参考下面这张思维导图:


640.jpg


2、依赖风险


前面提到了强弱依赖,最核心的原因在于:生产全链路压测甚至是应对双十一流量峰值的场景,需要准备很多的稳定性预案,常见的有限流降级熔断甚至主备切换和容灾恢复等。


这些预案需要考虑很多因素,最核心的是服务和中间件等组件的强弱依赖关系。如我上述所述,强依赖一般不可降级,弱依赖可通过降级和熔断或异步解耦来解决高并发下的流量冲击。


3、环境风险


全链路压测,无论是在单独的性能测试环境进行单机单接口、单机单链路、单机混合链路压测,还是在生产进行压测,对环境的要求是比较高的,特别是生产环境,需要考虑的更多。如流量路由的组件接入情况、mock准备、影子表、数据准备、预热甚至监控的覆盖度,都是会影响到环境的因素。


4、数据风险


生产全链路压测,最大的风险就是压测产生的数据影响到正常的用户业务数据,导致的数据污染。还有一种场景就是业务会出很多的报表,这些数据都是通过从业务库离线写入数据分析团队的库进行计算分析的,如果不能对压测数据和正常业务数据进行识别和隔离,会带来很大的问题。


上面的内容就是在全链路压测实施过程中,需要考虑的确定范围以及风险识别相关的内容,仅供参考。下一篇,我会和大家聊聊,关于核心链路梳理相关的一些技术细节,敬请期待。


往期技术文章推荐


全链路压测(1):认识全链路压测

全链路压测(2):方案调研和项目立项

全链路压测(3):技术改造和测试验证

全链路压测(4):全链路压测的价值是什么?

全链路压测(5):生产全链路压测实施全流程

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
9月前
|
负载均衡 NoSQL 关系型数据库
性能基础之全链路压测知识整理
【2月更文挑战第16天】性能基础之全链路压测知识整理
351 11
|
9月前
|
存储 缓存 中间件
高可用之全链路压测
【2月更文挑战第30天】全链路压测是提升系统可用性的关键方法,它模拟真实流量和业务场景在生产环境中测试,确保性能、容量和稳定性。
|
监控 测试技术 UED
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(1)
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(1)
328 0
|
域名解析 网络协议 数据可视化
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(2)
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(2)
242 0
|
SQL 监控 关系型数据库
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(3)
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(3)
234 0
|
数据可视化 测试技术 定位技术
全链路压测(14):生产全链路压测SOP
从实践经验的角度出发,生产全链路压测在技术实现上没有太多新花样,但要在不同的业务和企业落地,就各有各的实践路径。对于没有太多经验的同学来说,全链路压测的落地,大多还是基于个人的经验和熟悉的领域,即都是在局部作战,缺乏全局的视角和可视化地图。从全局来讲,缺少适用于自己的全链路压测最佳实践。
全链路压测(14):生产全链路压测SOP
|
存储 SQL 缓存
全链路压测(13):高可用和性能优化
业务场景复杂化、海量数据冲击下,发现并解决业务系统的可用性、扩展性以及容错性问题。
全链路压测(13):高可用和性能优化
|
监控 Java 测试技术
全链路压测(12):生产压测必不可少的环节
在生产环境开展全链路压测,相对于测试环境来说风险和成本都是比较大的。因此需要一套严格的流程管控和响应机制,以及高效的团队协同体系。
全链路压测(12):生产压测必不可少的环节
|
SQL 缓存 运维
全链路压测(10):测试要做的准备工作
功能验证环境即用来验证技术组件本身的功能正确性和接入性能损耗的环境,有独立的随时可用的环境最好。如果考虑到成本,也可以用线下性能环境来进行验证。
全链路压测(10):测试要做的准备工作
|
缓存 监控 安全
全链路压测(11):聊聊稳定性预案
从业务角度来讲,无论技术做任何的改动和优化,最终的目的都是为了业务目标的达成。而系统的稳定性,无论从用户体验还是业务目标达成的角度来看,都是不可忽视的一环。