2月28号,号称「亚马逊AWS最稳定」的云存储服务S3出现“超高错误率”的宕机事件。
接着,半个互联网都跟着瘫痪了。
一个字母造成的血案
AWS在昨天给出了确切的解释:一名程序员在调试系统的时候,运行了一条原本打算删除少量服务器的脚本,结果输错了一个字母,导致大量服务器被删。为了修复这个错误,亚马逊不得不重启整个系统(在此之前已经几年都没有重启过了),最终导致了震惊全球的Amazon S3宕机4个小时事件。
我想这名程序猿当时的表情应该是这样的
曾经有人计算过,AWS每宕机一分钟,对亚马逊造成的损失是$66,240美元…而这还不包括那些依靠AWS来运行自家服务的公司们的损失。所以这次接近4小时的宕机造成多大的损失,只能请大家自行脑补了。
程序员的世界就是这样的不近人情,一丁点儿错误就足以酿成大错。在这次“一个字母造成的血案”之前,刚刚发生了Gitlab程序猿用错一条命令误删了整个数据库的悲剧。再久一点以前,欧洲宇航局的的火星探测器因为传感器失灵了仅仅一秒钟,就造成探测器在火星表面坠毁,历时数年的探测计划功亏一篑。
所以,当你身边的程序员为了一点点小事较真的时候,你一定要理解:魔鬼都藏在细节里啊!
当S3宕机时,你才明白AWS多么强大
几年前,Google.com曾有一次宕机了一个小时。在那一个小时的时间里,整个互联网的流量减少了40%。当时有人感慨:Google一家就是半个互联网。如今,“半壁江山”的江湖地位似乎要归属于亚马逊了。
AWS是云计算领域全球的领导者,而S3又是AWS历史最久的服务,可以说是AWS的基石。很多AWS提供的其他服务都依赖于S3云存储,比如EC2,Lambda 和 EBS 等,所以这次宕机影响巨大。据最近的统计显示,全球共有148213个网站和121761个独立域名在使用AWS S3服务。
就拿这次事故来说,很多人一觉起来发现手机里的歌听不了,电影看不了,股票不能交易,App也没法下载,就连家里的智能电器都纷纷罢工(主页君家里的电子门锁都失灵了!)云计算听上去离生活很远,其实离我们很近。
这次S3宕机影响到无数家公司和服务
在这里罗列了几个著名的:
Apple App Store & icloud
Airbnb
Expedia
Netflix
Quora
Amazon Echo
Amazon.com
Nasdaq
就连AWS自己用来公布服务状态的 AWS Dashboard 都受到了影响,在一段时间内只能通过Twitter账户来发布更新状态。这次S3宕机事件的影响范围之广,可见一斑。
“打错一个字母瘫痪半个互联网”是怎样的感受?
在今天亚马逊披露了这起事故背后的原因后,很多人心里都会有一个疑问:
这个倒霉的程序员会被开除吗?
关于这一点,虽然主页君肯定没法做出准确的判断,但还是愿意给出我们的猜测:不会。
首先,这名程序猿打错命令有没有责任?肯定有。但是,在处理高度可靠的云服务时,每一次操作都应该按照严格的程序,每一个命令都要经过足够的审核。除非这名程序员在操作过程中因为偷懒省略了一些必要的步骤,否则,这次事故更多是系统的责任,因为系统没有足够的机制来防止错误的发生。人,都是会犯错的,只有机器不会。
其次,oncall(值班)的程序员一边操作着影响巨大的的系统,一边还需要争分夺秒的解决问题,肩上的压力之大难以想象。虽然这次事故确实是由于一个打错的字母造成的,但如果事故发生后,作为云服务领航者的亚马逊不是勇敢的承担这笔学费,而是把锅甩给某一个程序员身上,那就太让人寒心了。
我甚至敢断言:如果亚马逊真的做出这样的决定,那么他们在日后的招聘过程中会遇到很大的困难——每个程序员都会三思:我会不会成为下一个背锅的人?
当然,如果这哥们(也可能是姐们)
真的因此被解雇了,想想看——我打错了一个字母,就瘫痪了半个互联网
这牛逼也够吹一辈子了!
最后,主页君想说:程序员这行真的不容易,做云服务的尤其如此,大家且行且珍惜。对受到这次事故影响而心惊胆战了好几几天的程序员们说一句:加油,你们挺住!