软件质量稳定性之殇(一)

舞动的黑天鹅

纳西姆·尼古拉斯·塔勒布(Nassim Nicholas Taleb)写了两部超级畅销书《随机致富的傻瓜》和《黑天鹅》,并且被誉为[黑天鹅之父]。何为黑天鹅?

在发现澳大利亚之前,17世纪之前的欧洲人认为天鹅都是白色的。但随着第一只黑天鹅的出现,这个不可动摇的信念崩溃了。黑天鹅的存在寓意着不可预测的重大稀有事件,它在意料之外并且后果非常严重。

一个黑天鹅事件,具有这三个特点:
(1)稀缺、通常史无前例(rarity),
(2)影响很极端(extreme impact),


(3)虽然它具有意外性,但人的本性促使我们在事后为它的发生编造理由,并且或多或少认为它是可解释和可预测的。

在IT系统、社会事件尤其是金融市场,[黑天鹅事件]屡见不鲜。列举著名的黑天鹅事件如下:
在1933~1934年,经历过大萧条之后诞生的罗斯福新政,宣布私人持有黄金为非法,规定以每盎司20.67美元将私人黄金上收,然后由国会立法将黄金定价为每盎司35美元,美元很快贬值69%。

2001年9月11日上午,美国人刚准备开始一天的工作,恐怖分子劫持了四架飞机撞向美国纽约世贸中心与华盛顿五角大楼。3000多人在这次黑天鹅事件中丧生,美国的经济此后一度处于瘫痪状态,巨大的经济损失无法用数字来统计。

2013年8月16日11点05分上证指数出现大幅拉升大盘一分钟内涨超5%。最高涨幅5.62%,指数最高报2198.85点,盘中逼近2200点。11点44分上交所称系统运行正常。下午2点,光大证券公告称策略投资部门自营业务在使用其独立的套利系统时出现问题。有媒体将此次事件称为“光大证券乌龙指事件”。

对于乌龙值的事故复盘,触发原因是系统缺陷。策略投资部使用的套利策略系统出现了问题。该策略投资部门系统完全独立于公司其他系统,甚至未置于公司风控系统监控下,因此深层次原因是多级风控体系都未发生作用。



向经验学习的局限性

弗朗西斯·培根就曾经发出这样的警告:当心被我们自己思想的丝线丝丝束缚。

无论是“光大证券乌龙指事件,还是泰坦尼克的沉没,如果业态没有类似的案例,其学习的参考是脆弱的,无从学起。即使有业界案例,不同组织,不同公司未必拥有相应的处置经验,那么其实[自己的思想],[自己的经验]也是非常有局限性的。他警醒地指出:我们把自己知道的东西太当回事了,而不知道的事比知道的事更有意义。只有反常地思考一切,才有可能发现更多“不知道的事”。

蝴蝶效应

上个世纪70年代,美国一个名叫洛伦兹的气象学家在解释空气系统理论时说,亚马逊雨林一只蝴蝶翅膀偶尔振动,也许两周后就会引起美国得克萨斯州的一场龙卷风。  蝴蝶效应是说,初始条件十分微小的变化经过不断放大,对其未来状态会造成极其巨大的差别。有些小事可以糊涂,有些小事如经系统放大,则对一个组织、一个国家来说是很重要的,就不能糊涂。

楚之边邑曰卑梁,其处女与吴之边邑处女桑于境上,戏而伤卑梁之处女。卑梁人操其伤子以让吴人,吴人应之不恭,怒,杀而去之。吴人往报之,尽屠其家。卑梁公怒,曰:“吴人焉敢攻吾邑?”举兵反攻之,老弱尽杀之矣。吴王夷昧闻之,怒,使人举兵侵楚之边邑,克夷而后去之。吴、楚以此大隆。(《吕氏春秋·察微》)

吕氏春秋里面说因为2个姑娘游戏起冲突而引发了2个国之间的持续战争,比较形象的放大如不能见微知著,则其后果无法预知。

对IT系统而言,对于非预期的错误比如:

  • 非预期error
  • 非预期的调用抖动
  • 极少数场景下的规则未被正确处理
  • 错误的优惠处理逻辑
  • 未正确设置的营销活动
  • ……

如果不具备快速、智能的感知能力,那么可能影响的用户变多、影响的商户增加、资金损失增加、业务不可用时间变长…..

墨菲定律

