Threads 團隊如何開發這款史上最快達成一億註冊的產品

2023年12月20日

💎 加入 E+ 成長計畫 與超過 250+ 位軟體工程師一起在社群中成長,並且獲得更深入、系統性軟體工程內容

本篇最早收錄於《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 上追蹤我們