阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

唯一维护 API 的普通工程师轻松搞垮 Twitter,马斯克:我们重写代码吧

  • 2023-03-07
    北京
  • 本文字数:2663 字

    阅读完需:约 9 分钟

唯一维护 API 的普通工程师轻松搞垮 Twitter,马斯克:我们重写代码吧

当地时间周一上午,Twitter 网站又出了新故障。

 

有 Twitter 用户在登录之后发现了一大堆相互关联的问题。首先是单击链接无法跳转,反而弹出了一条神秘的错误消息,称“您当前的 API 计划不包括对此端点的访问权限”。

 

“我猜这意味着 Twitter 非常需要现金,它开始收取 Twitter API 访问权限费用,但 Twitter 自己无法支付这笔费用。”普林斯顿计算机科学教授Arvind Narayanan发布推文略带调侃地评论道。

 


 Narayanan 还写道:“雪上加霜地是,每个人都在发布错误消息的屏幕截图,但图像也被破坏了。”是的,Twitter 上的图片之后也无法正常加载了。此外,还有用户报告称无法访问 Twitter 推出的专业用户客户端 TweetDeck。

 

“Twitter 破烂到可以拿来开玩笑,但功能足够强大,我们可以*在 twitter 上*拿它开玩笑,这是硬核软件的柏拉图式理想,”技术分析师 Benedict Evans在这个不稳定的社交媒体网站上打趣道。

 

随着图片加载功能的失灵,Twitter 开始陷入一片混乱,无数用户奔走相告关于这次故障的消息。有网友指出是“对 Twitter API 的传入和传出访问被破坏了”,推文底下有网友抱着“看热闹不嫌事大”的心态称:“这个应用程序坏了会更有趣”。

 

在一条推文中,该公司做了一番相当模糊的解释:Twitter 的某些部分现在可能无法按预期工作。我们开展了内部调整,但产生了一些意想不到的后果。问题随后得到确认,引发故障的原因是变更 Twitter API 免费访问关闭计划导致的。

 

2 月 1 日,该公司宣布将不再支持免费访问其 API,这实际上终结了第三方客户端的存在基础,也极大限制了外部研究人员研究 Twitter 网络的能力。该公司一直在构建新的付费 API 以供外部开发者使用。

 

值得注意的是,Twitter 于 2014 年针对第三方应用开发商封杀了有关用户数据的开发接口,之后严格限制用于登录的令牌,开发人员必须向 Twitter 付费才能使用其 API。后来,Twitter 创始人Jack 表示,这是“我们做过的最糟糕的事情”,并辩解说他“当时没有在经营公司”,还表示“公司一直在努力将其重新完全开放。”

 

一人维护,关闭了自己的内部访问

 

据悉,马斯克的大幅裁员计划令 Twitter 的工程师数量锐减,最终导致只有一人参与到涉及平台 API 的重大项目当中。

 

据一位现任员工称,周一这个唯一的现场可靠性工程师执行了一次“错误的配置变更,基本上破坏了 Twitter API 的正常运作。”此变更还在公司内部引发了连锁反应,导致 Twitter 多款内部工具和面向公众 API 全部瘫痪。工程师们一边手忙脚乱地解决问题,一边在 Slack 上呼喊着“完了”、“Twitter 整个宕机了”。

 

据说马斯克在得知情况后非常愤怒。

 

当天晚些时候,马斯克发推文说,“API 的一个小改动会产生巨大的影响。代码堆栈已经极度脆弱,最终需要完全重写。”在此之前,Twitter 投资人 Marc Andreessen 也曾发布了一张截图,显示该公司的 API 故障正在网站上蔓延。

 


 “马斯克的解释似乎偏离了真正的原因。看起来马斯克只是不了解他的技术堆栈中的依赖关系,并且在试图切断对免费外部用户的访问时,无意中下令关闭了 Twitter 对它们自己的 API 内部访问。”专栏作者 Ahmed Bab 评论道。

 

马斯克接管 Twitter 时,曾承诺会大幅提高网站运行速度和稳定性。他的同事对员工的技术水平进行了筛选,最终裁掉了几千名“能力”不足以在马斯克治下取得成功的员工。

 

内部员工已见怪不怪

 

但不间断裁员,导致 Twitter 公司现在只剩不足 550 名全职工程师,有媒体统计马斯克已经裁掉了约 80%的员工。如今事态也符合前员工们当初的预想,人员流失导致 Twitter 越来越频繁地曝出灾难性宕机事件。

 

本周一的错误配置变更,已经是 Twitter 今年以来第六次造成广泛影响的服务宕机:

 

  • 1 月 23 日,Androiod 用户暂时无法加载或发布新推文。

  • 2 月 8 日,一条错误消息提醒用户“您已超过每日推文发送上限”,导致其无法正常发帖。

  • 2 月 15 日,推文无法加载。

  • 2 月 18 日,推文时间线中断,回复消失。

  • 3 月 1 日,时间线无法正常工作。

 

以上提到的还只是服务宕机。此外,马斯克的推文在时间线上比其他用户更显眼等问题,也扰乱了用户的正常体验。

 

一名现任员工称,“这类中断事故已经越来越频繁,我甚至感觉大家开始变得麻木了。”据悉 Twitter 总部内的气氛很是“轻松融洽”。有一位员工表示,“从始至终,我们一直都笑呵呵的。”

 

由于 Twitter 已经没有多少经验丰富的员工能够恢复服务,Twitter 花了一上午才解决掉这个问题。“把员工裁掉 90%,就必然是这样的结果。”

 

从种种方面来看,本周一的宕机事故代表着马斯克对 Twitter 公司的影响已经达到顶峰。为了一心一意赚回 440 亿美元的收购成本,马斯克一直在裁员并缩减 Twitter 提供的免费服务。

 