“墨菲定律”是一种心理学效应,是由爱德华·墨菲(Edward A. Murphy)提出的。
主要内容:
一、任何事都没有表面看起来那么简单;
二、所有的事都会比你预计的时间长;
三、会出错的事总会出错;

四、如果你担心某种情况发生,那么它就更有可能发生。

墨菲定律的原句是这样的:如果有两种或两种以上的方式去做某件事情,而其中一种选择方式将导致灾难,则必定有人会做出这种选择。

墨菲定律在生活中屡见不鲜。比如关键时刻掉链子(哪些驾考被教练最看好的精英们,往往会多补考2次),你出去买爆米花的时候,银幕上偏偏就出现了精彩镜头。

对于IT系统而言,墨菲定律的例子太多了。

小明在做系统迁移,历时半年。小明是一位经验丰富的架构师,他对系统迁移过程中的自校验、核对、切流策略、灰度能力、回滚机制、容错处理都进行了充分的考虑。但是对于老系统的一种流程处理的缺陷未充分考虑备案或者处理方案。想想,半年很快就过去了,去年才发生1起这样的特殊规则,我在新系统上完全规避了这个问题…但是不凑巧,这个特殊规则不约而至,而老系统还未迁移完…

再说一个例子,前公司有一个非常古老的系统,一直活得好好的。但是由于RPC调用中有重试机制,在网络异常的情况可能下会被触发。而该系统对于重复请求的机制处理不是很好,导致如果重复了,就需要一个处理机制。而该系统的处理机制在95%的情况下是有效的,而网络重发的概率经过经验测算是一亿分之一。看起来论据很充分了,真心是小概率事件。但是随着业务的发展,以及某些未预期的因素(比如某应用超时的几率)增大,则重发的概率也将增大,导致后来这样的问题连续几周都出现了,我们不得不下决心从根本上解决这个问题。

第三个例子,是我们团队的一个亲身经历。某一天有客户投诉,按理说对于该问题的处理预案是有的,并且团队有充分的备份机制,好几个人都可以解决。But我们并未按预期的速度处理好这个问题。原因是团队的一位同学大婚,大家都去迎亲去了,TL同学只能临时把车停到路边,处理问题。

由于人类认识的局限性、骄傲心态、问题域的复杂性、不可把握性等因素,导致软件从业人员在处理软件质量稳定性方面如履薄冰,你今天志得意满,明天就可能伤心欲绝。那么软件质量问题的棘手主要有那些因素导致的呢,且看下一章节。



作者简介

于君泽,蚂蚁金服高级技术专家、支付核算技术部负责人、成都研发中心技术团队创建者之一,先后负责或参与过转账类业务、账单类业务、社区支付、开放平台、支付平台、资金核算平台、类营销类支付工具的建设;之前有数年电信业务研发经验,涉及BSS|OSS|针对性营销等平台。

推荐一下本文作者的公众号,一个认真、有内涵、但更新不太频繁的技术公众号:

TheoryPractice

作者同时也是中生代技术微信公众号:freshmantechnology)发起人。

时间: 2024-11-10 13:33:35

软件质量稳定性之殇(一)的相关文章

大话软件质量稳定性 | 右军

本文信息量略大,建议阅读时间:10分钟 张逸老师曾说,软件系统的稳定性,主要决定于整体的系统架构设计,然而也不可忽略编程的细节,正所谓"千里之堤,溃于蚁穴",一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃.本文将和大家聊一聊软件质量稳定性问题与求解. 1.舞动的黑天鹅 纳西姆·尼古拉斯·塔勒布(Nassim Nicholas Taleb)写了两部超级畅销书<随机致富的傻瓜>和<黑天鹅>,并且被誉为[黑天鹅之父].何为黑天鹅? 在发现澳大利亚之前

【干货合集】你所不知道的蚂蚁技术系列之(一):系统设计、性能优化、运维

8月30-31日20:00-21:30,一场别开生面的技术大会-- "蚂蚁金服&阿里云在线金融技术峰会"将在线举办.本次将聚焦数据库.应用架构.移动开发.机器学习等热门领域,帮助金融业技术开发者深入解析互联网应用的前沿应用与技术实践. 蚂蚁金服&阿里云在线金融技术峰会专题:https://yq.aliyun.com/activity/109 峰会统一报名链接:http://yq.aliyun.com/webinar/join/38 2015双11,蚂蚁金服旗下支付宝共完

如何做卓有成效的程序员 | 右军

