創辦人告訴你,打造 Instagram 學到的五個經驗

2015.10.30 by
愛范兒 ifanr
愛范兒 ifanr 查看更多文章

愛范兒連接全球創新者及消費者,跨界技術、文化、消費及創新,致力消費科技領域的產業評論、產品報導及社群連接,創造高品質的消費樂趣。

創辦人告訴你,打造 Instagram 學到的五個經驗
本文全文譯自 Medium ,原文標題 War Stories,Five Years of Building Instagram,作者...

本文全文譯自 Medium ,原文標題 War Stories,Five Years of Building Instagram,作者為 Instagram 創辦人 Mike Krieger。他在文中講述了 Instagram 這五年來的 5 件里程碑事件和從中得到的經驗教訓。愛范兒積木、黃美菁翻譯出品,感謝愛范兒技術部門對技術細節的核對。

圖說明
Instagram 共同創辦人 Mike Krieger(照片來源:Twitter

2010 年,我們推出 Instagram 第一版的前一夜,共同創辦人 Kevin 和我打賭,在沒有任何推廣的情況下,第一天會有多少人下載我們的 app。Kevin 猜是 2,500 人(編按:Kevin Systrom),而在那個特別樂觀的瞬間,我決定把數目定高,猜測會有 25,000 人。結果第二天,我都不敢相信,下載量恰好就是我所估計的數目。

如今,在我們第 5 個生日之際,Instagram 在全球已經擁有 4 億用戶,他們每天上傳 8 千萬張圖片或影片。往回看,我們在最初的產品上就實現了簡潔與精細的平衡,而在上一年,搜尋和發現功能得到更新,Instagram Direct 上線了全新界面,並且有創意小工具不斷推出,比如 Layout。

在我們團隊發展的這五年中,我們一直忠於我們的原則:先做簡單的事。而在我們的下一個五年,也會把它繼續作為核心。下面是我們在過去五年創立 Instagram 過程中的一些大的里程碑——有好的,不好的,還有令人驚喜的。我希望其中會有你可以帶走的經驗,幫助你去發展你自己的團隊和公司。

里程碑 #1:3 個月內擁有 100 萬用戶

圖說明

總結:最大的挑戰。

在 Instagram 推出後的第一個月,情況幾乎是混沌的—— 凌晨三點伺服器警告頁面的出現是常態而不是例外。在第一天激增至 25000 名用戶後,我們的用戶數繼續快速成長,直到達到 100 萬。沒有什麼刺激比人們真的想用我們的產品更強烈的了,於是我們換到了「高速檔」,確保我們可以支撐成長的需求。當我們剛開始的時候,Instagram 只在洛杉磯的一個伺服器上運行,它的運算能力比一部 Macbook Pro 還要差。在遭遇到第一天快速成長之後,我跟主機服務提供商打電話,要求增加一台伺服器,他們說需要 4 天才能實現——如果我們很急的話可以縮短到 48 小時。考慮到我們的成長看起來那麼不可預測,我們決定轉移到 AWS。

考慮到我們在基礎架構上都沒有太多的經驗,我們不得不快速地吸收盡量多的知識。QCon 和 Velocity 上有非常好的會議影片,Facebook、NEtflix、Twitter 還有其他網站上也有很多相關文章。共享技術性想法的這種開放文化是我們這個行業最好的東西之一,也是促使我們更新技術博客的主要因素。

可借鑑的經驗:我們的原則——「先做簡單的事」在最開始的時候已經成型了。因為當時我們只有兩個人,因此,每一次面對新挑戰的時候,我們都需要確定一個最快速,最簡單的解決辦法。如果當時我們對一切事情都作長遠考慮,那麼我們可能會因為什麼也做不了而癱瘓。選擇最重要的問題去解決,選擇最簡單的解決方法,這樣才能支撐起我們指數式的成長。

里程碑 #2:推出 Android 版本

總結:最令人期待的發表。

在 Instagram 的最初幾年,每一次我和 Kevin 上台時都會遇到同樣的一個問題:「Android 版本什麼時候推出?」

我們剛開始只發表了 iOS 版本,這是因為我們希望可以快速迭代我們的產品——要知道我們當時只有兩個工程師。但進入 2012 年,拓展到更多平台上的時機已經到來。在典型的 Instagram 風格下,我們的 Android app 在三個工程師的三個月努力下搭建起來。團隊裡除了有兩位為完成這個項目而學習 Android 的工程師外,還有從 Gowalla(一家 LBS 網路公司,後來被 Facebook 收購) 的 Android 部門過來的 Philip,他領導 Instagram 的行動業務直到現在。

在那段時間裡我部分的工作是成為一個「專業的 eBay 購物者」,因為我們希望在盡可能多的裝置上測試我們的 app,包括一個叫「M865 Ascend II 2 Touch」的手機。通常的流程是,拆開送來我們辦公室的新手機,安裝我們的測試版 app,然後贊嘆 app 在上面的良好表現。Android 裝置的廣泛給我們帶來了一些挑戰——特別當我們開發 Instagram 影片產品的時候。但是,在很小的改動後,我們的 App 就能適應如此多裝置,這讓我們非常興奮。

圖說明

當 Android 版本發表後的 12 個小時,有超過 100 萬新用戶加入 Instagram——這是一個非常難以置信的結果。在那個時候,我還寫了一些在基礎架構上學到的東西。隨著時間的推移,我們的 Android 版本不斷更新,越來越像平台上的原生 App 了。到了今天,它已經成為成長最快、評分最高的 Android App 之一。

可借鑑的經驗:從一個平台上起步,這使得我們可以專注其中,並且,我們可以快速迭代而不需要任何東西都重復實現兩次(在 Instagram 內部我們經常說「把更少的事情做好」)。當到了需要拓展到更多平台的時間,我們搭建了一個小團隊,裡面包括 Android 的專家和一些對這個平台不熟悉但有才華的工程師。組建一支成熟的 Android 團隊讓我們的 app 可以逐漸適應那個平台。

里程碑 #3:2012 年維吉尼亞風暴

總結:最糟糕的斷電。

當時,我正在波特蘭享受三天的長週末,電話響了:「Instagram.com 網站掛了。」我立刻上網查看,發現除了 Instagram 之外,Netflix 和其他網站也出現了同樣的問題。我跑回旅館,打開筆電,看到 AWS 的狀態頁面上有一條讓人驚慌的消息:「us-east 可用區(位於美國東部)出現電力問題」。一場大風暴席卷了維吉尼亞,我們的虛擬伺服器幾乎一半都失去了電力。接下來的 36 個小時裡,我們艱難地重建了幾乎全部的基礎設施。可以苦中作樂的是,由於此事,出現了下面這幅搞笑圖片:

圖說明

(Instagram 當掉了,跟我說說你中午飯吃了什麼)

當時,我們全部的後端技術團隊只包括我自己、首位工程師 Shayne 和 Rick——他加入 Instagram 的時間不到一個月。用戶數據未遭受任何損失,但是,此次斷電揭示出了我們在自動化運維上的短板。

這次斷電倒逼我們採用重用性更高的伺服器配置。在之後的一年裡,我們將所有配置從一大堆容易出問題的 shell 腳本遷移到了 chef (一個開源的配置管理以及自動化運維工具),這大幅降低了新團隊上手的門檻。

除此之外,我們還使用了開源項目 WAL-E 和 Postgres 內置的 WAL (預寫日志)替代了依賴於 Amazon ELB (Amazon AWS 提供的塊儲存方案) 的數據庫備份方案,並實現了數據庫同步 (replication)。除此之外,我們也成立了一個可靠性工作組,這個工作組使 Instagram 擁有了運行在物理分布式的數據中心上的能力。

可借鑑的經驗:儘管構建一個腳本話的基礎構架需要不少前期工作,但是在基礎設施運維組有新成員加入時以及在災難恢復工作進行時,這些前期工作將得到回報。除此之外,我也很高興的看到,我們招聘的工程師非常優秀——當遇到狀況外的糟糕狀況時,Shayne 和 Rick 都緊張的投入了工作,讓我們重新恢復了服務。一次解決一個問題,像 Mark Watney(小說《火星任務》裡的主角)那樣。

里程碑 #4:Instagram 式的融合

總結:最具野心的工程專案。

2010.10.5 : 0 用戶
2010.10.6: 25,000 用戶
2010.11: 100 萬用戶
2012: 3000 萬用戶
2013: 2 億用戶

到了 2013 年,Instagram 的每月使用人數達到 2 億,儲存照片達到 200 億張。儘管團隊在擴張,整個團隊仍然是個小團隊,而且,我們激動地看到了 Instagram 社群的持續成長。

隨著時間推移,我們不斷思考如何與 Facebook 的現有後端系統進行整合。例如, Site Integrity(站點完整性)系統可以對抗垃圾信息。但是,因為基礎設施運行在在 AWS 上,這種整合就很難進行。而且,我們等待時間越長,不斷擴張(而且愈加昂貴)的基礎架構就越不容易遷移。

很顯然,我們需要遷移到 Facebook 的基礎設施上面,但是,當我們遷移上億用戶和數十億圖片時,我們不想影響自己的服務。於是,Instagration(這是作者創造的符合詞,instagram+intergration,Instagram 式的整合)開始了。對於這件事,我比較喜歡的一個比方是汽車在 100 英里時速的行駛中更換所有的零件。一個包括 Instagram 員工與 Facebook 工程師的 8 人小團隊接受了這個挑戰。首先,他們開發了一個叫做 Neti (https://github.com/Instagram/neti) 的工具把實例從 AWS EC2 經典網絡遷移到了 VPC 上。接下來,他們構建了一個叫做 「ig」 的命令行工具,在 Facebook 的數據中心中模擬了 AWS 的設計模式以及使用習慣。在這一切的周密安排下, Instagram 在做到最小的影響下完成了一次最大的遷移。

可借鑑的經驗:不要重新發明輪子。轉向 Facebook 的伺服器後,我們的基礎設施變得更快速、更高效。同時,我們還可以利用 Facebook 的其他工具,比如反垃圾工具等等。我們仍然維持了小團隊,但是,我們利用了 Facebook 的資源和經驗,實現了更快的迭代。

里程碑 #5:Instagram 的「熱門」功能

總結:下一個大賭注。

今年早期,我們重新設計了「搜尋和探索」功能,使用戶能夠更方便地尋找 Instagram 上的有趣時刻——當它們發生的時候。我們推出了熱門標簽和地點功能,並且構建了全新的基礎架構,能夠對 Instagram 上最好的內容進行辨識、排序和展現。

我們對熱門趨勢的首次展現是 2010 年的「流行」頁面。這是 Instagram 發表時就有的功能。算法非常簡單:用每張照片實際擁有的按讚數來排列,而 4 小時之後照片就會逐漸消失。當我們的社群很小時,這是不錯的做法,但是,隨著時間的推移,我們意識到,我們需要一種更為精細的方法。

考慮到我們已經擴大的社群,2014 年,我們開始了「探索」功能的個性化,為每個人帶來了可無盡滑動的圖片和影片頁面。在幾個月裡,我們的用戶與內容的交互次數達到了「探索」未個性化前的 5 倍。今年,我們讓原來的「流行「頁面回歸——讓你一覽 Instagram 的全貌——它就是我們的「熱門」功能。隨著排序和機器學習專家加入我們的團隊,我們能夠使廣為人知的熱門趨勢算法適應 Instagram 社群的各種需求。

可借鑑的經驗:先做簡單的事並不意味著你的方案永遠合適。我們學會了以開放態度對待產品的進化,以及為實現特定目標而組建團隊,比如 Datagram 團隊。這使得我們可以適應快速擴大的社群。

對於我們中的大多數人來說,過去的五年是一段狂野的旅程。在生日之際,停下來反思,這是一件不錯的事情。我相信,我們的社群會繼續成長,而我們的產品也會不斷改進。當我今後在 Medium 寫下「回顧 10 年「 的時候,肯定還有聊不完的話題。向接下來的 5 年進發!

文章來源:ifanr

@@ACTIVITYID:481@@

每日精選科技圈重要消息