关注前沿技术,分享热点话题,QCon全球软件开发大会三站同启,重磅回归!立即查看 了解详情

因为忽视技术债,我们差点造成几十亿美元的损失

2020 年 9 月 26 日

因为忽视技术债,我们差点造成几十亿美元的损失

众所周知,技术债务非常糟糕。然而,仍然有许多人为了某项新功能的未来价值而宁愿背上技术债。在它们眼中,新功能的潜在价值比技术债更重要。有个团队曾经尝试过此举,最终后悔不已。(本文中使用的名字均为化名)

对 Tidal Wave 团队而言,关键时刻即将到来。他们新的支付路由系统经受住了 Litmus 测试的考验,测试中涉及的少量客户都是精挑细选的。在这个工作周期(Sprint)中,它们会将产品部署到银行完整的国际内部支付流程中。这意味着数以百万计的付款操作,和数以十亿美元的资金。

这可是大事!

一件小事

然而,一件发生的小事占据了开发团队成员克莱尔和产品负责人杰西的心头。

克莱尔担心:“普尼特认为他发现的问题缘由来自生产环境,因为我们之前走了捷径而没有采用另一个耗时长却更严谨的解决方案。因此,它无法正常运行。如果开展修复工作,那要花上半个周期(Sprint)。“

杰西:

“这不行,克莱尔,我不能将全部时间耗在这上面。初步分析显示,我们完全可以绕过问题。我提议,大家先了解下解决办法,后期再去修复。如今,我们还有更重要的事情要做,不能分神。”

克莱尔:

“杰西,这只是初步分析,我们还不能 100% 保证我们已经找到问题根源。”

杰西:

“普尼特做的分析,他对代码了如指掌。如果他确定,我百分之百相信他。”

克莱尔:

“我同意。先绕开这部分,但是要记得将这一点添加到‘已知问题’中。”

杰西:

“我会将这条写道产品待办事项里,毕竟它迟早是要修复的。”

重要日子

今天很重要,Payment Router 正式发布,这可是公司年度最重要的产品发布会,众人皆到,举杯相庆。尽管Tidal Wave团队成员只喝不含酒精的饮料,但依然配有香槟。

公司 CTO 玛利亚发表演讲,称赞团队的工作,然后按下代表项目开始运行的红色按钮。马上,监控屏幕显示流量急剧上升,直到达到 litmus test 的 50 倍。随后,上升势头保持稳定。欢呼声响起,他们成功了!

第一天,晚上 11:30

普尼特刚到公寓,准备美美地睡一觉。今天很好,一切顺利,真完美。

突然,电话声响起,这是前台打来的。这在意料之中,这个 7X24 小时的功能才刚上线,因此人们还需要熟悉其工作原理和反馈信息。这就是为什么本周团队中有两人随时待命。

克莱尔:

“嗨,普尼特,我在监控屏幕上看到一条直线。它不该出现这样的情况。看起来,程序好像停止运行了。”

普尼特:

“是的,这很奇怪。不,它不应该是这样。我们去查查,随时向你汇报最新情况。”

快速分析后,他意识到他必须要给克莱尔打电话来解决这个问题。

普尼特:

“嗨,克莱尔。你还记得几周前那个生产中的小问题吗?实际上,问题比我预想的要严重,需要修改代码才能修复这个问题。我们必须立即行动,才能在一小时内解决战斗。”

一小时后,克莱尔和普尼特成功部署修复程序。但是,问题依然还在,还是一条直线,修复程序没有起作用。

普尼特喃喃自语:

“糟糕,情况真糟糕。问题比我预想的要更复杂,我们需要深入分析问题所在。”

克莱尔叹气:

看样子,今夜注定无眠,普尼特。

凌晨 2 点,电话响了,是 CTO 玛利亚打来的。

玛利亚:

“问题修复情况如何?我们的客户都快疯了。你们知道,这种故障会带来多大的损失吗?”

普尼特:

”我完全明白。我们的客户无法收钱,还是数百万美元的钱。相信我,我们正在全力解决问题。对我们来说,现在没有什么比解决这个问题更重要了。“

玛利亚:

“需要什么,尽管说,我会为你们提供任何所需。”

普尼特:

“谢谢你,玛利亚。如果你能帮我们挡住那些妨碍我们工作的电话和短信,那就更好了。”

玛利亚:

“没问题,我会让他们来找我。祝你们好运!”

克莱尔和普尼特越是深层地排查代码,他们对问题根源就越迷茫,况且,他们精疲力尽。

他们不得不将这个问题转交给办公室中团队的其他成员。现在是早上九点,专注做事时,时间过得飞快。30 分钟后,工作交接完成,二人倒头就睡着了。

第二天,下午 3 点

普尼特回到办公室,了解了最新情况,并为接下来的夜晚做好准备。

杰西对他说:“早上 11 点,我们设法重新上线 Payment Router(支付路由),这只是暂时修复。目前,没什么大问题。我们现在应该聚焦于永久性的解决方案上。”

当普尼特听完这个临时方案的细节后,他不知道如何是好。一方面,他很高兴系统再次上线运行,但另一方面,这个方案看起来不靠谱。

普尼特:

“你检查过,支付的处理速度是否够快?我担心,高优先级客户的付款延迟可能会超过 SLA(服务水平协议)。”

十五分钟后,团队唯一能确认的是普尼特是对的,支付处理延迟非常高。一切都挤在一起,这种状况不可持续。

