志在指尖
用双手敲打未来

技术事故复盘,程序员应该学到什么?

每一次事故都是在倒逼技术团队生长,没有谁能保证不写Bug不出错,我们要做的,是在事故发作以后,找到问题的本源,及时填坑止损。
清晨,有网友称拼多多呈现严重Bug,100元无门槛券用户能够随意领取并停止消费。大家争相传播,大半夜的都起来领券,有的用户以至领取了上千张。机灵的用户,以最快的速度花掉了优惠券,比方给中国挪动充值。
拼多多清晨回应,“有黑灰产团伙经过一个过时的优惠券破绽盗取数千万元平台优惠券,停止不合理牟利。针对此行为,平台已第一时间修复破绽,并正对涉事订单停止溯源追踪。同时我们已向公安机关报案,并将积极配合相关部门对涉事黑灰产团伙予以打击。”
随后,拼多多发言人表示,实践最终资产损失或低于千万钱。
这个事情发作后,在技术圈炸开了锅,可能是源于传言的“一个bug可能给公司带来200亿的损失”。
作为程序员,我更关怀的是,这个bug到底是怎样来的呢?依据市场传言,我们大致能够得到如下的一些线索。这些线索的真实性还有待考证,或许并不是这次事情的真实状况,但是这也无妨碍我们经过这些线索,来讨论一下这起事故给我们带来的启示。
●好多人羊毛弄了几十万;
●这张券是测试券;
●系统在清晨自动上线测试券;
●运维发现系统爆了,超越了阈值;
●当事人手动下线了测试券;
●手动下线的测试券,早上八点又上线了。
这些端倪看起来能够合理地解释一个严重bug的部署和运维。从这些端倪中,除了优惠券自身的设计问题,我们也能够看到运维的紊乱。测试券怎样可以上线呢?系统爆表了,为什么没有跟进风险防备措施?手动下线了的测试券,怎样又可以重新上线了?为什么上线、下线优惠券操作这么草率?假如一个软件系统是这样的运维程度,出问题是迟早的事情。假如还没出问题,只能说运气太好。
优惠券的设计问题
第一个吸收我们的问题是,“好多人羊毛弄了几十万”。这就意味着,一个人能够领用上千张优惠券。好多人这么操作,阐明无门槛券的领用,技术门槛极低。
普通的优惠券,相似于折扣券,都有运用门槛,比方买100优惠20元。无门槛券,望文生义,就是没有运用门槛的优惠券,100元的优惠券能够买100元的商品,简直同等于现金。由于无门槛券相似于现金,它和普通的优惠券就有严重区别。
先不去管羊毛党,拼多多号称有3亿用户,假如每个用户都合法合理地领用100元无门槛券,这就需求300亿钱。账户注册,简直是零门槛,假如微信10亿用户合法合理地注册、领用无门槛券,给手机充个值,这就需求1000亿钱。
截至昨日,拼多多市值接近230亿美圆,折合钱也就1600亿的样子。100元无门槛券随意领,这看起来像是要拆了公司给大家发奖金的姿势。这肯定不是无门槛券的预期。
随意领的无门槛券,怎样看都不是一个合格的商业设计。最最少,定个数量上限吧,大家抢完就没了,几百万送就送了。送几百个亿,不契合正常的商业逻辑。
普通而言,即使是普通优惠券的领取都有很多附加的条件。比方说,一个账户只能领取一次,或者只要新账户能够领取。而账户的认证,也要有很多的平安措施,比方绑定手机号,绑定设备,运用平安衔接等措施。账户的认证和管理,是一个效劳网站最最根本的功夫。假如一个人能够领用上千张优惠券,那么账户管理的这个根本功,不能算及格。账户的管理程度假如不及格,这个网站的风险比我们想象得还要糟糕。
这么糟糕的账户管理,这么糟糕的商业设计,太出乎人的预料,不契合正常的逻辑。所以,我比拟认同这只是一个测试券,不应该呈现在正常运营的系统中。而假如真是测试券的问题,暴露的就是软件研发和运维的紊乱。
紊乱的研发和运维
一个测试券,竟然自动上线;手动下线后,又自动上线。这样的产品发布流程匪夷所思。一项功用的出炉,要经过设计、完成、评审、测试、审批,才干够走到正式的系统中。这些环节,只需有一个环节发挥了作用,测试券都不可能上线,更不可能自动上线。
上线后,还要有持续的风险监控。假如系统超越了阈值爆掉,运维可以第一时间取得爆表的信息,比方大半夜的,账户异常活泼或者优惠券业务火爆,也可以及时地截断这个风险。
由此可见,对运维人员的合理约束机制,是一个商业公司必需慎重看待的问题。哪能随意一个测试券就能够直接跑到正式的系统中呢?软件的运维,是一个需求特别关注风险管控的环节,特别是软件的质量没有跟上的时分。软件的运维事故,有时分以至会推翻一个行业。
2011年,一个数字证书签发机构,给谷歌签发了多张数字证书。而谷歌历来没有向这个机构申请过数字证书。也就是说,数字证书的持有者并不是谷歌。这个持有者能够冒充谷歌的网站,盗取用户登录信息,包括用户名和密码。这意味着要么这个公司技术水准有问题(黑客攻击),要么这个公司的运维才能有问题(乱发证书)。这个平安问题在2011年8月份被曝光,简直一切的软件巨头立刻宣布封杀这家机构的数字证书。9月份,这家有着很大市场影响力的机构就宣布破产了。
但是,这不是最终结局,数字证书签发行业的厄运才刚刚开端。人们仿佛突然认识到,信息平安不能依赖数字证书机构,一个4000亿美圆市值公司的平安,不能依赖一个40亿美圆市值公司的运营才能。于是,各种各样的新技术在随后几年争相呈现。这些新技术假如普遍运用,将彻底抹掉整个数字证书签发行业。这样的日子,离我们曾经不远了。如今,数字证书签发机构的日子过得都比拟惨淡,卖的卖,散的散。
频频发作平安事故的顺风车,从长期看,也具有相似的性质。相比之下,假如一次事故损失的只要钱,影响可能还算是能够勉强接受的。希望损失的只要钱,但是我对这个希冀并不悲观。
追根究底,运维如此紊乱,普通和软件的质量脱不了干系。一个正派的软件系统,该怎样出品、该怎样部署、该怎样运转、该怎样受权、危机该怎样处置,这些问题都要有设计、有完成、有预案。当事人设计了一个无门槛测试券,就能够在运营系统里跑,而且还能够无限领,这暴露的是背后烂透的软件质量,以及松懈、无序的软件研发流程。我们常说,优秀的软件出自优秀的流程。紊乱的研发流程,很难出品高质量的产品。
我们该怎样做?
无知者无畏,平安问题之所以特殊,就在于它假如不发作,我们或许永远不晓得问题的存在,当然也不晓得问题有多严重。每一次平安危机,都不应该被糜费。假如我们是当事人,有哪些方法能够防止相似的事故呢?
最紧急的事情,就是赶快把账户平安的债给还了。要不然,经过这一次的传播,一大堆的眼睛看好了这块肥肉。黑客攻击的下一波,或许曾经在路上了。
接下来,要尽快思索下面的几件事情。
第一件要做的事情,就是标准研发流程。一流的软件研发流程下出品的产品,再差也不会差到哪儿去。在这个研发流程里,程序员不能单枪匹马地蛮干。需求要讨论,设计要预览,功用要审核,代码要评审,软件要测试,系统要试运营。人人都会犯错误,每一个环节,多几双眼睛盯着,就大幅度减少了犯错误的几率。程序员也能经过研发的流程快速生长,进一步降低错误发作的几率。一个好的制度,能够成就人;一个坏的制度,能够糟蹋人。
第二件要做的事情,代码的平安要注重起来。代码的平安,不都是指黑客入侵。这个无门槛券的领用,就是一个严重的平安事故。反映到代码层面,可能就是账户管理不平安,商业逻辑没有校验,运维受权管理散漫,异常风险没有及时预警。
第三件要做的事情,商业设计要预先推演。即便没有黑客黑产,1000亿钱无门槛优惠券,也不是任何一家商业机构愿意支付的本钱。这是一个幼稚园程度的错误。假如商业逻辑不成立,也就意味着有缺陷的软件需求。树立在破绽百出的需求上的软件,也会是破绽百出的。
第四件要做的事情,改良产品上线的机制。设置产品上线的检查点和流水线,任何一个检查点失效,流水线都要中缀,产品都不能上线。这些检查点包括产品的试运营、功用的审批、配套的监控措施等等。
第五件要做的事情,进步运维的风险防备才能。一个有着3亿用户,230亿美圆市值,运营电子商务的公司,是黑客眼里的肥肉。特别是用户隐私信息和现金流,关系到企业的生死存亡。这种体量的公司,具有优秀的风险防备才能是最根本的请求,而不是如虎添翼的东西。风险的主动检测、及时预警、快速应对,这些措施都要跟得上。
假如无门槛券的商业设计经过推演,软件功用经过讨论,完成代码经过评审,上线经过预演,事故可以及时预警,只需其中的任何一个环节发挥了作用,这次事故都不会这么惨烈!
我了解一个公司不顾一切全速行进,以质量换速度的竞争压力和动力。只是,当我们追求眼下速度的时分,也要思索三尺以外的将来。要不然,这屁股后面累积的债,真会成为怎样甩都甩不掉的大尾巴。

未经允许不得转载:IT技术网站 » 技术事故复盘,程序员应该学到什么?
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载