写点什么

一个 SDK 引发的“血案”

2020 年 7 月 14 日

一个SDK引发的“血案”

人不能两次踏进同一条河流。Facebook:但我们能时隔两月栽在同一个坑里。


Facebook iOS SDK 再引故障

5 月 7 日,Facebook iOS SDK 故障引发北美主流 App 大规模崩溃,从海外风头强劲的 TikTok 到 Google、Netflix、Spotify 等知名 App 再到游戏 GTA5、使命召唤无一幸免。



图源见水印


Facebook iOS SDK 的 GitHub issue 显示,SDK 6.5.0、SDK 5.6.0、SDK CoreKit 6.0.0 等等都会导致应用崩溃。



仅仅两个月时间,上周五 Facebook iOS SDK 再次导致大量应用崩溃,Spotify,TikTok,Tinder 和 Waze 等应用无法使用持续数小时。此次崩溃的罪魁祸首是 Facebook SDK 5.0.2 等版本。Facebook 在一份声明中说:


“……代码变更触发了某些 iOS 应用程序的崩溃。我们迅速发现并解决了该问题。对于由此带来的不便,我们深表歉意。”


一家独大的隐忧

Facebook 的 SDK,就像开发者托管在云上的服务一样,一旦出现故障,引发的很可能是多米诺骨牌级的连锁崩溃反应。


这两起由 Facebook SDK 故障引发的大规模应用程序崩溃事件凸显了一个隐忧:当 Facebook 拥有一个“核弹”级别的开关,只要摁下去就造成大规模的杀伤,开发者如何保护自己不受无差别攻击?


答案很可能是:无法保护。


因为此次事件明确地给了外界一个信号:不管有意还是无意,Facebook 都有这个能力,他们确实可以控制包含其代码的其他应用程序。


Facebook 以工程师文化闻名于世,其工程团队认为,他们的开发工作永远没有到头的那一天,代码库的增长永不停止,2013 年时就有超过 1000 万行代码(850 万 PHP 代码),而到 2019 年时,其代码库已经突破一亿行。


不断开发新的功能,迅速上线,满足用户需求,这是 Facebook 的持续部署的开发模式。Move fast,break things 是他们的一贯信条,更为激进的是,长久以来 Facebook 甚至没有专门的测试工程师:所有的测试工作都交由自动测试工具和开发团队自己。


两次栽在同一个坑里,开发者笑言 Facebook 的信条是 Move fast and break the whole mobile iOS App ecosystem。还有人在 issue 区留言道:Facebook,等等你的人民吧(Please move slower and break fewer things)。


当然,没有一家企业是完美的,在持续更新的软件开发领域,要做到不出错、少出错更是难上加难,每一个开发团队、开源项目维护者乃至个人开发者,都应该敬畏每一行代码,每一份托付。


回到 Facebook SDK 这个故障本身来看,官方团队给出的原因是“代码变更”,不知道这变更的代码是 black/white list 吗?


2020 年 7 月 14 日 14:431900
用户头像
小智 前 InfoQ 主编

发布了 399 篇内容, 共 316.6 次阅读, 收获喜欢 1757 次。

关注

评论

发布
暂无评论
发现更多内容

如何表达自己的感情?

zkh

消息队列Kafka - 原理分析

Java收录阁

kafka

Java并发编程系列——常用并发工具类

孙苏勇

Java Java并发 并发编程 多线程

万字破解云原生可观测性

谭建

云原生 APM 可观测性 链路追踪 Skywalking

Firefox浏览器背后的力量,Mozilla基金会的“生财”之道

赵新龙

firefox 开源 基金会

没有了手机的诺基亚,过得远比你想象的要好

赵新龙

微软 手机 上市 诺基亚

Web3极客日报 #133

谢锐 | Frozen

区块链 技术社区 Rebase

改变

一把梭

生活 随笔

Web3极客日报#130

谢锐 | Frozen

区块链 创业 独立开发者 技术社区 Rebase

科技 vs 隐私:瘟疫下“以健康为名”会将我们推向何方?

陶乐思

消息队列Kafka - 基本应用

Java收录阁

kafka

我所想的跨平台开发:小程序+App+Web

曾伟@喵先森

flutter 小程序 微信小程序 跨平台

思考如何节省时间,节省出时间进行思考

伯薇

思考 时间管理 思考力 工作效率 提升效率

苟富贵,勿相忘

十三

Web3极客日报#131

谢锐 | Frozen

区块链 创业 独立开发者 技术社区 Rebase

容器日志采集利器:Filebeat深度剖析与实践

傅轶

Kubernetes 容器 云原生 日志 Filebeat

游戏夜读 | 2020周记(4.10-4.17)

game1night

张小龙 的 22 年和微信的 8 年

池建强

微信 张小龙

Web3极客日报 #132

谢锐 | Frozen

区块链 创业 独立开发者 技术社区 Rebase

论十三

十三

《我是余欢水》与《一个叫欧维的男人决定去死》

十三

如何成为一个靠谱的人

熊斌

个人成长 团队协作

以物理学思维破解分布式系统的本质

常平

分布式

HTTP的德性

十三

Disruptor 高效的秘密-Sequencer

Rayjun

Java 并发编程 Disruptor

为什么开源是基础软件的未来

顾钧

开源 基础软件

Block底层原理探析

Damien

ios 源码分析

面向兴趣编程 - 一条微博和一个小程序的故事

遇见

小程序 微信小程序 副业 面向兴趣编程

OKR实践中的痛点(3):破3旧,迎3新!

大叔杨

OKR Scrum 敏捷 敏捷开发 绩效

重要:Kafka第3篇之一条消息如何被存储到Broker上

z小赵

kafka

为什么最该祝自己劳动节快乐

石君

劳动 劳动节 励志

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

一个SDK引发的“血案”-InfoQ