當前位置:
首頁 > 科技 > Instagram是如何利用10個月時間順利遷移到Python 3

Instagram是如何利用10個月時間順利遷移到Python 3

作者丨Michelle Gienow

本文講述了參與到Instagram遷移工作的兩位工程師,Hui Ding和Lisa Guo,他們是如何看待Instagram遷移到Python 3的,以及遷移的原因和好處。以下為譯文。

現在每天在Instagram平台上分享的照片和視頻的數量已經超過9500萬。照片中心社交媒體平台擁有6億多註冊用戶—其中活躍用戶每天大概有4億人。談談規模經營:當規模達到了大多數公司做夢都不敢想的階段以後,Instagram卻選擇了放棄。

儘管如此,令人印象更深刻的是Instagram在後台是通過Python(當然Django也提供了一點幫助)才能為如此大的訪問量提供可靠而穩定的響應。沒錯,就是Python-就是那門非常容易學習,但是通用性卻非常高的編程語言。業內所有人都認為:「是的,Python在很多方面都很出色,但它沒辦法做到可擴展。」

每天四億用戶。Instagram不僅成為了世界上最大的Python用戶,而且該公司最近還將其順利地轉移到Python 3,用戶絲毫沒有體驗到有任何中斷。Instagram工程師Hui Ding和Lisa Guo最近接受了The New Stack的訪問,他們分享了他們對Python的熱愛,並描述了Python 3的遷移體驗。

首先請問,Instagram最初為什麼會選擇使用Python呢?

Hui Ding:我是在Instagram被收購以後,作為第一批進入到Instagram的一員[Instagram成立於2010年,由Facebook在2012年收購]。從那時起,我們從原本的6名工程師變成了300名。儘管最初的時候我並不是其中一員,但是在我們還是一個很小的團隊的初期,我和Instagram的聯合創始人]Mike Krieger密切合作,所以我有很多關於為什麼選擇Python的歷史背景。

其原因與Instagram的「先做簡單事情」的工程座右銘是一致的:對工程師來說,Python是非常容易掌握使用的——它很容易上手,也很容易獲得產品,讓團隊專註於面向用戶的功能。Python簡潔乾淨,有利於實用主義。這是一項已被證實的技術。最後,Python是一門非常流行的語言,這使得工程團隊的發展變得更加容易。

是什麼問題促使Instagram開始考慮了新的堆棧?

Ding:隨著我們的發展,我們發現Python並不是最快的語言,而且越來越明顯的。AWS也越來越傾向於通過部署更多的伺服器來解決速度問題。但是有一點是遞減的——在一定程度上,性能回歸比用戶增長有更多的資源。從現在開始三到五年內,我們估計有10億用戶會加入到社區中,所以是時候開始考慮其他方案了。我們的第一個問題是需要證明切換以後要有足夠高的回報。

Instagram用戶的增長正在穩步上升——但增速並不像伺服器增長那麼快

Lisa Guo:我們面臨著一個非常大的挑戰:在伺服器上增加網路的I/O活動。因此,我們需要一種更並行的方式來處理用戶請求。實際上,PHP和Python是Facebook最受支持的生態系統,其他任何平台既需要學習曲線,又需要對工程師進行大量新知識的培訓。

所以我們做了一個公共投票活動:「與使用PHP進行開發相比,Facebook更應該使用哪一門語言進行伺服器端的開發?」

Ding:如果我們看到了性能得到大幅度的提升的話,那麼我們就會改變,但最終這些成果都沒有展示出來。

所以這些數字並不是很有說服力,我們已經有了很多工具,對Python也投入了很多。使用python/django棧,我們的用戶量也達到了幾億,所以我們決定繼續使用Python。同樣重要的是,我們的工程師非常喜歡Python。這也是他們想要為我們工作的原因。

這就是為什麼團隊選擇python 3的原因嗎?

Ding:當時的決定是,我們是否投入到一個相對成熟的版本,但是卻不會棄用Python的—或者選擇Python的下一個版本?因為下一個版本得到了越來越多的社區支持。這是有道理的,如果我們要在接下來的十年里繼續使用Python,我們應該使用Python的最新版本。在我們決定使用Python 3之後不久,我們宣布在2020年以後將不再支持v2.7。

性能速度不再是主要的問題,取而代之的是何時能推向市場。 – Hui Ding

Guo:使用Python 3有三個主要動機:首先,Python不是那種傳統意義上的語言,所以當我們開始編寫新代碼時,開發過程中會出現很多衝突。所以對我們來說,一個很大的動機就是Python宣布了從v3.5版本開始支持typing-我們的開發者對這個消息感到非常興奮。

其次,網路問題日益成為瓶頸。

