2011年,在我們發布第一個版本的Instagram前夜,我與聯合創始人Kevin在打賭會有多少人會在第一天下載這個應用。Kevin猜測2500,我更樂觀些,我猜會有25000人次下載。結果,第二天的下載量真的超過了25000,我們簡直不敢相信。
現在,Instagram迎來了它的5歲生日,它在全球擁有4億用戶,每天有8千萬相片或視頻在上面分享。回首過去的5年,我們在簡潔的設計與適當多的功能間取得了平衡,在去年,我們改進了“搜索與發現”界面,啟動一個新功能——私密分享,并持續地改進排版等編輯工具。
5年來,我們的團隊一直在發展壯大,但我們仍對功能增加保持著克制,以維持輕量化的產品特點,我們認為這一特點是我們在第一個五年里取得成功的核心原因。下面是我總結這五年以來我們的重要里程碑事件,其中有好有壞有驚喜。但愿這里的一些經驗能夠對年輕的創業者有所幫助。
里程碑1:三個月內取得一百萬用戶
產品發布之后的第一個月是我們的噩夢——每天凌晨3點服務器由于流量過大發出警報成為了家常便飯。這是因為在第一天的爆炸性的25000用戶之后,我們的用戶繼續迅速增長到100萬!
用戶很熱情,爭先恐后地注冊我們的產品,我們感到很振奮,而我們也曾經對用戶保證能夠承受住巨大的訪問流量。起初,我們在洛杉磯買了一個獨立的服務器,但性能不高,比Macbook Pro還差點。我在第一天過后,第一時間打電話給主機供應商,讓他們換更好的服務器以應對巨大流量,它們說需要4天的時間,如果我們要加價的話,可以48小時內完成。我們等不了那么長時間,用戶不會給你第二次機會,我么決定將服務器轉到亞馬遜的云服務器上。
有了初步的成就,服務器等基本設施也已完備,我們想打廣告,讓更多人知道我們。我們請了兩家公司QCon和Velocity制作廣告視頻,并將之放在Facebook、Netflix、Twitter等平臺上。當今社會對新鮮事物的包容,追求最新的科技潮流的文化使我們獲益良多,而我們的開發博客也吸引了不少人的關注。
提要:創業初期,面對紛繁的工作,我們有一個共識:“先把最簡單的事情搞定。”這指導我們度過了起初的艱難時光。一開始我們只有2個人,當我們面對挑戰時,我們往往從簡單處著手,找到最高效的解決方案,這支撐著我們的團隊一步步發展壯大。
里程碑2:安卓計劃——眾望所歸的項目
在Instagram的這幾年,我和Kevin多次討論過一個問題:安卓版的Instagram什么時候發布?
一開始,為了讓產品能快速推出市場,快速迭代更新,我們僅僅發布了iOS版本,畢竟我們只有兩名工程師。2012年到來的時候,我們有了更充裕的時間和人員開發多平臺的應用。我們的安卓應用花了三名工程師3個月的時間,打造出一款擁有典型的Instagram風格的安卓App,有兩名工程師是初次接觸安卓開發,由我們的王牌工程師Philip帶領他們。他首次在安卓應用中支持了Gowalla(安卓2.1中基于地理位置的分享服務),并至今擔任我們的安卓團隊隊長。
在那時,為了使我們的應用能夠盡可能地良好支持各式各樣的安卓手機,甚至包括華為的M865 Ascend II 2 Touch這樣的冷門手機,我扮演一個“職業eBay買家”的角色。大多數時候,一款新的手機寄到我們的辦公室,我們立刻把Instagram裝上去,如果能夠良好運行,我們會感到萬分欣喜。安卓設備的寬度各不相同,這對我們是一個很大的挑戰,特別是我們的Instagram視頻。回過頭看,對哪怕銷量極小的安卓設備都有良好的支持仍是一個不小的奇跡。
Instagram剛剛上線的12小時,用戶量就突破了100萬——真讓人難以置信。在那時,我寫下了《在基礎設施方面的幾個教訓》這篇文章。之后,我們在安卓平臺上發布了與原生安卓風格接近的Instagram。直到今天,得益于我們良好的優化,Instagram仍然是最流暢的安卓應用之一。
提要:單一平臺的起點讓我們能保持專注、快速迭代、沒有兼容性的包袱。當推出多平臺的版本時,我們成立了一個對安卓有深刻見解的小團隊,擁有一個才華橫溢的領導。在那之后,再將安卓團隊的人才慢慢完善,讓我們把應用程序更貼近原聲安卓的風格。
里程碑3:2012弗吉尼亞風暴
2012年,當我在波特蘭享受我為期3天的短期假期時,手機突然響個不停,接通電話,立即有個聲音大喊:“Instagram.com宕機了!(服務器掛了)”。經過小小的測試,發現不只是Instagram,Netflix和其他網站竟然也掛了。我趕回到我們的公寓,打開筆記本電腦,看到亞馬遜云服務器發來不幸的消息:“美國東部發生了意外事件,部分服務器受到影響。”弗吉尼亞州的一個巨大風暴造成我們一半以上的服務器停電。在接下來的36小時,我們不得不重建我們的服務器等基礎設施。還好有些服務器尚可工作。
在那時,我們的后端團隊由我,我們第一個工程師Shayne,剛加入Instagram不久的Rick組成。沒有用戶數據丟失,但這次事件暴露了我們應該更多利用自動化來工作。
這次的宕機事件雖屬意外,但基于穩定性考慮,我們需要一個更可靠的系統提供服務。一年之后,我們把所有不穩定的腳本轉換為一個全自動系統,并大幅減少了后端團隊的成員。
我們此前對于亞馬遜EBS數據備份系統極度依賴,而我們現在也轉移到了WAL-E和Postgres兩套預寫日志系統。我們也采用了可靠的交叉數據中心,這使得我們可以將數據分布式地放到不同的地方。
提要:利用腳本自動化后臺,需要前期的漫長準備工作,但能夠給工程師們帶來大量的經驗,比如在應對意外事件的時候。我很高興我們有十分優秀的工程師,當我們面對意想不到的災難時,Shayne和Rick二話不說迅速投入了艱苦的戰斗,堪比《火星救援》。
里程碑4:遷移數據
用戶增長里程碑:
2010年10月6號首次上線:2.5萬用戶
2010年11月:1百萬用戶
2012年:3千萬用戶
2013年:2億用戶
2013年時,我們擁有了2億月活躍用戶,每個月超過200億張相片被上傳分享。我們的團隊在成長,但仍然非常小,我們對Instagram社區的活躍感到激動不已。
隨著時間流逝,我們一直在尋找一種能把數據從亞馬遜不知不覺的遷移到Facebook的數據庫中的辦法。(Instagram于2012年4月被Facebook以10億美金收購,他們的站點完整性(Site Integrity)系統可以幫助我們抵抗垃圾內容。但這件事情如果在亞馬遜的云服務器上很難辦到,而越晚遷移數據,難度越大,成本也就越高。毫無疑問,我們必須盡早找到遷移數據的方法,但遷移上億張相片的過程必須是不被用戶感知的、無縫的、不能使服務器關閉。所以遷移開始時就像是在時速100公里的汽車內切換駕駛員。一個由Facebook與Instagram工程師組成的小團隊首先為數據的遷移打造了一個共有網絡,并使用Neti工具將數據從EC2移到了亞馬遜的一個虛擬專用云(VPC),然后謹慎地遷移我們的系統和工具,其中包括通過一個ig命令行工具為數據遷移在Facebook的服務器上搭建了類似的開發環境。最后我們使用最小的代價完成了數據的遷移。
教訓:不要重新發明輪子。通過遷移到Facebook的服務器,我們的服務器運行更加迅速,速度更快,一個效率更高的數據中心,比如我們充分利用的Facebook的反垃圾程序。我們能夠保持靈活,小而美的團隊,歸功于將基礎設施及服務器維護交給了Facebook來做,他們擁有強大的資源及豐富的經驗,升級也更快。
里程碑5:Instagram新趨勢
在今年早些時候對搜索&發現功能進行了改進,讓發現周圍新奇事物的過程變得更加容易及有趣。我們引導用戶添加標簽、地點等元數據(meta data),且建立了一個新的機制用于篩選,并推薦給Instagram用戶新出現的最好內容。
我們第一次采用算法對正在流行的事情進行統計在2010年,也就是Instagram剛剛發布的時候,我們設計了一個“流行”頁面。“流行”的算法非常簡單:算出每一張照片的點贊數,每4小時清零一次。這在我們的用戶數量還很少的時候挺管用,但隨著用戶量的迅速增長,我們需要更細致的算法推薦。
隨著用戶數量迅速增長,我們致力于更加個性化的“發現”功能,我們改為無限滾動的卷軸界面,里面的照片和視頻都是針對每一個用戶定制。在一個月之內,比起非個性化推薦,我們的用戶的瀏覽量增加了5倍。今年,我們把之前的“流行”標簽重新拾起,一個可以快速瀏覽Instagram流行趨勢的功能,與之前的“流行”相仿。正好,我們團隊新加入一個機器學習的專家,使我們有能力通過一系列復雜的算法感知Instagram社區的流行趨勢。
教訓:在一開始,把事情簡化,不代表這永遠有效。我們讓我們的產品持續進化,把我們建立的數據處理團隊應對日漸龐大的社區。
最近五年,對我們來說都是一次激動人心的冒險。在Instagram 5周歲生日之際,停下來回顧往事,展望未來,我堅定的相信我們的用戶數量還會持續增長,我們的產品會變得更棒,在Medium上,從來就不缺乏“回顧我的十年”這樣的文章,我想,五年之后我也能寫一篇,到時再分享人生經驗吧。