写点什么

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

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:002002
用户头像

发布了 29 篇内容, 共 66597 次阅读, 收获喜欢 48 次。

关注

评论 1 条评论

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

【摘】Git-从零单排 03期

卡尔

git 效率工具 工具链

架构师课程第一周作业

杉松壁

ARTS 第 1 周

乌拉里

ARTS 打卡计划

中小型城市商业银行数字化转型实践(四)业务中台建设思路和路径

泡菜小仙

行业资讯 银行数字化转型

现在的我们想要获得成功,除了付出努力之外,还要具备见识。

叶小鍵

食堂就餐卡系统设计

上山砍柴

极客大学架构师训练营

在 Windows WSL 2 中使用 Docker Desktop

FeiLong

Docker WSL2

架构方法:运用合适的工具表达设计

NORTH

极客大学架构师训练营

新媒体小编一年工作心得

彭宏豪95

职场 感悟 工作

产品周刊 | 第 18 期(20200607)

Herbert

产品 产品经理 产品设计 产品推荐

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

itrickzhang

架构设计 架构文档 架构样例 架构分析 架构总结

线上故障处理实践

心平气和

故障分析 故障定位

UML统一建模语言

哼哼

练习--食堂就餐卡系统技术方案设计

jason

「翻译」测试用例最佳实践

HackMSF

翻译 单元测试

游戏夜读 | 核心能力是什么?

game1night

test

PQY

话说 Java vs C#

阿喜伯

MySQL 笔记(一)基础架构

奈何花开

Java MySQL

初识 Docker 与安装 | Docker 系列

AlwaysBeta

Docker

对文化的态度,早在日常中

zhoo299

历史 随笔 文化

我是这样给同事分析幂等性问题的

flyer0126

幂等性 服务设计

Backend Roadmap

陈皮

Backend Developer

食堂就餐卡系统设计

B端产品经理养成记(3):访谈

涛哥

产品经理

Spark Launcher Java API提交Spark算法

杨仪军

spark spark launcher

人生元编程

欧雷

人生 程序人生 个人感悟

述职报告的一些建议

黄大路

职场

近邻算法介绍

黄大路

数据挖掘 数据分析

体验碎片-06/06

黄大路

产品经理

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

guoguo 👻

极客大学架构师训练营

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

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