CrowdStrike為什么從Scala遷移到Go

jopen 8年前發布 | 7K 次閱讀 Scala 程序員 Go語言

自2012年開始,安全公司 CrowdStrike 就使用Scala開發他們的應用程序,Scala成為其技術棧的重要組成部分。但隨著工程師團隊由早期的5人擴大到現在200多人,他們決定遷移到Go語言技術棧。近日,該公司云計算工程部門的高級主管 Jim Plush 撰文 闡述了他們采取這一舉措的原因。

不過,Jim首先聲明,遷移到Go并不是說將Scala從CrowdStrike的技術棧中完全清除出去,實際上,它可以補Go之不足。Scala是CrowdStrike機器學習/分析技術棧的重要組成部分。它可以同該公司使用的Java項目進行互操作,而且能夠提供不錯的DSL供分析師使用。也就是說,Scala更多地成為一種專用工具,而不是核心開發語言。

作為一名技術負責人,Jim希望代碼具有很好的可維護性,開發人員很容易跨項目工作,而新進人員很容易跟上項目的進展。早在2009年尚在其他公司工作時,Jim就開始認識到Scala的擴展性問題。他們遇到了一個本可以幾分鐘解決的Bug,但卻因為編寫那段代碼的人正在度假而花了幾個小時。這說明團隊出現了分化。Jim指出,這種分化同Scala語言本身的特點有關。通常,Scala開發人員分化成了兩個陣容:一個將其看作“更好的Java”;一個將其視為“ Applicative Functors ”。前者喜歡Scala的簡潔性以及那些讓它比Java更惹人愛的標準特性;后者則關注函數式編程。這兩種風格沒有優劣之分,但確實會導致團隊的分化。而且,隨著工程團隊的日益壯大,這種分化會愈加明顯,新進人員要跟上項目的進展就更加不易了。

當然,這不是他們遷移到Go的全部原因。他們還有許多與構建環境相關的痛點,如 SBT 、IDE環境、構建時間長、JAR包老而大,等等。另外,大量的 ScalaZ 概念和長時間的前期培訓降低了開發效率。據Jim介紹,他們并不是唯一存在這些痛點的公司,推ter也經歷過。因此,他得出結論:

使用Scala,你可以擁有一個非常高效的小型團隊,但當你嘗試將工程團隊的規模擴大到50人以上時就非常困難了。

相比之下,Go存在的其中一個原因就是讓開發人員更高效,限制實現方式的種類。在 Sean Berry 的鼓勵下,Jim經過深入研究發現,Go可以解決他們使用Scala時在組織擴展層面上遇到的許多問題。Go有諸多優點:構建快、二進制文件小、單文件、更好的工具、內置測試框架、性能分析器、不錯的并發模型,等等。他們用Go逐個完成了多個項目的開發,能夠使用Go的開發人員越來越多。開發人員加入任何一個Go項目都可以很快弄清楚當前正在進行的工作。使用Go還有一個好處,就是招聘更便利了。他們可以招聘任何語言背景的開發人員,然后進行為期數周的Go語言培訓即可。有位起初抵制遷移的高級工程師在做完他的第一個Go項目后告訴Jim:

那個庫,我讀了一遍就確切地知道它在做什么了,而那個庫的Scala版本,我已經讀了四遍卻仍然不知道它在做什么。我知道你的伙計為什么那么喜歡它了。

現在,CrowdStrike大部分的服務都是使用Go語言編寫的。它們每秒處理幾十萬條消息,每天處理數TB數據。

 來自: http://www.infoq.com/cn/news/2015/12/CrowdStrike-Scala-Go

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!