作者|褚杏娟、核子可乐
“从始至终,我们一直都笑呵呵的。”
当地时间周一上午,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 表示,这是“我们做过的最糟糕的事情”,并辩解说他“当时没有在经营公司”,还表示“公司一直在努力将其重新完全开放。”
1 一人维护,关闭了自己的内部访问
据悉,马斯克的大幅裁员计划令 Twitter 的工程师数量锐减,最终导致只有一人参与到涉及平台 API 的重大项目当中。
据一位现任员工称,周一这个唯一的现场可靠性工程师执行了一次“错误的配置变更,基本上破坏了 Twitter API 的正常运作。”此变更还在公司内部引发了连锁反应,导致 Twitter 多款内部工具和面向公众 API 全部瘫痪。工程师们一边手忙脚乱地解决问题,一边在 Slack 上呼喊着“完了”、“Twitter 整个宕机了”。
据说马斯克在得知情况后非常愤怒。
当天晚些时候,马斯克发推文说,“API 的一个小改动会产生巨大的影响。代码堆栈已经极度脆弱,最终需要完全重写。”在此之前,Twitter 投资人 Marc Andreessen 也曾发布了一张截图,显示该公司的 API 故障正在网站上蔓延。
“马斯克的解释似乎偏离了真正的原因。看起来马斯克只是不了解 Twitter 的技术堆栈中的依赖关系,并且在试图切断对免费外部用户的访问时,无意中下令关闭了 Twitter 对它们自己的 API 内部访问。”专栏作者 Ahmed Bab 评论道。
马斯克接管 Twitter 时,曾承诺会大幅提高网站运行速度和稳定性。他的同事对员工的技术水平进行了筛选,最终裁掉了几千名“能力”不足以在马斯克治下取得成功的员工。
2 内部员工已见怪不怪
但不间断裁员,导致 Twitter 公司现在只剩不足 550 名全职工程师,有媒体统计马斯克已经裁掉了约 80% 的员工。如今事态也符合前员工们当初的预想,人员流失导致 Twitter 越来越频繁地曝出灾难性宕机事件。
本周一的错误配置变更,已经是 Twitter 今年以来第六次造成广泛影响的服务宕机:
· 1 月 23 日,Androiod 用户暂时无法加载或发布新推文。
· 2 月 8 日,一条错误消息提醒用户“您已超过每日推文发送上限”,导致其无法正常发帖。
· 2 月 15 日,推文无法加载。
· 2 月 18 日,推文时间线中断,回复消失。
· 3 月 1 日,时间线无法正常工作。
以上提到的还只是服务宕机。此外,马斯克的推文在时间线上比其他用户更显眼等问题,也扰乱了用户的正常体验。
一名现任员工称,“这类中断事故已经越来越频繁,我甚至感觉大家开始变得麻木了。”据悉 Twitter 总部内的气氛很是“轻松融洽”。有一位员工表示,“从始至终,我们一直都笑呵呵的。”
由于 Twitter 已经没有多少经验丰富的员工能够恢复服务,Twitter 花了一上午才解决掉这个问题。“把员工裁掉 90%,就必然是这样的结果。”
从种种方面来看,本周一的宕机事故代表着马斯克对 Twitter 公司的影响已经达到顶峰。为了一心一意赚回 440 亿美元的收购成本,马斯克一直在裁员并缩减 Twitter 提供的免费服务。
一名工程师被迫需要独力负责一个重大项目,最终导致这个同时为用户和员工服务、与多个关键系统相互关联的项目突然“爆雷”。
3 技术债也要背锅?
不过也有部分现任员工认为,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
今日好文推荐
百度文心一言发布倒计时十天,我们和背后的工程化团队聊了聊
Meta版ChatGPT惨遭“开源”?最新大模型LLaMA被泄露,已在GitHub收获7k+星
平台工程不适合中国企业?这个观点值得反驳!
科大讯飞回应用“绩效回溯”变相降薪;OpenAI逆天开放API,价格打骨折;推特裁员超70%,马斯克给剩下员工“画饼”?|Q资讯
活动推荐
🔥作为一个免费、跨平台、开源的开发平台,.NET 一直备受开发者的关注。本次“Microsoft Azure 在线技术公开课:实现 .NET 应用现代化”活动,将带你了解如何将 Microsoft .NET 应用迁移到云,了解如何实现工作负载现代化并简化将 .NET 应用迁移到 Azure 等内容。对.NET 感兴趣的开发者不容错过,即可点击【阅读原文】或扫码即可报名!