构建高效的容量保障体系

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 性能测试体系建设的内容偏向技术实践,质量保障机制构建的文章又类似方法论,中间存在一定Gap。或者说在方法论和技术实践之间,我个人认为存在一个粘合的部分,能让其他人可循径前行落地的机制。

之前写过性能测试体系建设、质量保障机制构建的文章(见文末超链接),最近重读有一些新的感触。


性能测试体系建设的内容偏向技术实践,质量保障机制构建的文章又类似方法论,中间存在一定Gap。或者说在方法论和技术实践之间,我个人认为存在一个粘合的部分,能让其他人可循径前行落地的机制。


这篇文章如标题所述,我想基于容量保障这个话题,来尝试将方法论和技术实践中间的粘合部分描述出来。


思维导图


640.png


如上图所示,结合我个人实践经验,我理解的容量保障体系由这几部分构成:


容量保障对象:明确容量保障的对象是谁,有哪些特性,在什么时间可能有容量问题;


容量保障方法:方法是指导技术实践的抽象总结,定义了在容量保障过程中不同阶段做什么事情;


容量保障工具:工具主要作为支撑方法落地和提高过程效率的手段,上图列举了最重要的几个工具;


容量保障组织:容量保障涉及多个部门或团队,需要一个独立或虚拟团队负责协调资源和保持高效信息同步;


容量保障对象


构建容量保障体系之前,首先要明确被保障的对象是谁,有什么特性,什么时间可能会发生故障。按照常见的一些工作场景,可以将其分为如下三类:


日常事件


日常事件指的是我们工作中经常会遇到的事情,比如有规律的版本迭代,业务拆分新服务上线等。


以版本迭代来说,可以通过梳理出核心业务+核心应用+核心链路+核心场景+核心接口的方式,将这些压测任务融入正常的版本迭代测试流程中。这样做一方面是从研发测试流程上将日常容量保障做了流程化,另一方面也可将其作为一种长期的容量水位基线,来评估整体的性能变化趋势。


计划事件


计划事件指的是还未发生但将来要开展的事情。比如电商的双11,比如国家电网月初月末的电费缴纳,这些通过需求分析或者业务计划就可以明确的事情。


以双11来说,可以在活动开始前几个月就针对性的进行需求分析,指标分析,流量建模,链路梳理、预案准备等工作,并提前进行资源预购、单接口压测以及业务性能优化。等到9-10月份,在线上开展全链路压测前,将很多性能容量问题提前解决掉,这样效率会更高。


突发事件


无论是日常事件还是计划事件,都是确定性比较强的,而突发事件则是没有确定性的。面对突发性的紧急事件,应对措施主要有这几种:


  1. 提前评估可能发生的风险,并做好应对方案;
  2. 尝试混沌工程和容灾演练,不断丰富应对方案,提高团队面对突发情况的应对能力;
  3. 不断分析和优化业务以及技术架构,使系统具备弹性伸缩能力和一定的故障自愈措施(限流降级熔断);


容量保障方法


了解了容量保障的对象特性之后,就可以针对性的进行技术实践了。


无论是日常事件还是突发事件,应对措施其实都是同一个流程,我将其分为如下几个阶段:


事前:需求分析、风险评估、技术方案、各种前置准备工作如测试数据测试脚本;


事中:压测执行、查看监控、分析指标和异常问题、定位分析优化、重复测试验证;


事后:针对测试验证过程中出现的问题进行复盘分析,找到当前团队的不足之处,不断迭代优化;


全局:这点也可以理解为长期的宏观视角,即长期目标。事前事中事后是比较详细的短期手段,解决具体的问题。而容量保障需要从全局考虑,哪些方面需要纳入保障范围,全局角度存在什么风险,哪些方面当前没问题以后可能会出现问题。全局角度来说,线上的容量基线(参考日常事件的解决方法),日常巡检治理(慢sql/异常/毛刺指标/redis大key)等都是需要长期进行治理的。而这个治理过程,则可以通过事前事中事后的方式来落地验证效果。


容量保障工具


聊完容量保障方法,接下来聊聊容量保障的一些工具。


压测平台


要做好容量保障,容量测试是必备的一个环节和手段。


传统的压测,都是每个场景重新写脚本,造数据,手动或者命令行启动压测。这样的做法不仅效率低,不利于多人协同,而且每个人的能力、工作习惯都不一样,对于复杂的业务场景和比较大的团队来说,是很难达到高效的容量保障的。


