为什么Twitter注定要失败? - mos


编写最少代码行的人通常在处理最难的问题。这是Twitter的运维人员发布的贴子,马斯克收购了Twitter以后,只留下会写代码的工程师:

作为一个拥有10年以上行业经验的SRE和系统管理员,下面是一些对bird网站的完整性构成真实的威胁的场景。 

就背景而言,我已经看到这些问题中的某些变体对一个10亿用户的应用程序构成了严重的威胁。我甚至自己也造成了几个技术性较强的问题。我还参与了对更多问题的处理和修复。

1)随机硬盘填满了。
你不知道一个硬盘盒子被损坏导致整个系统的级联故障有多常见,即使是设计良好的有主动维护的容错系统也是如此。这个盒子在哪里?是什么在填充它?谁来弄清楚?

2)网络的物理问题导致DC瘫痪。
我知道Twitter主要是在内部,我已经看到了在一个大的新闻事件中,当一棵树撞断了关键的光纤线路时会发生什么。

3) 错误的代码推送导致网站瘫痪。
防止这种情况的发生是我的日常工作,我可以告诉你,对于任何一个SRE团队来说,这都是最可怕的情况之一,更何况是一个完全人手不足、疲惫不堪的团队。

4) 错误的代码同时也破坏了推送新代码的能力。
对于像我这样的团队来说,这绝对是噩梦般的情况。当这样的事情发生时,所有的人都在努力。如果没有对系统的深入了解,你可能永远无法恢复它。

5)神秘的SEV。
突然间,网站变黑了。仪表板是红色的。一切看起来都很糟糕。没有任何迹象表明原因。你需要召集大部队。那些名字以基金会结尾的团队。他们是谁?你怎么称呼他们?

6) 数据库被破坏了。
这是个大问题。所有东西都着火了。谁是这个问题的专家?

7)发现了iOS应用中的一个关键安全漏洞。你需要快速修复。
你有一个专家团队,他们知道如何在苹果的卡夫卡式的官僚机构中进行应用更新,对吗?我当然希望你有。

8)有人注意到,通过加载一个特定的URL,可以阅读其他人的DMs。
这是一个SEV1,大规模的,全员参与的关键问题。你需要那些深刻理解你的隐私抽象是如何工作的人,以及如何修复它们。

9) 网站在凌晨4点就会变黑。
值班人员不知道出了什么问题。你*需要*一个IMOC(事件经理待命),他知道该叫醒谁,为什么,以及如何叫醒。这个人了解你的系统,能够以闪电般的速度综合信息,并协调恢复工作。

10)你用来*找其他系统*的系统内部发生故障。
你的所有系统都不能相互交谈。该网站和你的所有工具都立即失效。你所需要的用于恢复突发变化的工具都被搞坏了。你能用一个骨干团队来解决这个问题吗?

11) 现在是星期五下午5点。仪表盘一下子全部变红。
网络舰队出现了级联式重启。磁盘从星期三开始就被填满了。周三,在多个相互关联的系统中,有数百次的代码修改。撤销其中任何一项,风险自负......

12)哦,该死。你恢复了其中一个。
现在每个锁定账户的推文对所有人都是可见的。人们可能真的会因为他们的帖子而被人用砍刀杀害。这不是一个假设性的问题。现在是晚上9点。该网站已经完蛋了。你打算给谁打电话?

13)确保服务器的变化可以安全地推送到prod的系统正在失效。
你有,比如,30000个必须运行的测试,以确保隐私/安全/合规/可靠。其中一个测试导致了失败。你能找到它吗?另外,现在是世界杯期间。

14)菲律宾的一个用户即将在平台上发布CEI。
你*不能*让这些内容存在。你的员工与菲律宾执法部门有关系吗?你有你的内容审核系统吗?你有你的版主吗?

15)联邦调查局想检查他们认为即将犯下911事件的人的DMs内容2:原子弹。
你是否有一个系统来准许他们访问?你会拒绝他们的访问吗?你怎么知道那真的是他们?

16) 你允许他们进入。现在,来自一个以可怕的国家的人正在敲门。他们有一张看起来很正式的传票。你会让他们看到一个持不同政见者的DMs吗?你能说清楚原因吗?你可能需要这样做,在欧洲某地的一个非常正式的法庭上。

17)另一个国家告诉你,他们希望你所有的用户数据都储存在他们国家的服务器上。你有那个国家的政策专家吗?你有很多**积极的律师吗?你有知道如何对你的数据进行分区的infra eng吗?

18) GDPR。你被发现违反了。一个由100多名工程师、律师、政策专家、设计师和经理组成的团队花了几个月的 "硬核工程",才在一开始就符合规定。你能恢复吗?我向你保证,不这样做的代价将超过一个组织的人员数量。

19)每天都有一次,在凌晨12:13,你的数据管道中的一个特定服务会慢到爬。它似乎没有造成任何问题,但你有点担心,因为它似乎越来越糟糕。你是否指派了一个SRE来查看一下?你还有人在吗?

20)你用来发现其他服务的服务工作得很好,但你的一个最好的工程师做了一些计算,发现它不能扩展到更多的用户和更多的服务,(假设)你想建立一个叫做X的超级应用,你会重写吗?怎么做?

21) 你决定重写。8个月后(笑),你的新系统已经准备好迎接第一批用户了。谁在协调迁移工作?他们真的*了解复杂的系统吗?他们擅长与人打交道吗?他们能执行吗?他们有他们需要的领域知识吗?

22) 你刚刚从微软为一个核心组织雇用了一个看起来不错的工程总监。慢慢地,他们组织的生产力变慢了,减员率攀升了**。主任发誓说一切都很好。如果你解雇这个总监,你的一个副总裁突然有了18个报告。怎么办?

23) 一个工程师刚刚踢掉了重启舰队的命令。哎呀,他们没有使用--慢速。现在你所有的缓存都是空的。所有的。每一个请求都会直接进入数据库。DB瞬间就超载了,有些开始OOM,重启循环...。你如何重新填充缓存?

24) 世界杯。这是**的决定性事件。我们曾经为流量排行榜开过观看会。你的网站在一个星期内得到的流量是令人震惊的。它是在巨大的爆发中。它把你的每一个系统都测试到了极限。如果有一个系统坏了,希望它不会连带影响。它将会。

25)新年前夕,美国东海岸。每年都是如此。我记得我坐在办公室外面,烟花在远处爆炸,疯狂地打电话给视频oncall。每个人都会发布他们的焰火视频。*每个人*。这将填满磁盘,并将你的带宽测试到极限。

26) 我以前说过,但是... CEI。如果你处理不当,如果你的政策人员和律师不是他妈的顶尖的,你*会*被拉到国会面前,在法官面前,在晚间新闻中,如果你正在经营一家社交媒体公司,你不会想去的地方。

27) 你们办公室的人身安全。保安告诉我,他们保留了*长的疯子名单,把他们记在心里。

28)种族灭绝。人们利用你的平台来策划大规模的谋杀,教堂里的那种大砍刀。

29) 叛乱。数百万人将利用你的平台来策划对政府的叛乱。你会使用第28条的工具来阻止他们吗?你会任其发展吗?你如何决定?如果你听之任之,下周在一个你非常喜欢的国家发生同样的事情怎么办?