第三,Python的速度並不快,但是每一個新版本的運行速度都更快——v2.7,每個人都努力使它運行的更快。隨著新版本的發布,我們會得到Python社區的支持,我們也會對社區做出貢獻。

那遷移的過程是怎樣的?

Guo:總的來說,花了大約十個月,都是處於不同的階段。

首先,團隊修改了大量的代碼。這花了2到3個月的時間,包括將不兼容的第三方包替換為支持Python 3的包,工作規則是「沒有Python 3,沒有新的包」,還刪除了未使用的包。

然後進行單元測試,花了兩個月的時間。然後,我們在四個多月的時間裡進行了緩慢但穩定的新版本的推出。到2017年2月初,我們已經完全運行了Python 3。

Instagram的基礎設施工程團隊花了10個月的時間完成了向Python 3的遷移

團隊究竟是如何實現無縫對接的呢?

Guo:一個重要的因素是,如果你看過了我們是如何遷移的,你就會知道我們會不斷地檢查主分支的小變化,所以我們從來沒有合并過很大的調整。先解決比較多且影響範圍大的bug,然後再迭代更新那些影響範圍小的bug:這就是我們快速前進的同時還保持住穩定性的關鍵方法。

Ding:也並不是說遷移工作如此順利就絕對不會產生任何問題了,因為畢竟這兩個版本是不兼容的。

關鍵是要提前花時間徹底地解決你的問題。我們從分析設計開始,對潛在的好處和權衡有一個清晰的認識。仔細分析問題真的會有好處,然後再做最合理的事情。也就是說,先做簡單的事情並不意味著我們的進展就會延緩,或者我們不承擔風險。

切換:Python 2和Python 3之間的無縫轉換,不會干擾用戶體驗

從那以後,Python 3的表現如何?

Ding:我們沒有對Python 3的性能有預期的期望。因此,當我們看到節省了12%的CPU(使用uswgi/django的原因)和30%的內存(使用celery的原因),我們真的感到非常的驚喜。距離推出僅4個月,我們預計性能不會一直保持10%的提升,但這真的是一個非常好的開端。

我們最常使用的一種機制是Thrift,它是用Python編寫的,我們Facebook的團隊正在努力使其序列化速度更快。

對於那些正在考慮遷移到Python 3的工程師們,你給他們最後的建議是?

Guo:我最了解的是,「我該如何說服經理去使用Python?」由於Python的聲譽緩慢,所以很難出售。 但效率工作是我的專長,Python的效率對我來說是一個很大的吸引力,所以通過改善效率可以緩解由於速度問題帶來的困擾。

Ding:性能速度不再是主要的問題,取而代之的是何時能推向市場。

Guo:所以我的建議是,先從一個小模塊開始,這樣你就能感受到它帶來的好處——那會讓更多的人對改變感興趣。

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python零基礎可以在線學習半年找到高薪工作嗎?
使用Python檢測並繞過Web應用程序防火牆
2017年度15個最好的數據科學領域Python庫
ShutIt:一個基於 Python 的 shell 自動化框架
2017,最受歡迎的 15大Python 庫有哪些?

TAG:Python |

您可能感興趣

NAMM2018展會:——Elk Music Operating System第一時間上手
用於多元時間序列的 Python 模塊——Seglearn
沛納海 Lo Scienziato – Luminor 1950 Tourbillon GMT 陀飛輪兩地時間鈦金屬腕錶
三星公布Galaxy Note 8,Galaxy S8和Galaxy S7的安卓Oreo時間表
聆聽時間美聲,寶璣Classique 7800 Réveil Musical腕錶
三星公布Note 8,Galaxy S8和Galaxy S7的更新Oreo時間表
NAMM 2018 展會:PreSonus Quantum和Quantum 2 音頻介面第一時間上手
三星為 Galaxy Note 8 推時間管理應用 Thrive/滴滴 App 可解鎖小藍單車
我用4年時間解決了Python GIL的一個bug...
「金扣」歸來,Air Jordan 12 「Taxi」 確認上架時間!
Android 9.0來襲!Google宣布2018年度I/O發布會時間
Samsung手機用戶一定要看!官方公布Android 8.0推送時間表
我們第一時間試玩了三星 Galaxy S9,它是唯一匹敵 iPhone X的Android 旗艦
我用4年時間解決了Python GIL的一個bug……
微軟Office 2019發布時間確認 只能在Windows 10上運行
白色版Virgil Abloh x Air Jordan 1發售時間一推再推!
Windows Update更新時間將縮短
難道還要出現排隊鬥毆!Air Jordan 1 「Homeage To Home」發售時間調整!
新年驚喜!三款配色 Yeezy Desert Rat 500 發售時間敲定!?
iPhone6s升級iOS 11系統,用了一段時間後的感受