首页 > 其他分享 >如何做好线上服务质量保障

如何做好线上服务质量保障

时间:2023-11-27 17:35:09浏览次数:42  
标签:服务 服务质量 可用 处理 故障 做好 线上 测试

如何做好线上服务质量保障

 

昨天下午星球有同学问了一个问题:目前业内高可用部署主要采用方案?

看到这个问题,我的第一反应是问题太宽泛,不够明确。我反问了她一个问题:“你需要什么高可用?业务高可用?服务高可用?数据库高可用?还是其他?”

针对问题我也给出了我的理解和方案,大致内容如下:

高可用类型

简单理解

高可用方案

业务高可用

用户的操作都可以正常被处理

冗余设计+故障预案+监控告警+良好的服务发布体系

服务高可用

service可持续处理请求,但不对业务的正确性负责

分布式集群+限流熔断方案+
多可用区多机房

上述的内容只是一个引子,因为高可用和线上服务的稳定性有密切的关系。而软件测试或者说质量保障的工作范畴,不仅仅在测试环境,线上环境的服务质量保障,也是我们需要关注的重点。

这其实也是我在之前的文章《如何建立高效的质量保障体系》中提到的一点:交付(线上)质量持续运营。见下图:

那么如何做好线上的服务质量保障工作,达到持续运营的理想状态呢?这是我本篇文章要聊的话题。

 

发现线上故障

业内程序员面试时候据说有个三高的说法,即:高并发、高性能、高可用。

分布式架构中有CAP理论,即:Consistency(数据一致性)、Availability(服务可用性)、Partition tolerance(分区容错性)。

这些点对软件系统提出了很高的要求,既要能扛得住高并发流量冲击,又要具备很好的性能来处理请求,还要达到服务和业务的高可用,并且要保证业务数据的一致性,最后还要对异常场景有一定的冗余处理能力,简直是难上加难。

而线上服务(或者说生产环境),我们最担心也最常见的就是出现线上故障。故障的种类很多,什么服务挂了、支付失败、无法加载商品图片等等不一而足。

要保障线上服务质量,避免出现线上故障的前提,除了在测试阶段做好测试,上线发布前仔细验证之外,还需要具备在故障发生时及时发现故障的能力。

目前最常见的发现故障的手段有两种,分别是:日志分析和监控告警

当然,很多的监控告警系统也是通过埋点数据和日志采集,对采集的数据进行过滤,解析成一定的结构数据,然后进行存储以及可视化展示来做的。

比如很经典的ELK(Elasticsearch+Logstash+Kibana),如下图:

通过日志分析和监控告警,我们可以快速的发现线上故障,及时的进行处理。

 

处理线上故障

发现线上出现故障后,第一优先级永远是快速恢复线上业务的可用性,然后再考虑其他。

写到这里突然想起之前就职的某家企业交易团队负责人的话:优先业务止血,再考虑问题定位分析和优化

以我的工作经历来说,一般发现线上故障后的处理流程如下:

一般来说,线上故障处理,主要会涉及到如下四种角色:

NOC:一般指专门的线上服务巡检和监控值班人员,出现故障时作为信息收集和信息分发中心;

运维/研发:线上故障由对应业务域/服务的研发和运维进行处理(研发对代码最熟,运维有服务配置发布和变更权限);

测试/产品:故障恢复后测试进行观察验证,如果影响范围较大,还需要通知产品甚至市场运营进行对应的配合处理;

高层领导:如果故障比较严重,需要上升到更高级别的负责人,并且某些重要操作需要高层决策和授权;

 

修复线上故障

一般来说,对于线上出现故障,快速恢复服务可用业务可用,降低故障带来的损失是首要的,修复bug反而是其次。

所以在线上出现故障时,一般都会采用一些临时方案来达到快速止血的目的。常见的临时方案有:

  • 服务重启;
  • 部署回滚;
  • 限流降级;

有临时方案就有后续的优化方案,一般在线上故障恢复后,会进行如下几个步骤:

  • 利用日志和故障现场保留的dump文件等进行根因分析;
  • 修复故障后在测试环境进行验证,确认没问题后再发布到生产环境;
  • 记录故障从发生到彻底修复的全过程,进行线上故障复盘,提出后续改进方案并跟进落地;

当然,除了上述的一些手段,还可以通过如下几种方式来降低线上出现故障的影响和损失:

  • 组织线上故障演练,培养技术同学的临时反应和处理问题能力;
  • 通过灰度发布或者发布beta版本,让用户成为帮助我们发现问题;
  • 做专项的混沌工程,在不断的攻防演练中提升线上服务的质量和稳定性;

 

运营线上质量

聊了这么多,那测试同学如何针对线上故障,做好质量持续运营呢?可以从上面的几张配图来切入。

线上服务巡检:NOC并不是一个岗位,而是一种职责,测试同学对于业务和自己负责的项目相对更熟悉,要做到最快速度发现和处理线上故障,就是要让最正确的人第一时间响应和介入处理。

而测试同学可以达到监控巡检和信息分发以及快速验证的作用。当然,这种机制需要一定的时间建立,还需要一定的基础技术服务设施支撑。

