什么是系统稳定性建设?
系统稳定性建设是对系统进行评估考量、不断优化预防的一个过程。
目的是实现系统按照人为的意念及需求,稳定地对外提供服务。
为什么要做系统稳定性建设?
因为对需求分析编码测试到上线,服务百分百能按照人的意念及需求稳定运行是不可能的。
它有可能会因内外界因素如预案调研不充分、代码逻辑出错、机器问题cpu过载、内存溢出、
磁盘存储超过最大容量、网络带宽阻塞等等因素而发生无法对外提供服务。
案例如:
20年,中秋十一前一天下午,用户流量冲击和交通阻塞等因素,导致滴滴和嘀嗒服务故障。
18年亚马逊会员日用户无法加入购物车,后续统计当天损失达9900万美金
15年某天下午支付宝部分地区用户无法支付,原因是被施工队挖断电缆。
12年某天12306机房空调系统故障导致无法提供票务售退改签服务。
谁负责去做系统稳定性建设?
需要PO、开发、运维、测试等一起来做系统稳定性建设。因为PO对用户需求理解程度相对而
言更了解、开发对代码技术细节相较而言更理解、运维对线上情况如各个时间段服务运行状
况及机器cpu、内存等硬件设施的监控更了解、测试对系统的操作流程比其他人更了解。
什么时候适合做系统稳定性建设? 在那块需要做系统稳定性建设?针对整个项目管理流程每个环节分析
从需求的分析,到项目上线后的维护,每一环节每一时刻都应考虑系统的稳定性。
系统稳定性建设需要怎么做?考虑什么问题?针对大型互联网项目
1, 针对故障事前、事中、事后时候展开
尽管咋们设计的系统在线上运行如果是比较优秀的, 保证一年5个9的时间稳定运行,
它还是有5分多钟的时间是故障, 服务是不可用的. 所以在针对发生故障时, 要有一
系列的准备和措施, 特别是互联网to C项目, 项目不稳定损失的不是一丁半点, 如亚
马逊的购物车无法提供服务一个下午, 事后统计就损失9000多万美金.咋们分故障发
生前做好场景方案设计与预案, 事中故障处理流程, 事后及时复盘和总结优化展开.
故障前, 咋们针对不同的场景, 结合业务需求, 去做系统设计和预案. 举例:
就好像产品相对下游, 流量大,上架的产品相关数据放到缓存中, 价格数据敏感, 需
要有审核记录, 每一次变更价格都要记录变更人, 营销策略原因导致价格需频繁变更,
就好像上午的价格可能跟下午的价格不一样, 需要设计地板价, 保证无论如何改价
都合理范围. 下单时,库存可能同时操作多个产品的库存, 为了保证redis事务一致性,
用到lua脚本来保证要成功全部成功, 要失败全部失败. 此外, 还需开发流程规范,
包括需求评审, 技术评审, 代码版本管理, 代码review.人事方面建立救火群,紧急联
系方式,确定相关模块的负责人,总协调人,指挥人。还需要做好对抗演练,恶意攻
击演习等等。每一次MTP上线都做好部署方案,设计好折衷方案,确保出现问题能及
时从容应对。一般部署后的半个小时内,应留意一段时间生产日志告警,系统监控、
服务监控。
故障中,按经验一般部署后的半个小时,大功能在部署后的24小时内,流量突增时,
可能会出现故障,此时应通知相关人,然后梳理影响范围,及时告知排查进度,按协调
人和负责人的指挥有序进行,尽快止损恢复正常,找到RC。
故障后,梳理故障排查时间轴,向上邮件汇报,向下每隔一段时间开会复盘和分享,
必要需要落地一些改进措施。
2, 针对电商场景展开
ERP、产品(价格、库存、搜索、营销)、CMS(页面静态化、组件化、缓存化)、
账号、购物车、订单、支付、报表、邮件、MIS
3, 从迭代流程,针对需求分析到上线运维每一个环节展开
TODO(需求分析,需求方案评审、技术方案评审、代码开发、code review、部署方案)
4, 从测试流程展开
TODO(功能测试、集成测试、自动化测试等)
稳定性技术策略包含:设计层面(TODO),测试层面、运维层面(监控,回滚,重试)。