他们决定在临时补丁上再加一个临时解决方案,然后采取轮班制工作。早上 8 点到晚上 9 点,约翰、卡洛斯和爱丽丝;晚上 8 点到第二天早上 9 点,则是普尼特、卡迪克和克莱尔。这样他们应该能撑过一周,这足以解决问题。

发布会后的第一个月,晚上 10 点

从车站到办公室,需要步行五分钟。对普尼特来说,这简直是条通往地狱的路。他开始讨厌公司大楼的红砖,公司的 logo 也让他有点反胃。

整整一个月,他每周工作 90 个小时,一直忙个不停。发布前的几个月,他也不清闲。他们付出了代价,但他知道事情远远没有结束,Payment Router 仍然不稳定。

他对这一团糟感到内疚,如果当时进行更深入的分析或者请别人来帮忙,情况可能不是这样。

克莱尔看到普尼特朝办公室走来。他又迟到了。而卡迪克没来上班,因为他的妻子正在做手术。她对整个团队都很失望。值白班的人甚至都没象征性地等她和普尼特一起出现。

她感觉自己像独自一人,用一人之力堵住堤坝来阻止灾难性的洪水。直到卡迪克复工,她要一人扛起整个夜班的责任。她想指责普尼特错误的分析,但她也知道自己当初可以阻止团队做出忽视技术债的决策。

发布会后第三个月

Payment Router(支付路由)仍然可以运行,同时,情况有了很大地改善。在发布会后的第一周,团队每 24 小时约有 20 起一级事件,有 6 起发生在半夜。现在,已经减少到每天一起一级事件。

团队设法挽救了银行声誉,但这是在“走钢丝”。如果正式发布日,再次出现大规模故障,那么一切玩完。忽视技术在让银行背负了百万美元的损失,全力以赴的修复才让银行免于数亿美元的损失。

你可能对 Tidal Wave 团队的后续感兴趣。正式发布 2 个月后,在情况有所改善时,普尼特称自己过度疲劳。如果继续在支付路由团队工作,克莱尔用辞职威胁离开公司。所以,她调任另一个团队。

现在没人想接手克莱尔和普尼特的工作,支付路由团队“声名狼藉”,而不知内情的两个外部人填上了空缺位置。团队中剩下的 4 人竭尽所能持续改善系统的稳定性。如果说他们还留在公司,那么唯一的原因就是责任感。

教训

技术债简直是无形杀手。如果仅优先考虑新特性而忽视技术债,那么这是在冒巨大风险。每次你做出这样的决策时,你都会下意识地选择忽略质量问题。

从 Tidal Wave 团队的经验中学习教训,当面对技术债时不要犯错误。

原文链接:
https://medium.com/serious-scrum/how-ignoring-technical-debt-nearly-destroyed-a-banks-reputation-62efdc3fd968

2020 年 9 月 26 日 09:00 1514
用户头像

发布了 25 篇内容, 共 56615 次阅读, 收获喜欢 43 次。

关注

评论 1 条评论

发布
用户头像
奇迹般看完,但是到底在讲什么呢
2020 年 09 月 28 日 15:29
回复
没有更多评论了
发现更多内容

第一周学习总结

小海豚

学习总结

第一周作业

东哥

极客大学架构师训练营

【总结】第一周架构师如何做架构

chengjing

作业1

annie

极客大学架构师训练营

如何成为一个架构师?

逍遥乐天

极客大学架构师训练营

免费P7架构师直播课!技术人员如何提升职场技能?

奈学教育

架构师

架构师培训-01食堂就餐卡系统设计文档

刘敏

食堂就餐卡系统设计

魔曦

极客大学架构师训练营

食堂就餐卡系统设计

架构设计 极客大学架构师训练营

免费P7架构师直播课!技术人员如何提升职场技能?

古月木易

架构师

架构师训练营第01周——总结

李伟

极客大学架构师训练营

被迫重构代码,这次我干掉了 if-else

程序员内点事

架构师训练营第一周作业 - 食堂就餐卡系统设计

阿德

架构师训练营-第一课作业-20200610-食堂就餐卡系统

👑👑merlan

架构 作业

架构师是什么?

芥末

极客大学架构师训练营

第一周学习总结

AspYc

你还在为 TCP 重传、滑动窗口、流量控制、拥塞控制发愁吗?看完图解就不愁了

小林coding

TCP 计算机网络 网络协议

While语句

拾贝

架构师训练营-作业-1】食堂就餐卡系统设计

superman

极客大学架构师训练营 UML学习

一味的坚持,或许只是徒劳

这小胖猫

逻辑思维 职业成长 工作体会

架构师训练营第一周学习总结

whiter

极客大学架构师训练营

01-kubernetes安装部署(手动)

绿星雪碧

Kubernetes etcd flannel

4天如何完爆Kafka源码核心流程!

古月木易

kafka

食堂就餐卡系统架构设计文档

小叶

架构设计

第一周作业

Geek_2b3614

食堂就餐卡系统设计(作业版)

Jerry Tse

极客大学架构师训练营 作业

4天如何完爆Kafka源码核心流程!

奈学教育

kafka

写作的几点建议:面对卡文,写别人的题目,栩栩如生的写作

七镜花园-董一凡

写作

UML 体验(就餐卡系统设计)

陈皮

第一周命题作业

AspYc

食堂就餐卡系统设计

小海豚

食堂就餐卡系统设计 UML学习

微软秋季技术课堂

微软秋季技术课堂

因为忽视技术债,我们差点造成几十亿美元的损失-InfoQ