组织故障复盘:流程和规范可以将好的实践标准化流程化自动化,让技术团队共享经验,而组织故障复盘并且跟进后续的优化落地效果,就是一个测试同学可以很好胜任的事情。

故障处理手册:有了日常线上巡检,组织了故障复盘,可以沉淀很多的最佳实践,可以将这些实践抽取共性,沉淀输出为一份故障处理手册,并在团队内做宣讲和落地。

这样既可以让其他同学在面对故障时能更快的响应处理,也能让新同学入职后快速的熟悉团队的技术栈,加快融入速度。

 

转载请注明出处,商用请征得作者本人同意,谢谢!!!   分类: 软件测试 , 稳定性保障 好文要顶 关注我 收藏该文  老_张
粉丝 - 4386 关注 - 11     +加关注 12 0       « 上一篇: 从软件工程角度看测试
» 下一篇: 性能测试岗位能力模型 posted @ 2022-11-07 23:51  老_张  阅读(2074)  评论(2)  编辑  收藏  举报    

标签:服务,服务质量,可用,处理,故障,做好,线上,测试
From: https://www.cnblogs.com/gaoyanbing/p/17859877.html

相关文章

  • 线上业务系统的迁移思路【MySQL】
    概论在日常开发场景中,迁移数据库是非常常见的。但是线上业务系统进行迁移,并不是见一个简单的问题,必须考虑到迁移过程中线上系统的可用性、性能等。本文针对MySQL对迁移策略进行讨论。实现方法思路一:binlogMySQL的binlog日志是一种二进制格式的日志,binlog记录所有的DDL和DML语......
  • 相交 - 点是否在射线上
    效果 //点是否在射线上publicstaticboolIsPointOnRay(Vector2o,Vector2dir,Vector2p){varop=p-o;if(Mathf.Approximately(op.sqrMagnitude,0))//o和p重叠returntrue;//共线且夹角为0度则在射线上floatcross=V2Cross(ref......
  • 收银系统源码-线上商城篇,打通线下收银台,ERP进销存
    智慧新零售系统是一套线下线上打通一体化的saas收银系统。主要为零售行业提供多样化的线下收银、双端线上商城、erp进销存、精细化会员管理、50+营销插件、企微私域scrm等行业解决方案,帮助商户做数字化升级!今天我们重点聊一下线上商城功能。智慧新零售线上商城主要分为微信和支付宝......
  • 如何做好架构设计,架构设计有章可循吗?
     设计一个系统的过程,就是建造一座大厦的过程,架构设计的质量直接决定了大厦的质量。在我们进行系统的架构设计时,总是会遇到一系列的问题,比如一个大型系统的架构应该如何起步,从哪里开始设计?系统是否应该划分成多个模块,应该怎么划分模块才更加的合理?亦或是觉得产品提出的需求非......
  • 线上ES集群参数配置引起的业务异常案例分析
    作者:vivo互联网数据库团队-LiuHuang本文介绍了一次排查Elasticsearchnode_concurrent_recoveries引发的性能问题的过程。一、故障描述1.1故障现象1.业务反馈业务部分读请求抛出请求超时的错误。2.故障定位信息获取故障开始时间19:30左右开始故障抛出异常......
  • 如何做好架构设计,架构设计有章可循吗?
    设计一个系统的过程,就是建造一座大厦的过程,架构设计的质量直接决定了大厦的质量。在我们进行系统的架构设计时,总是会遇到一系列的问题,比如一个大型系统的架构应该如何起步,从哪里开始设计?系统是否应该划分成多个模块,应该怎么划分模块才更加的合理?亦或是觉得产品提出的需求非常不合......
  • OpenCASCADE曲线上点的反求
    OpenCASCADE曲线上点的反求[email protected]曲线可以用代数方程表示,如圆可以用X^2+Y^2=R^2表示,也可以用参数方程X(u)=RCos(u),Y(u)=RSin(u)表示。要判断点是不是在线上,用曲线代数方程可以很直接得出结果,但是使用参数方程就没有那么直接。这也是参数曲线上点的反求......
  • 获取App Store线上应用版本信息
    热烈欢迎,请直接点击!!!进入博主AppStore主页,下载使用各个作品!!!注:博主将坚持每月上线一个新app!!【 注意:中国大陆区用/cn/,如果是其他地区,请把链接改成对应的地区代码。】1、通过AppID:AppStore搜索对应的应用,点击右上角分享按钮,点击拷贝链接,复制到浏览器中,最后的显示的就是十位idh......
  • 数据分析师如何做好PPT
    作为一名数据分析师,制作出色的PPT是非常重要的技能之一。一个好的PPT可以让你的数据洞察更加生动有趣,并有效传达给观众。以下是一些详细的步骤和技巧,帮助你成为一名擅长制作PPT的数据分析师:确定目标和受众:在开始设计PPT之前,明确你的目标和受众是非常重要的。了解你的受众是谁,他们......
  • 如何做好嵌套数据的验证呢?
    对于嵌套数据的验证,以下是一些常用的方法和指导:使用递归:如果嵌套数据的层级较深,可以使用递归方式进行验证。通过递归遍历嵌套的数据结构,对每个层级进行验证。这样可以确保每个子层级的数据都符合要求。定义验证规则:在验证嵌套数据之前,首先需要定义验证规则。这些规则可以包括数据类......