創始人告訴你,Instagram 成功的5 個經驗

創始人告訴你,Instagram 成功的5 個經驗

2010 年,我們推出Instagram 第一版的前一夜,聯合創始人Kevin 和我打賭,在沒有任何推廣的情況下,第一天會有多少人下載我們的app。 Kevin 猜是2500 人,而在那個特別樂觀的瞬間,我決定把數目定高,猜測會有25000 人。結果第二天,我都不敢相信,下載量恰好就是我所估計的數目。

如今,在我們第5 個生日之際,Instagram 在全球已經擁有4 億用戶,他們每天上傳8000 萬張圖片或視頻。往回看,我們在最初的產品上就實現了簡潔與精細的平衡,而在上一年,搜索和發現功能得到更新,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 風格下,我們的Andr​​oid app 在三個工程師的三個月努力下搭建起來。團隊裡除了有兩位為完成這個項目而學習Android 的工程師外,還有從Gowalla(一家基於位置服務的社交網絡公司,在2012 年關閉) 的Andr​​oid 部門過來的Philip,他領導Instagram 的行動業務直到現在。

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

Instagram_Android

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

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

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

總結:最糟糕的斷電

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

Instagram3

(Instagram 宕機了,跟我說說你中午飯吃了什麼)

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

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

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

可藉鑑的經驗:儘管構建一個腳本化的基礎架構需要不少前期工作,但是在基礎設施維護組有新成員加入時以及在災難恢復工作進行時,這些前期工作將得到回報。除此之外,我也很高興的看到,我們招聘的工程師非常優秀——當遇到狀況外的糟糕狀況時,Shayne 和Rick 都緊張的投入了工作,讓我們重新恢復了服務。一次解決一個問題,像Mart-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 年進發!

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

題圖來自:YouTube 插圖來自:Medium

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

Loading