程序员的一次失误 在45分钟里搞垮了一家上市公司

788次阅读  |  发布于5年以前

1--BDqsaWVHxONCnnJI3PetQ.jpg

尽管 Doug Seven 并不是事件的参与者,但他在后来的会议中不断提及 DevOps、代码配置和持续交付的主题,希望让开发人员意识到部署的重要性。

究竟是怎么回事?Doug Seven 在博客中分享了这个故事。

故事背景

这个故事的主角是一家名为 Knight Capital Group 的美国全球金融服务公司,它从事做市、电子执行、机构销售和交易。

2012 年,Knight 是美国最大的股票交易商,在纽约证交所和纳斯达克的市场份额约为 17%。Knight 电子交易集团(ETG)平均每日交易量超过 33 亿笔,每日交易额超过 210 亿美元。

种种数据表明,当时公司的运营和财务状况非常优秀。

2012 年 7 月 31 日,Knight 拥有约 3.65 亿美元的资产。

当时,纽约证交所正计划于 2012 年 8 月 1 日推出一项新的零售流动性计划。

为了准备这次活动,Knight 更新了他们的路由器 SMARS。这个路由器负责将订单发送到市场上执行。SMARS 的核心功能之一是接收 Knight 交易平台其他组件的订单(父订单),然后发送一个或多个子订单执行。换言之,SMARS 将从交易平台收到大量订单,并将它们分成多个较小的订单,以便找到股票数量相匹配的买家或者卖家。父订单越大,生成的子订单越多。

在 SMARS 中,有一段老旧的代码,名为“Power Peg”,它已经 8 年没被用到过了,而此次更新的目的正是要换掉这段代码。更新的代码重新调整了用于激活 Power Peg 功能的旧标志的功能。

代码经过了彻底的测试,并且还进行了一系列的验证。所有的一切都看起来很完美,找不到出错的理由。

死灰复燃的旧代码

2012 年 7 月 27 日至 2012 年 7 月 31 日期间,Knight 的开发人员每天手动将新的软件部署到公司的 8 台服务器上。这就是 SEC 文件中关于手动部署过程的内容。如果 SEC 文件中有关于部署的内容,那么就可能出现了严重的错误。

然而,在新代码的部署过程中,Knight 的一名技术人员忘记将新代码复制到所有 8 台 SMARS 计算机服务器中——他漏掉了其中一台服务器。

没有第二个技术人员来审查这个部署。

Knight 的所有人都没有意识到,Power Peg 代码并没有从第 8 个服务器上删除,也没有添加新的 RLP 代码。Knight 没有书面流程要求这样的审查。

2012 年 8 月 1 日,在美国东部时间上午 9:30,市场开盘。Knight 开始代表客户处理订单。

具有正确 SMARS 部署的 7 台服务器开始正确处理这些订单。然而,发送到第 8 台服务器的命令触发了可支持的重新利用标志,并从死地中恢复了旧的 Power Peg 代码。

杀手代码如僵尸般的攻击

Power Peg 代码用于在执行子订单时,根据父订单计算购买或者出售的股份。Power Peg 将指示系统在完成父订单后停止传送子订单。

也就是说,Power Peg 会跟踪子订单,并在父订单完成后停止它们。

2005 年,Knight 将这种累计跟踪功能移到了代码执行的早期阶段,从而从 Power Peg 中删除了计数跟踪。

当激活第 8 台服务器上的 Power Peg 标志时,Power Peg 功能开始路由子订单以供执行。但由于没有根据父订单跟踪共享量,造成了一个永无止境的循环。

地狱 45 分钟

想象一下,如果你有一个系统,它能够向市场发送自动化的、高速的订单,且没有任何跟踪程序来检查是否执行了足够的订单,会发生什么?没有比这更糟糕的事了。

上午 9:30 开市时,人们很快就知道出了问题。到上午 9 点 31 分,华尔街的许多人都清楚发生了一些严重的事情。市场上充斥着非正常交易量的股票订单。

到上午 9 点 32 分,华尔街的人们都在想,为什么订单还没有停下来,为什么没有人按下任何系统的关闭开关?结果他们发现,并没有关闭开关。在交易的前 45 分钟里,Knight 的交易量占了总交易量的 50% 以上,这使得某些股票的市值上涨了 10% 以上。因此,其他股票因错误的交易而贬值。

