Threads 团队如何开发这款史上最快达成一亿注册的产品

2023年12月20日

💎 加入 E+ 成長計畫 與超過 350+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

本篇最早收录于《ExplainThis 全端双周报》第 17 期

有在用社群媒体的大家,不知有没有发现,最近重新用 Threads 的人变多了。Threads 是今年 Meta 旗下的 Instagram 团队推出的新产品,基本上可以理解成跟 Twitter 打对台的产品。狭带 Instagram 的超大流量,Threads 成为超越 ChatGPT,以最快速度达成一亿注册用户的 App。

但在 Threads 红了两周后,突然大家就不再讨论,然后这个 App 犹如陨石般稍纵即逝。但在最近 Threads 终于通过欧盟法规监管,在欧洲上线了。这带来新的一波使用者浪潮。不确定为什么,在台湾 Threads 也默默地重新回温,以 ExplainThis 自己来说,我们的 Threads 帐号 (连结) 追踪数少过 Facebook 追踪数超过八千人,但是目前发文的触及与互动都跟 Facebook 差不多。

The Pragmatic Engineer 先前有写过一篇访谈 Threads 工程师的文章《Building Meta’s Threads App (Real-World Engineering Challenges)》,非常推荐大家一读。这期趁着 Threads 最近又重回势头上,来帮大家摘要这篇内容。

小规模团队、加速新产品开发

Threads 是由 Instagram 的团队打造的。Instagram 本身是很大的组织,当 Instagram 决定开发这产品时,在内部招集了最顶尖的工程师与产品经理,同时刻意保持团队规模不要太大,这么做是为了加速新产品的开发。这个 Threads 创始团队是由 3 个产品经理、3 个设计师,加上 60 个工程师组成,为了加速与确保团队成员都是有极高自主性,创始团队的招集都以资深工程师为主。

很多人可能以为在大公司开发新产品,可以直接拿既有的代码来改,但往往这样更耗时。Threads 团队在开发上也是走直接开发原型 (prototype) 而不是去基于原本的代码库做修改。虽然产品是 Threads 团队从头开发,但在基础设施上 (例如技术栈、UI 框架、伺服器架构等各类基础设施) 仍是仰赖 Instagram 原有的基础,这也是 Threads 能在短时间接收这么大量用户的关键。

技术栈的选择

以 Threads 团队的规模,从写第一行代码到提交 App 到苹果 App Store,中间花了约五个月的时间。而 Threads 团队选择的技术栈如下。这个技术栈的选择,很大一部分是延续 Instagram 原先的技术栈,因为 Instagram 基于这些技术栈已经有许多套件与框架,所以这能让 Threads 团队在开发上加快速度。

  • Python + Django 开发 REST API
  • 在要跟 Meta 其他的后端服务沟通时,是透过 GraphQL,这部分是用 Meta 内部的 Hack 语言
  • iOS 主要由 Swift 写,搭配部分 Objective C
  • Android 是用 Jetpack Compose (语言上是 Kotlin 与 Java 混合)

PREQ 指标

而为了加快上线的速度,Threads 团队在开发上选择先上再说,而先没有花太多时间在自动化 E2E 测试上。Threads 团队表示自动化测试很重要,但是在早期产品刚上线的时候,可能会在短时间根据用户反馈做大量调整,这时自动化测试的价值相对比较低。而在后端的商业逻辑部分,Threads 团队是依照 TDD 的方式来开发,确保商业逻辑部分都有完整被测试到。

Threads 团队的观点是“对于还没有到达 PMF 的产品,自动化测试帮助不大”,因此在前期 Threads 主要仍是靠 dogfooding 与 QA 测试来协助确保品质。所谓 dogfooding 是指让内部员工自己使用,自己从使用者的角度来试产品。Threads 的做法是在初期只有核心团队来做,避免过多的反馈让团队忙不过来。等产品开发更趋于完整时,才开给整个 Instagram 团队来 dogfooding。

在实际上线后,Threads 团队有完整观测 PREQ (Performance, Reliability, Efficiency, Quality) 指标,其中具代表性的指标包含

  • 测量从 App 冷启动到用户能看见第一个贴文内容的时间
  • 观测用户滑动时的掉祯状况
  • QPS 与核心 API 的成功率
  • 复杂任务的伫列 (queue) 长度

总结

回头看,Threads 团队的工程经理认为,能在如此短时间开发出承载极高用户的 App,他们做对了几件事情。首先,以速度为优先,即使产品还有很多能完善的地方,但先上线后续持续迭代;第二,保持团队规模不要过大,因为团队规模小,动起来速度也快;第三,在过程中非常专注,这回扣到第一点,Threads 团队把很多功能放在上线后再开发,确保上线前专注在最重要的事。

最后,补充一点,在上线五个月后的今天,Threads 变更完整,且有网页版。而不意外地,Threads 的网页版也是用上面介绍的 StyleX 作为 CSS 解决方案。

阅读更多

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們