本文翻譯自Medium,原作者是Mike Krieger,原文地址
在2010年,在我們發布Instagram第一個版本之前的那個晚上,我和我的合伙人Kevin打賭第一天會有多少野生用戶。Kevin猜是2500,在特別樂觀的情況下,我猜了25000這么多。第二天,務實的我難以相信我猜對了。
現在,在我們的第5個生日,Instagram在全球有400萬用戶,一天會上傳8千萬照片和視頻?;仡^看,我們在我們最初的產品里保持了簡潔和工匠的平衡,就在去年,翻新了搜索和發現,發布了嶄新的Instagram Direct,并且繼續發布創造性的工具例如Layout。在過去5年里,我們的團隊已經成長(謝天謝地)和進化,我們保持了我們“先做最簡單的事”的圣歌,并且一直把它作為我們如何在接下來的5年繼續規模化的核心。這是我們在過去5年里創建Instagram的一些重要里程碑——好的、壞的和意想不到的。我希望這能像一個外賣一樣幫助你創建和培育你自己的團隊和公司。
里程碑1號:3個月1百萬用戶
下方文件:最大的挑戰
發布后的第一個月實在是一片模糊——凌晨3點服務器警報頁是常態而不是例外。在第一天爆炸到25000名用戶之后,我們繼續快速增長直到1百萬。沒有比人們真的想要用產品更強的動機了,我們一直在高速檔來確保我們能提供一直增長的需求。在我們開始的時候,我們在一個洛杉磯的獨立服務器上運行,它的計算能力還不如一臺Macbook Pro。當我因為我們第一天的增長而聯系主機提供商想要另一臺服務器,他們給了我一個為期四天的周轉——48小時如果我們沖擊它。由于我們的增長看起來是那么不可預測,我們打算移動到亞馬遜網絡服務云上。
由于我們中沒有一個人對于基礎設施有很多經驗,我們只能浸泡在盡可能多的知識里。QCon和Velocity上有很棒的研討視頻,還有Facebook、Netflix、Twitter和其它網站的文章。分享科技見解的開放文化是我們這一行最棒的事情之一,最主要的促動者就在我們的工程博客背后。
外賣:我們的圣歌,“先做最簡單的事情”在最開始的幾周和幾個月里成形。雖然我們只有兩個人,但我們要最快速地做決定,每當遇到新挑戰都要最簡單的搞定。如果我們試圖證明我們所做的一切,我們可能會因不作為而陷于癱瘓。通過確定要解決的最重要的問題,然后選擇最簡單的解決方式,我們才能夠支持我們呈幾何級數的增長。
里程碑2號:發布安卓版
下方文件:最受期望的發布
Instagram剛開始的幾年里,我和Kevin每次在舞臺上都會被問一個問題:“安卓版什么時候發布!?”
我們只從iOS開始,因為我們希望能夠快速迭代——我們只是兩個工程師。當我們進入2012年,是時候擴展到多平臺了。用典型的Instagram方式,我們的安卓App在三個月里由3名工程師創建,其中2名和Philip一起學習安卓來完成項目,Philip從創建Gowalla的安卓App中加入我們,引領了Instagram的移動貢獻直到今天。
當時我的角色之一是成為“專業eBay賣家”,因為我們希望能夠在盡可能多的設備上測試我們的App,包括叫做“M865 Ascend II 2 Touch”的什么鬼。我們經常在我們的辦公室里取出一個剛到的新手機,加載我們的半成品App,為能夠在上面運行如何而保持驚訝。安卓設備的豐富度給我們造成了一些挑戰——特別是創造我們的Instagram視頻產品的時候——但用最少自定義需要來發布到這么多種類的設備上是非常神奇的。
在我們發布的頭12個小時里超過100萬新用戶加入了Instagram——難以置信的反應。在當時,我也寫了一些我們的學習基礎設施的課程。隨著時間的過去,我們的安卓App在平臺上進化的更原生化,今天它是最快速、最受好評的安卓App之一。
外賣:從一個單獨的平臺開始允許我們聚焦和快速迭代,而不用把所有事都做兩遍(在Instagram中我們經常說“少做更好”)。當擴展到多平臺的世紀來到時,我們建立了一個小團隊,組合了資深安卓專家和這個平臺的新手天才工程師。隨著時間過去,建立一個完全合格的安卓團隊允許我們調整我們的App和其它平臺更接近。
里程碑3號:2012弗吉尼亞州風暴
下方文件:最糟糕的運行中斷
當時是2012年,我在波特蘭度3天短假,我的手機嗡嗡作響:“Instagram.com掛了”。我去網上速查了一下,顯示不只是Instagram——Netfix和其它網站也在經歷同樣的問題。我跑回我們的酒店,打開我的筆記本,看到亞馬遜網絡服務狀態頁上可怕的消息:“美國東部的電力問題”。一個巨大風暴席卷了弗吉尼亞州,我們幾乎一半的實例都沒電了。接下來的36小時會在我們整個技術設施進行殘酷的重建。一線希望是它生成了這樣的模因圖片:
在當時,包括我在內的我們整個后端團隊,我們的首席工程師Shayne和Rick,他們在不到一個月前剛在Instagram開始工作。沒有丟失用戶數據,但這個運行中斷暴露了我們還有很多工作去做,讓我們的基礎設施全自動化。
這個運行中斷打了我們的屁股,我們需要移動到一個更可重復的服務器配置過程。在接下來的一年里,我們移動了我們所有的供給,從易碎的殼腳本到完整Chef系統,并大大降低了新團隊成員和基礎設施合作的門檻。
我們也移除了對于亞馬遜彈性塊存儲數據庫備份的依賴,改用了WAL-E和Postgres’WAL重復運輸。我們還啟動了一個可靠性的倡議,靠跨數據中心的努力,讓Instagram運行在地理分布式數據中心。
外賣:腳本化的基礎設施需要前期工作,但可以給新工程師到基礎設施團隊帶來巨大的紅利,也有助于災難恢復方案。我也很高興我們雇傭了正確的工程師——面臨無法想象的壞情況時,Shayne和Rick卷起了袖子挽回備份,一個時間一個問題,Mark-Watney風格。
里程碑4號:整合
下方文件:最有志向的工程項目
2010年10月5日:0用戶 ??
2010年10月6日:25000用戶??
2010年11月:100萬用戶??
2012年:3000萬用戶??
2013年:2億用戶??
到2013年每個月有2億用戶使用Instagram,超過200億圖片被存儲。我們的團隊在成長但是很小,并且我們為Instagram團體的持續增長而極度興奮。隨著時間發展,我們持續尋找我們想要和Facebook已經存在的后端系統的新整合——例如,他們的站點完整性系統對于幫助我們鑒別垃圾郵件是有幫助的。但做這些整合很難,當我們在亞馬遜網絡服務的時候,我們等待越久,轉移我們日益增長(和日益昂貴)的基礎設施就越難。
很明顯我們應該轉移到Facebook的基礎設施,但我們在轉移數百萬用戶和數十億照片的時候不想中斷服務。所以開始整合,或者我喜歡叫做在一輛車100邁每小時的時候把所有零件換掉。一個8名Instagram和Facebook工程師組成的小團隊首先建立了一個公用網絡來移動Instagram從EC2到亞馬遜虛擬私有云(VPC),用一個我們家用自制的工具叫做Neti。然后我們周密地轉移我們的系統和工具,包括建立一個“ig”命令行工具,建立了從我們的工程師熟悉的AWS到新的FB數據中心環境的模式橋梁。最終的結果是用最少的中斷完成了巨大的轉移。
外賣:不要重新發明輪子。移動到Facebook服務器讓我們的基礎設施更快、更高效,充分利用Facebook的其它工具例如打擊垃圾郵件等等。我們能吃保持小型,也能利用Facebook的資源和經驗,并且更快的移動。
里程碑5號:Instagram的趨勢
下方文件:下一個大賭博
今年早期,我們翻新了搜索和探索,擴展了在Instagram上輕易發現世界上正在發生的有趣的時刻的能力。我們介紹了趨勢標簽和位置,并且建立了全新的基礎設施來支持辨認、排名和顯示Instagram上最好的內容。
2010我們第一次采用趨勢,是我們的“流行”頁,在Instagram發布的時候就可用。算法非常簡單:用每個圖片的喜歡個數,照片的年齡每大4個小時就衰減一次。在我們的社區很小的時候這很有效,但過了一段時間我們意識到我們需要一個更細微的方式。
考慮到我們巨大的社區,在2014年我們開發了針對個人的探索,帶有無限可滾動的照片和視頻頁面,為每個人而定制。在幾個月內,我們的用戶在用5倍于非個人定制的探索的速度瀏覽內容。今年,我們帶回了初始流行頁的意圖——Instagram格式塔的一瞥——作為我們的趨勢產品。帶有排名,機器學習了加入我們的團隊的專家,我們能夠采用知名趨勢算法來計算Instagram社區的細微差別。
外賣:先做簡單的事不意味著你的解決方式會永遠奏效。我們學習去開放來進化我們的產品,旋轉目標建立團隊就像我們的數據團隊,來適應我們快速規?;纳鐓^。
近五年來,對我們許多人來說,都是一次瘋狂的旅程,在我們的生日之際,暫停和反思是很好的。我確信在我們社區繼續增長的時候,我們產品會繼續進化,在我的“過去10年”的Medium帖子里不會缺少談資。為了接下來的5年!