CrowdStrike为什么从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 介绍,他们并不是唯一存在这些痛点的公司,Twitter 也经历过。因此,他得出结论:

使用 Scala,你可以拥有一个非常高效的小型团队,但当你尝试将工程团队的规模扩大到 50 人以上时就非常困难了。

  相比之下,Go 存在的其中一个原因就是让开发人员更高效,限制实现方式的种类。在 Sean Berry 的鼓励下,Jim 经过深入研究发现,Go 可以解决他们使用 Scala 时在组织扩展层面上遇到的许多问题。Go 有诸多优点:构建快、二进制文件小、单文件、更好的工具、内置测试框架、性能分析器、不错的并发模型,等等。他们用 Go 逐个完成了多个项目的开发,能够使用 Go 的开发人员越来越多。开发人员加入任何一个 Go 项目都可以很快弄清楚当前正在进行的工作。使用 Go 还有一个好处,就是招聘更便利了。他们可以招聘任何语言背景的开发人员,然后进行为期数周的 Go 语言培训即可。有位起初抵制迁移的高级工程师在做完他的第一个 Go 项目后告诉 Jim:

那个库,我读了一遍就确切地知道它在做什么了,而那个库的 Scala 版本,我已经读了四遍却仍然不知道它在做什么。我知道你的伙计为什么那么喜欢它了。

  现在,CrowdStrike 大部分的服务都是使用 Go 语言编写的。它们每秒处理几十万条消息,每天处理数 TB 数据。

本文分享自微信公众号 - Golang语言社区(Golangweb)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯社交用户体验设计

面对大型项目,设计师该做些什么

15930
来自专栏知晓程序

程序员如何找到好工作?这款小程序帮你忙

11820
来自专栏无原型不设计

相当便利的UI交互演示工具

做为一个移动端的互联网产品设计师,天天心心念的就是如何做出一款款能让用户爱不释手的应用,想来轻松,做起来点点滴滴都是功能、美观和用户体验的契合难题,在一个个经典...

36250
来自专栏知晓程序

总被外国人问路、搭讪、骚撩?这个小程序帮你轻松应对

21740
来自专栏james大数据架构

你离架构师还有多远?

  软件架构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化,总结下面几点。   在需求阶段,软件架构师主要负责理解和管...

42430
来自专栏编程软文

程序员常用的六大技术博客

23470
来自专栏Crossin的编程教室

获取编程新技能的5个技巧

“你是怎么学会所有这些框架和语言的?”,最近在黑客马拉松上一个朋友问我。 “其实,很简单,只要用你想学的东西去创建一个合适又值得的项目就行了,”我回答说。 “真...

29280
来自专栏养码场

同样是工作3年程序员,为什么别人每月25K你却只有15K?

你有没有静下心来思考过:同样是做了x年Java开发,为什么你的技术比别人差很多?为什么别人每月26K你却只有15K?

38940
来自专栏通信云团队

日活百万的APP,如何应对并发聊天的消息请求?

这些照片,主要有2种风格

46810
来自专栏腾讯云技术沙龙

郭卓惺:互动课堂的搭建实例及相关领域应用

随着在线教育覆盖面的增加,互动课堂授课方式正在向多样化发展,为了适应新形式的发展,腾讯视频云推出了全平台覆盖的互动课堂解决方案。为客户打通了直播、实时音视频、点...

73950

扫码关注云+社区

领取腾讯云代金券