更糟糕的是,Knight 的系统在当天早些时候开始自动发送电子邮件。早在上午 8:01,SMAR 已经处理了符合上市前交易条件的订单。邮件消息引用 SMARS,并将错误识别为“Power Peg disabled”。

在上午 8:01 到 9:30 之间,Knight 工作人员也收到了 97 封邮件。可惜的是,这些电子邮件不是作为系统警报设计的,因此没有人立即查看它们。

在 Knight 经历的 45 分钟内,他们尝试了几种反制措施,试图阻止错误的交易。由于没有终止开关,所以他们只能在实时交易环境中尝试诊断问题。

每分钟,系统上约有 800 万股股票被交易。他们无法确定是什么导致了错误的命令,所以他们从正确部署的服务器上卸载了新代码。

换句话说,他们删除了工作代码,留下了损坏的代码。

这更加放大了问题。最开始,仅在部署不正确的服务器上,额外的父命令激活了 Power Peg 代码。现在,问题蔓延到了所有服务器上。最后,他们终于停止了系统,但此时已经进行了 45 分钟的交易。

在开盘的前 45 分钟,市场收到并处理了 212 份父订单。因此,SMARS 向市场发送了数以百万计的子订单,产生了 400 万笔交易,而其中 154 只股票的交易量超过了 3.97 亿股。这意味着,Knight 资本集团在 45 分钟内造成了 4.6 亿美元的亏损。

然而,Knight 只有 3.65 亿美元的资产。

45 分钟后,美国股市最大的交易商、纽约证交所和纳斯达克的主要做市商 Knight 破产,4 个月后被 Getco LLC 收购。

软件发布必须可重复、可靠

所有开发和运营团队都应该从这次事件中吸取教训。仅仅构建优秀的软件并对其进行测试是不够的,你还必须确保它被正确地交付给市场,这样你的客户才能获得你所交付的价值。

部署 SMARS 的工程师并不是此事唯一的责任人,Knight 设置的流程和他们所面临的风险并不匹配。此外,他们的流程天生就容易出错。任何时候,如果你的部署过程依赖于人主动阅读和遵循说明,那么都将面临风险。人是会犯错的。错误可能出现在指令中,也可能出现在指令的解释中,或出现在指令的执行中。

部署需要自动化,并且可重复,尽可能避免潜在的人为错误。如果 Knight 实现了自动化部署系统,将配置、部署和测试全部自动化,那么这次错误本可以避免。

即使没有实施完整的连续交付过程,你仍然需要遵守的几个连续交付原则:

via:https://dougseven.com/2014/04/17/knightmare-a-devops-cautionary-tale/

推荐文章

刘强东夫妇:“移民美国”传言被驳斥

京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。

博主曝三大运营商,将集体采购百万台华为Mate60系列

日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。

ASML CEO警告:出口管制不是可行做法,不要“逼迫中国大陆创新”

据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。

抖音中长视频App青桃更名抖音精选,字节再发力对抗B站

今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。

威马CDO:中国每百户家庭仅17户有车

日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。

研究发现维生素 C 等抗氧化剂会刺激癌症生长和转移

近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。

苹果据称正引入3D打印技术,用以生产智能手表的钢质底盘

据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。

千万级抖音网红秀才账号被封禁

9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...

亚马逊股东起诉公司和贝索斯,称其在购买卫星发射服务时忽视了 SpaceX

9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。

苹果上线AppsbyApple网站,以推广自家应用程序

据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。

特斯拉美国降价引发投资者不满:“这是短期麻醉剂”

特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。

光刻机巨头阿斯麦:拿到许可,继续对华出口

据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。

马斯克与库克首次隔空合作:为苹果提供卫星服务

近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。

𝕏(推特)调整隐私政策,可拿用户发布的信息训练 AI 模型

据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。

荣耀CEO谈华为手机回归:替老同事们高兴,对行业也是好事

9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。

AI操控无人机能力超越人类冠军

《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。

AI生成的蘑菇科普书存在可致命错误

近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。

社交媒体平台𝕏计划收集用户生物识别数据与工作教育经历

社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”

国产扫地机器人热销欧洲,国产割草机器人抢占欧洲草坪

2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。

罗永浩吐槽iPhone15和14不会有区别,除了序列号变了

罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8