SRE原理与实践:构建高可靠性互联网应用
上QQ阅读APP看书,第一时间看更新

1.1 为什么要研究互联网软件可靠性工程

可靠性是现代互联网平台的重要竞争力,出现严重故障会对用户体验、企业营收、企业品牌造成巨大伤害。

1.1.1 大型互联网企业的典型案例回顾

最近几年,大型互联网企业发生了多起影响很大的可靠性故障,给企业或用户造成了巨大的损失和影响。

2018年6月27日,国内某知名云计算服务提供商出现严重故障,运维人员的一个操作失误导致1000多位客户访问其官网控制台和使用部分产品功能时出现问题,上千家公司业务瘫痪,损失过亿元。

2018年7月18日,在年度最大购物促销活动Prime Day中,Amazon网站和应用出现重大技术故障,持续4个小时,损失9900万美元。

2019年12月5日,因Google提供的飞行数据软件发生技术故障,美国航空公司、达美航空公司和联合航空公司三大航空公司的网站关闭90分钟。

2020年1月7日,国内某大型电商购物券异常,被薅7000万元。

2020年1月20日,国内某大型电商100元无门槛券被刷200亿元。

2020年2月24日,某知名公司数据被内部人员删除,恢复工作耗时7天,业务也完全停止了7天。

2020年3月5日,某证券交易所遇到技术问题,交易系统的故障持续至少一个小时。

2021年2月,某出行公司系统出现技术故障,导致司乘需求无法匹配,乘客打不到车,司机接不到单。

2021年10月4日,Meta(原Facebook)出现史上最严重宕机,旗下社交媒体Facebook、Instagram和即时通信软件WhatsApp出现大规模宕机,长达近7小时,刷新了Meta自2008年以来的宕机时长纪录。这次宕机导致公司市值一夜蒸发3000亿美元,影响了超30亿用户。宕机期间,用户涌向了竞争对手Twitter、Discord、Signal和Telegram。

2021年10月9日凌晨,国内知名互联网券商App出现故障,使得用户无法登录进行交易。事故原因为“运营商机房电力闪断导致多机房网络故障”,2小时后核心服务才陆续恢复。

2021年11月19日,特斯拉App发生全球规模的服务中断,故障原因为配置错误导致网络流量过载,最终导致App控制功能失效,用户无法打开车门或启动车辆,整个故障时间长达5小时。飞行数据、自动驾驶、工业生产的在线服务故障可能损害用户的生命安全,影响用户对相关企业的信任度。

2021年12月9日午间,某外卖骑手App因技术故障导致骑手无法接单,部分地区用户无法正常登录,骑手无法找到商家和下单者地址。

2021年12月20日,某市“一码通”因访问量过大导致系统崩溃。一码通每秒访问量达到以往峰值的10倍以上。

2021年12月29日上午,国内某证券App在开盘10分钟后出现交易故障,在上午10点13分左右才排除故障。

程序Bug、线上变更、自然灾害、访问量突增等都可能导致网站不可用。上面的例子列举的都是大型厂商,如Google、Amazon这样的顶尖技术公司,它们已经在可靠性方面做了巨大投入,但仍然故障频发,更遑论一般的企业,各种异常和故障层出不穷。

1.1.2 研究互联网服务可靠性的迫切性和重要性

互联网服务可靠性关系到企业发展,甚至会关系到民生服务。如果一家平台隔三岔五出现可靠性问题,是不可能长期留住用户的。一个有很高可靠性的平台会成为一个企业在行业内的核心竞争力。比如,视频网站和直播平台不卡顿、不掉线、延迟低是提供优质用户体验、留存用户的关键因素,其中不卡顿、不掉线都在可靠性的要求范围内。

又如,公有云平台已经成为整个社会运转的基础设施,一旦出现严重的可靠性问题,就会影响运行其上的平台服务,进而影响民众的日常生活。例如,一家外卖网站在用户下单后出现故障,可能会让数以万计的人的就餐受到影响;一家出行平台出现故障,可能会让数以万计的人的出行受到影响。当然,这些用户可能会很快转移到竞争对手那里。

到目前为止,大多数互联网企业的可靠性工程还依赖各个方向的工程师自己摸索和实践,或者学习别人分享的较为零散的经验。阿里、腾讯、百度、Amazon、Google、Meta等世界级的公司,在保障可靠性上投入了巨大的人力、物力、资金,但仍然缺少统一的认知和通用的工程方法。研究互联网软件系统的可靠性问题并提升平台服务的可靠性,是亟待进行的工作。

1.1.3 研究软件可靠性工程是未来更复杂的软件产品发展的需要

计算机系统的可靠性包括计算机硬件的可靠性和上层应用软件的可靠性。网络的可靠性也会影响互联网平台软件的可靠性。随着5G和6G时代的到来,可靠性相关的问题也日趋严峻。5G和6G的特点是高带宽、低时延、大规模。高带宽会促使整个网络应用变得越来越复杂,低时延则可以提高应用的实时性,促进依赖实时性的应用和场景蓬勃发展,例如自动驾驶、智能交通、远程医疗检查和手术、实时互动的元宇宙、智能制造等。互联网正在向万物互联的方向发展,未来会出现越来越多通过网络互联的分布式软件系统,接入的终端规模也将更大。

工业互联网软件更复杂、规模更高,其可靠性直接影响工业安全生产和效率,对软件可靠性有更高的要求。其在新形式、新场景下的可靠性保障比PC互联网、移动互联网更加困难,软件可靠性直接关系人的生命财产安全,不允许通过摸索、踩坑、再完善的方式来达到可靠性目标。可靠性保障工作必须有更加完善的体系,在一开始就需要达到很高的水平。

为了厘清一些基本认识,我们接下来介绍可靠性、可靠性工程、软件可靠性工程的概念、产生和发展过程。