曾受Google與AT&T捐贈,每月為數百萬使用者提供線上教學服務的非營利教育組織Khan Academy,在自家的技術部落格發文提到,過去10年他們使用Python 2作為後端伺服器的開發語言,但Python 2將在2020年1月壽終正寢,Khan Academy的工程團隊決定開始把部分程式碼移植到Go上

Khan Academy工程團隊提到,要將Python 2搬遷到Python 3上並非簡單的事,由於各種障礙以及舊有的函式庫,使得他們只能切分程式碼,在過渡期間至少需要執行Python 2和Python 3兩個版本的服務,而這些工作會使後端伺服器程式碼執行效能提升10到15%,並且能夠使用Python 3的語言功能。

而對於同樣需要耗費大量的資源進行搬遷,但卻只能獲得相對少的好處,Khan Academy工程團隊想要尋找其他的可能性。他們提到,在一年前嘗試以Kotlin開發了特定的功能,而由於Kotlin高效能的優勢,使得他們節省了一些成本,並運用這些省下來的錢,在其他方面幫助世界各角落的人們學習。

因此工程團隊認為,既然本來就要花費資源搬遷Python 2的應用程式,那便可以挑選另一個效能量級的開發語言,如此不只能夠改善網站回應速度,也可以降低降低伺服器成本。所以除了Kotlin,還研究了其他Google App Engine支援的開發語言,他們發現Go的語法簡單具一致性,且編譯速度非常快,可以讓開發者快速迭代,與Kotlin比起來,Go受更多的編輯器支援。

工程團隊比較兩個語言的效能,在JVM上,Go和Kotlin的效能差不多,Kotlin只有些微領先,但是Go使用的記憶體更少,因此可以縮減規模使用更小的執行個體。工程團隊表示,雖然將應用程式搬遷到Go上比搬遷到Python 3要花更多的資源,但是Go與Python的效能差異太大,光憑效能差異就值得搬遷。

另外,由於新的Go程式碼與原本Python程式需要分開執行,因此工程團隊也決定把原本單體程式,逐漸轉換成服務架構,缺點是將原本程式邏輯拆解成服務,會使各部分的呼叫速度,不如原本單體程式呼叫函式的速度,但是當服務獨立部署,便能使單一服務的部署和測試更加快速,工程師也能花更少的時間在部署工作上。


Advertisement

更多 iThome相關內容