一名工程师被迫需要独力负责一个重大项目,最终导致这个同时为用户和员工服务、与多个关键系统相互关联的项目突然“爆雷”。

 

技术债也要背锅?

 

不过也有部分现任员工认为,Twitter 目前的很多技术隐患早在马斯克接手之前就已经存在。当初的 Twitter 之所以被戏称作“失败的鲸鱼”,并不无道理。

 

有位现任员工提到,“Twitter 1.0 带来了太多的技术债务。如果现在做出变更,那么一切都会崩溃。”

 

比如,Twitter 在早期开发时,MVP 选用了 Rails。快速的开发能力带来了快速的产品验证,然而 Rails 的低效使得 Twitter 很快在技术上触及了天花板:2007 年左右,Twitter 动不动就挂,甚至一度挂了三天。后来,新的技术主管上任后大刀阔斧地做了债务重组,摒弃 Rails,拥抱 Java 生态圈,用 scala 重写很多核心服务,终于把服务稳定下来。

 

2011 年时,Twitter 还遇到了站点稳定性问题,当时使用 HTTP 协议的 Twitter API 时,如果调用 statuses 或者 home_timeline 的 OAuth 方法将会产生一些问题。

 

不过,如今掌舵推特的马斯克是否真正关心 Twitter 的技术债还不得而知。

 

此前,马斯克在推特上表示,“对于 Twitter 在许多国家/地区的超慢速度,我深表歉意。应用正在执行超过 1000 个批处理不当的 RPC,只是为了渲染一个主页时间轴!”

 

随后,当时还在 Twitter 的工程师 Eric Fronhoefer 公开指出马斯克的错误,给出的原因中也包括多年的技术债让 Twitter 用速度和功能换取性能,但他第二天就被解雇了。

 

不过有趣的是,Fronhoefer 当时还指出,“我们可能应该优先考虑一些重大的重写,以对抗 10 多年的技术债务,并呼吁积极删除功能。”

 

而如今,马斯克也在推文中表示要完全重写。

 

虽然这次 Twitter 设法在几小时后就顺利恢复了过来,但故障背后的故事似乎昭示着,后头还有更多的麻烦在等着马斯克。

 

参考链接:

 

https://www.theverge.com/2023/3/6/23627875/twitter-outage-how-it-happened-engineer-api-shut-down

2023-03-07 13:5910923

评论 1 条评论

发布
用户头像
领导层换了,重构可能是了解当前系统最快的方式?
2023-03-07 21:27 · 北京
回复
没有更多了
发现更多内容

一栈式 X 规模化 X 多元化:PingCAP 马晓宇谈 TiDB HTAP 演进之路

TiDB 社区干货传送门

TiDB 在实时分析应用场景下的探索

TiDB 社区干货传送门

TiDB 多Socket 服务器性能扩展问题分析-续

TiDB 社区干货传送门

性能调优 性能测评

TIDB--不容易发现的 lightning tidb-backend 模式导入优化

TiDB 社区干货传送门

迁移 性能调优 TiDB 底层架构 管理与运维 性能测评

insert引发的TiDB hang死血案(案情一)

TiDB 社区干货传送门

故障排查/诊断

内容主数据 TiDB 集群写入热点优化实践

TiDB 社区干货传送门

TiDB升级、TiFlash测试及对比ClickHouse

TiDB 社区干货传送门

以TiDB热点问题来谈Region的调度流程

TiDB 社区干货传送门

实践案例

TiUP升级TiFlash重启失败解决方案

TiDB 社区干货传送门

体验升级至4.0

TiDB 社区干货传送门

TiDB 升级到5.1.1 的性能表现

TiDB 社区干货传送门

TiDB 在茄子科技的应用实践及演进

TiDB 社区干货传送门

实践案例

TiFlash5.0.1与4.0.10 对比测试

TiDB 社区干货传送门

版本测评

如何分析和解决 TiDB 4.0 的写热点问题

TiDB 社区干货传送门

HTAP 会成为数据库的未来吗?

TiDB 社区干货传送门

TiDB in Action 开源电子书

TiDB 社区干货传送门

TiDB SQL 优化案例几则

TiDB 社区干货传送门

Tikv节点磁盘耗尽恢复经验

TiDB 社区干货传送门

【优质技术文章推荐】TiDB for PostgreSQL—牛刀小试

TiDB 社区干货传送门

实践案例

TiDB-4.0.0-rc-性能测试

TiDB 社区干货传送门

TiDB 在小米的落地及云原生探索

TiDB 社区干货传送门

【理财实践】 开科唯识-互联网理财为什么会选TiDB

TiDB 社区干货传送门

TiDB v5.1 体验: 我用 TiDB 训练了一个机器学习模型

TiDB 社区干货传送门

TiDB 在金融场景里面那些不得不说的事

TiDB 社区干货传送门

记一次使用TiUP半自动升级TiDB集群经验

TiDB 社区干货传送门

版本升级

隐藏esc坑之jbd2进程io占用奇高 系统长期io占用100%

TiDB 社区干货传送门

故障排查/诊断

TiDB 与 Flink 联合发布实时数仓最佳实践白皮书

TiDB 社区干货传送门

Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB

TiDB 社区干货传送门

记一场DM同步引发的Auto_Increment主键冲突漫谈

TiDB 社区干货传送门

故障排查/诊断

猜一猜 TiDB 4.0 GA 第一个上线用户花落谁家?有惊喜!

TiDB 社区干货传送门

解决方案之:DM relay 处理单元报错

TiDB 社区干货传送门

唯一维护 API 的普通工程师轻松搞垮 Twitter,马斯克:我们重写代码吧_语言 & 开发_褚杏娟_InfoQ精选文章