《HarmonyOS:领航者说》技术公开课来啦,大咖分享、实战解码,不容错过 了解详情
写点什么

唯一维护 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:5911212

评论 1 条评论

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

大模型训练:文件保存类型与优化策略

百度开发者中心

大模型训练 千帆大模型平台

LLMops:大模型时代的运维与部署之道

百度开发者中心

大模型 LLMOps 千帆大模型平台

多数据源管理:掌握@DS注解的威力 | 京东云技术团队

京东科技开发者

mybatis Mybatis Plus 企业号10月PK榜 DS注解

递归解析Json,实现生成可视化Tree+快速获取JsonPath | 京东云技术团队

京东科技开发者

json tree 企业号10月PK榜 JsonPath

对于数字化转型,数据代表了什么?

IT民工大叔

数据 数字化转型 数字化

免备案香港服务器助你快速扩展业务,无忧上线新业务

一只扑棱蛾子

香港服务器

Mac电脑风扇转速控制 Macs Fan Control Pro中文激活版

胖墩儿不胖y

Mac软件 风扇控制软件 风扇转速

玻璃led显示屏与透明led显示屏有区别

Dylan

安装 维护 LED显示屏 led显示屏厂家 设备日常保养

软件测试/测试开发丨Python异常处理 学习笔记

测试人

Python 程序员 软件测试 异常处理

像win一样使用Mac的鼠标右键:MouseBoost Pro

展初云

Mac软件 鼠标扩展

实现动态表单的一种思路 | 京东云技术团队

京东科技开发者

元数据 动态表单 前后端交互 企业号10月PK榜

身为产品经理该如何向客户推广API商品数据接口,该如何跟进项目和程序员对接?

Noah

API 接口 API 文档

企业拥抱大模型,腾讯云为什么值得期待?

ToB行业头条

优化模型之“标注错误”

矩视智能

深度学习 机器视觉

docker制作springboot镜像

tiandizhiguai

镜像 Docker 镜像 kubernetes 运维

35岁,互联网技术岗,何去何从?

老张

职业发展 35岁焦虑

苹果Mac视频编辑软件 Final Cut Pro

展初云

Mac软件 视频编辑工具 FCPX软件 fcpx

DeFi 的兴起:与加密货币交易所应用程序开发的协同作用

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

软件测试/测试开发丨接口测试学习笔记-常见的接口协议

测试人

软件测试 HTTP 接口测试 接口协议

开源即时通讯IM框架 MobileIMSDK v6.4 发布

JackJiang

网络编程 即时通讯 IM

人工神经网络(ANN)

小魏写代码

万字解读|怎样激活 TDengine 最高性价比?

TDengine

时序数据库 ​TDengine

MySQL innoDB 间隙锁产生的死锁问题 | 京东云技术团队

京东科技开发者

MySQL innodb 死锁 Mysql死锁 企业号10月PK榜

让你遥遥领先的七个编程习惯

互联网工科生

编程 编程好习惯

搭建Llama2大模型训练环境的关键要素

百度开发者中心

大模型训练 千帆大模型平台

大语言模型黑盒被打破;Meta 元宇宙硬件亏损可能高于市场共识丨 RTE 开发者日报 Vol.60

声网

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