线上服务质量的问题该如何去处理?你有什么思路?

目录:导读

发现线上故障

处理线上故障

修复线上故障

运营线上质量


就是前几天有个同学问了我一个问题:目前业内高可用部署主要采用方案?

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

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

高可用类型

简单理解

高可用方案

业务高可用

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

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

服务高可用

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

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

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

这其实也是我在以前的文章中提到的一点:交付(线上)质量持续运营。见下图:

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

发现线上故障

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

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

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

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

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

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

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

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

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

处理线上故障

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

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

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

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

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

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

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

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

修复线上故障

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

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

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

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

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

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

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

运营线上质量

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

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

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

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

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

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

写在最后

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

看到这篇文章的人有觉得我的理解有误的地方,也欢迎评论和探讨~

你也可以加入下方的的群聊去和同行大神交流切磋

线上服务质量的问题该如何去处理?你有什么思路?相关推荐

  1. 第四范式推出业界首个基于持久内存、支持毫秒级恢复的万亿维线上预估系统...

    线上预估服务是AI在企业应用落地的关键环节,企业通常会采用分布式计算架构在内存中完成实时数据处理和高达万亿维的模型特征存储,并通过多集群副本解决传统纯内存(DRAM)天生的易"失" ...

  2. 教授专栏18 | 黄阳光: 建网络信誉系统 增线上促销成效

    文 / 黄阳光教授 跨境电子钱包PayPal于今年1月初发布一项中小企数码支付研究报告,发现60%受访中小企已经进行跨境贸易,并占受访者平均32%业务,当中有26%受访者已采用全球跨境支付方案.在线上 ...

  3. 网付:超八成商家开通线上渠道,小程序成零售数字化经营利器

    随着互联网的兴起,传统企业受到了很大的冲击,有很大一批传统企业在这股竞争浪潮中给淹没了,而侥幸留存下来的企业,也遇到了发展中的瓶颈.居安思危,寻求数字化转型似乎成了传统商家活下去的关键. 什么时候转, ...

  4. 面试题必问: 遇到过线上问题没,你是怎么排查的?

    点击关注公众号,Java干货及时送达 不知道你们经历过这种问题没有,比如问你遇到过线上性能问题没有,GC频繁,CPU飙高,任务队列积压,线程池任务拒绝等等,对于看重项目经验的面试官,这种问题基本是标配 ...

  5. 百分百面试题:遇到过线上问题没有?

    不知道你们经历过这种问题没有,比如问你遇到过线上性能问题没有,GC频繁,CPU飙高,任务队列积压,线程池任务拒绝等等,对于看重项目经验的面试官,这种问题基本是标配,问线上问题处理的经过,问题定位,排查 ...

  6. 阿里二面被问怎么排查线上问题的?

    不知道你们经历过这种问题没有,比如问你遇到过线上性能问题没有,GC频繁,CPU飙高,任务队列积压,线程池任务拒绝等等,对于看重项目经验的面试官,这种问题基本是标配,问线上问题处理的经过,问题定位,排查 ...

  7. 智能汽车竞赛线上答疑|灵动微电子联合逐飞科技的线上答疑会来啦~

    第十七届大赛是灵动微电子赞助大赛的第二年,今年有两个组别限定使用灵动的微控制器作为主控,分别是平衡信标组和极速越野组,另外还规定了极速越野组的无刷驱动方案需要使用灵动的MCU作为主控,平衡信标组的国赛 ...

  8. LiveVideoStack线上分享第四季(八):实时远程医学影像服务质量保障与网络优化...

    实时远程医学影像产品与传统影像产品有一个共性既医生对影像评价的本质是对图像质量的严苛评判,对远程而言这意味着对图像传输的失真.卡顿.延时提出更高要求.11月14日 19:30,LiveVideoSta ...

  9. 为什么要用shiro框架_社群裂变为什么要用微信群助手?怎么去策划社群的线上裂变?...

    社群的裂变首先要考虑社群的调性,思考:你去做社群的目的是什么?你想要哪些人进社群?这是裂变的基础.同时要知道裂变是通过人来完成的,首先要先活跃一批人,让大家产生共性,产生认同感,朝着一个目标去活动.要 ...

最新文章

  1. 《C程序设计语言》- 字符输入和输出
  2. python如何播放视频_如何用python做一个视频搜索+播放器
  3. Vue系列Vue-cli 4配置别名(六)
  4. 算法之路——插入排序篇3:希尔排序
  5. 2013年测试工作总结
  6. 七参数空间直角坐标系坐标转换
  7. 面部捕捉技术_新功能要来!苹果收购面部捕捉技术公司Faceshift
  8. 牛客网 2018校招真题 吉比特 直线上的点
  9. 关系型数据库第四章笔记---关系数据理论
  10. pygame-KidsCanCode系列jumpy-part2-加速度与摩擦力
  11. ML Visuals-神经网络画图神器
  12. 路由器总是显示未连接到服务器,链接路由器但一直显示未连接服务器
  13. 优雅解决:(linebreak-style) Expected linebreaks to be ‘LF‘ but found ‘CRLF‘. (eslint)
  14. 抖音小店和橱窗的区别,你知道吗?商品的来源不同
  15. 使用ghost软件备份,完成后却无法正常还原
  16. SQL server 错误代码对照表
  17. 六级(2020/12-1) Text2
  18. CSS中first-child和nth-child的讲解
  19. 金融类软件测试大攻略,带你了解最吃香的金融类软测,附面试题
  20. Vim编辑器的使用(2):文档编辑

热门文章

  1. 硬件十万个为什么——运放篇(四)微弱信号放大技巧
  2. 海康iMVS-VM-6100/7100机器视觉软件加密狗
  3. 沉香茶中极品-海南沉香茶
  4. 【win7】NtWaitForKeyedEvent
  5. linux内核提取ret2usr,Linux内核实验作业七
  6. 书论70 何良俊《四友斋书论》
  7. Oracle系列:查询Oracle所有实例名字
  8. 极简表格简历模板-Word简历可编辑下载
  9. 算法题-小彭十分喜欢烤串,但是他的钱只能买固定的烤串的数量M,假设这些烤串的价格相同且恰逢店老板正在举办活动,每个烤串都是用各种不同的食材串成(其中也包括种类相同的)且每个烤串都有三个食材。食材有豆腐
  10. 我的 2020 年总结