而平台的好处在于,通过平台提供标准化操作,将不同个体差异通过流程化的方式约束起来,减少重复造轮子和轮子之间差异导致的排查和解决问题的成本,进一步提高人效。


压测平台一方面可以将脚本和数据进行持久化管理,另一方面也可以将压测的结果进行长期存储,便于分析和优化。关于压测平台详细的落地实践,我会在下一篇文章重点说明。


监控平台


容量测试很重要,但更快的发现问题和高效的分析定位瓶颈也很重要。


而一个比较完善的监控平台(体系)可以提高发现问题的速度和定位分析问题的效率。


要对监控有个全面的了解,大体要了解三方面的知识,如下图所示:


640.png


一般在企业级监控领域,大体分为五种类型的监控:


  • 基础监控:包括带宽、CDN、服务器CPU、Memory、DiskIO、Network、Load5等指标;
  • 指标监控:服务+接口维度,常见指标有QPS、TPS、SLB、RT、99RT、timeout、activethreads等指标;
  • 业务监控:拿电商来说,常见的有同比下单量、支付量、履约率、DAU、GMV、支付取消率等多重指标,一般需要根据具体的业务需要来定制化;
  • 链路监控:链路监控主要用来快速定位排查问题,在目前大多数互联网公司的微服务架构下,服务调用关系复杂,链路追踪监控可以帮助技术同学快速的找到调用链路上某个环节的问题;
  • 舆情监控:主要指对外部的一些讯息的监控,比如某APP突然挂了、下不了单、有BUG可以刷单、客诉等一系列对企业或者品牌不利的因素,便于快速处理甚至公关;


当然,开源成熟或者商业的监控工具和框架已经很多了,常见的工具如下表:


工具名称 工具作用 类似工具
grafana 可视化监控面板,可自由定制 kibana
exporters 数据采集工具,兼容多种操作系统 telegraf
promethous 时序数据库,存储exporters采集的数据 influxdb
skywalking 链路追踪,请求调用链耗时/状态展示 cat/pinpoint
mysqlreport mysql全局监控工具 pt-query-digest
jvisualvm Java代码分析工具,JVM自带 arthas/google-perftools


更多监控相关的内容,请参考我前面的文章:《我经历过的监控系统演进史》、《监控能给你带来什么》。


发布平台


前面的文章中提到了容量保障一个很重要的词,就是系统要具备弹性伸缩的能力。


现在的互联网企业,无论是分布式的架构还是基于容器/云原生的微服务架构,基本都具备这种能力。


而弹性伸缩的能力要么是公有云自带的,要么是自建的能力,这种能力一般都是在发布平台进行管理。


还有一点比较重要的是,性能优化后需要进行再次验证,而发布平台所具备的CICD能力可以降低这个等待的过程,快速提高服务重新发布的速度,如果集成了自动化测试在发布流程里,可以更好的提高发布的质量。


毕竟,容量很重要,质量也很重要。


预案平台


在容量保障和容量治理过程中,我们面对日常事件和突发事件,其实都是针对可能出现的问题进行前置评估和预防。


这些预防的手段可以是弹性扩容,可以是限流降级熔断隔离,但最终这些手段都是需要去执行并且保证有效的。


如果是手动去执行,难免出现错误,造成更大的损失。而预案平台就是将这些应对可能出现的故障的手段,通过平台固化下来,让其具备一定的自动处理能力,即我们所说的故障自愈。还有一点就是降低人员无法及时响应或者误操作引起的问题。预案平台有几点需要明确的是:


  1. 所有的预案都应该经过评估和验证确保有效;
  2. 所有的预案执行和变更都应经过审批和授权;
  3. 所有预案的执行和变更都需要经过快速决策;


容量保障组织


容量保障是个复杂的软件技术工作实践,涉及到多个团队或者部门,这种复杂的需要跨团队沟通协作的技术实践,需要极高的组织能力和项目推进能力,因此一个专门负责容量保障的团队是必须的。