缘起 话说,程序员的成效是否是一个重要的话题?谁应该关心?是度量程序员的管理者还是程序员自己? 话说,大家在大谈Google如何,回到座位又继续撸测试用例的时候,那些熟悉的数据准备动作.校验动作,然后是断言动作,有没有让人想吐的感觉! 我10年的时候,干了一件现在看来不靠谱的事情,就是把一个模块的代码测试覆盖率撸到了80%,接手的时候是30%的样子.为了撸,我让其中一位研发同学只补测试,补了一周.有人说了,单纯追求覆盖率是不对的,诚然!我在11年还整理过一个内部文档,如何做单元测试,不能为了测试

软件质量有什么特性?

软件质量有什么特性? <软件工程-产品质量>(GB/T 16260-2006)中规定对软件的每个质量特性与子特性都有定义: 一.功能性:是指当软件在指定条件下使用,软件产品满足明确和隐含要求功能的能力. 适合性:是指软件产品与指定的任务和用户目标提供一组合适的功能的能力. 准确性:是指软件产品具有所需精确度的正确或相符的结果及效果的能力. 互操作性:是指软件产品与一个或多个规定系统进行交互的能力. 保密安全性:是指软件产品保护信息和数据的能力,以使未授权的人员或系统不能阅读或修改这些信息和数据

软件质量特性测试

针对软件质量特性进行测试,可以避免重大漏测,一般人我不告诉他. <软件工程-产品质量>(GB/T 16260-2006)中规定对软件的每个质量特性与子特性都有定义: 一.功能性:是指当软件在指定条件下使用,软件产品满足明确和隐含要求功能的能力. 适合性:是指软件产品与指定的任务和用户目标提供一组合适的功能的能力. 准确性:是指软件产品具有所需精确度的正确或相符的结果及效果的能力. 互操作性:是指软件产品与一个或多个规定系统进行交互的能力. 保密安全性:是指软件产品保护信息和数据的能力,以使未授

让你提前认识软件开发(39):软件研发之殇

第3部分 软件研发工作总结 软件研发之殇           在经典著作<人月神话>中,作者提出了一个观点:绝大部分的软件研发项目都不能按期完成.我工作也有一段时间了,发现这确实是一个不争的事实.我所从事的项目中,能按期按质完成的还真的很少.这是什么原因呢?我工作不够努力吗?非也.为了完成任务,我也是经常加班加点地工作,生怕惹恼了上司而饭碗不保.         软件研发是一个系统的工程,是由很多环节组成的.你一个人把自己那部分工作做好了,还不足以保证整个系统能正常运转.在本文中,我按照软件的

中云融信 SNS携手云计算将解决数据之殇

▲ 本文讲的是中云融信 SNS携手云计算将解决数据之殇,社会是一个由各种"关系"构成的网络,每个人在这个网络中充当着"节点"的角色,通过一个人结识另一个人是网络中最常见的扩张方式,及通过"熟人的熟人"来进行人际拓展.而自1967年六度分割理论的诞生,人们对于"社交"一词概念的理解也不断深化,对于结交的愿望也在不断上升.因此,伴随着互联网的诞生,社交网络开始兴起. 但社交网站之前的发展一直是平如淡水,没有给世人留下深刻印象,探其

吃一堑长一智:虚拟主机之殇

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 无论是个人建站还是中小企业建站,都离不开一个稳定的虚拟主机.虚拟主机能否稳定运行与服务提供商的技术能力是有着必然联系的,技术能力强的服务提供商不仅能保证您的稳定运行,宕机率低,还有能力不断改进虚拟主机的管理方式,开发出新的功能,让您越用越舒心.差劲的服务提供商提供的主机,会让你用的生不如死. 虚拟主机大家应该都知道,下面小编就如何选择虚拟主机

移动通信仍面临带宽之殇

"移动通信的发展正处在转折点上,"中国工程院院士邬贺铨这样定位移动通信的现状,"它面临更多的应用需求,但同时也面临越来越严峻的资源和能源约束等挑战,频谱不足成为永恒的矛盾."站在剧变的节点上,移动通信的需求.机遇.挑战,都值得整个行业去深总结.细思量.带宽之缺:忙时流量占全网一半移动通信与互联网的完美结合带来了大量的流量需求.2010年全世界移动互联网用户数达9.4亿,移动互联网用户的年复合增长率达到69%.与此相伴的是移动网络流量的大幅攀升. 2009年年底,移动