这个团队不一定需要专职,团队可以是虚拟的组织,团队成员从各个其他团队选择有经验有能力的同学担任。但无论是专职还是虚拟,容量保障和响应线上突发情况的优先级对他们来说是最高的。容量保障团队,主要的职责有如下几点:


  1. 沉淀案例库:容量保障是个复杂的技术项目,特别是针对一些比较棘手的问题,定位分析和优化过程,经过复盘后都是很好的案例,可以帮助日常工作更好的开展;
  2. 制定流程规范:复杂的跨团队的技术实践,需要制定流程规范,让大家保持同一个方向和频次去落地的。因此制定流程规范并且推进规范的执行也是容量保障团队的重要职责;
  3. 降本增效运营:容量保障最重要的目的就是保障线上稳定性,降低成本。稳定性的提升和成本的降低也能从另一个角度促进团队效率的提高。而且容量保障是一个长期的持续的技术实践,需要持续的运营来保证稳定性的不断提升。
  4. 跨团队协调推进:复杂的跨团队的技术实践,需要制定流程规范,但是更需要有专门的角色来负责推动跨团队的协作以及信息的透明和同步。而且在企业内,不同部门之间的资源协调也是个很有意思的事情,需要专门的获得授权的团队才能从一定程度上解决部门墙问题。
相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
9天前
|
存储 API 开发工具
【实践】基于生命周期管理的存储成本优化
本实验介绍如何在阿里云创建和管理对象存储服务(OSS)。主要内容包括:1. 创建Bucket,选择存储类型及冗余方式;2. 上传文件,推荐使用API或SDK而非控制台直接操作;3. 设置生命周期规则,管理文件的存储层级转换与自动删除。实验重点在于合理配置存储策略以降低成本,并确保数据安全。通过控制台操作,用户可以轻松管理存储资源,但需注意防止不必要的公网访问以避免费用风险。
|
1月前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
99 1
|
3月前
|
运维 监控 安全
高效运维管理:提升企业IT系统稳定性与性能
在当今信息化时代,高效的运维管理对于企业IT系统的稳定性和性能至关重要。本文将探讨如何通过优化运维流程、引入自动化工具和建立完善的监控体系等措施,实现高效运维管理,从而提升企业的核心竞争力。
|
4月前
|
监控 持续交付 开发者
资源紧张下的创新之道:揭秘高效可扩展架构的设计秘诀,让技术与成本达到完美平衡!
【8月更文挑战第22天】在科技行业的快节奏发展中,设计出经济高效且可扩展的架构是每位工程师面临的挑战。本文提出五大策略:精准需求分析确保目标清晰;模块化设计如微服务架构促进独立开发与扩展;选择成熟技术栈及利用云服务提升系统效能;实施自动化流程如CI/CD加速开发周期;建立全面监控体系保障系统健康。遵循设计原则如SOLID,结合这些策略,即便资源有限也能构建出高质量、灵活应变的系统。
57 0
|
7月前
|
弹性计算 人工智能 调度
弹性调度助力企业灵活应对业务变化,高效管理云上资源
本文主要介绍了弹性调企业灵活应对企业业务变化,并高效管理云上资源。
145842 119
|
设计模式 存储 缓存
怎么在有限的时间和资源里,设计出一个既经济高效又能保持扩展性的架构呢?
怎么在有限的时间和资源里,设计出一个既经济高效又能保持扩展性的架构呢?
53 1
|
存储 运维 容灾
带你读《多媒体行业质量成本优化及容灾方案白皮书》1. 成本优化概述
带你读《多媒体行业质量成本优化及容灾方案白皮书》1. 成本优化概述
413 0
|
存储 弹性计算 运维
最佳实践丨企业上云后资源容量如何规划和实施
企业上云后,云上的预算直接影响上云的优先级、进度、深度。预算投入的多少,与业务发展和资源需求的容量评估紧密相关。精准的容量评估,可以使企业上云的预算规划更科学,同时也更贴合业务发展阶段的需要。本文分享业务上云后企业该如何进行容量的规划和实施
最佳实践丨企业上云后资源容量如何规划和实施
|
传感器 存储 机器学习/深度学习
如何规划IIoT解决方案以实现长期可扩展性
采用IIoT产品对于在当今的数字环境中保持竞争优势至关重要。但是,如果无法为长期可扩展性做规划,则会在成功之路上造成障碍。这篇文章探讨了公司如何实施IIoT解决方案以取得长期成功。
460 0
如何规划IIoT解决方案以实现长期可扩展性
|
机器学习/深度学习 前端开发 数据库
一个团队的规模维持在多少人最为合适?
记得刚工作那会,研发部门刚组建不久就 2 人,我和我领导的工作方式他做一个业务板块,我做一个业务板块。那个时候还没有前后端分离概念,我们都是从前到后,一套撸到底。前端页面、后台代码,再到数据库表的设计,外加手工的测试,一个人包办了。
3844 0