AICon 深圳站 Keynote 嘉宾官宣!共探AI价值转化的实践路径 了解详情
写点什么

CrowdStrike 为什么从 Scala 迁移到 Go

  • 2015-12-29
  • 本文字数:1346 字

    阅读完需:约 4 分钟

自 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 数据。


感谢魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2015-12-29 18:005942
用户头像

发布了 1008 篇内容, 共 427.8 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

第五章:数据治理启动的契机

数据小吏

数据治理

“全球金牌敏捷课程” · 7月19-20日CSM认证课程 · Jim老师引导讨论AI & Agility话题

ShineScrum

敏捷 敏捷教练 CSM认证 CSM认证培训 敏捷认证

区块链RWA系统开发框架

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

联想,让AI计算发生“钟摆革命”

脑极体

AI

模块化和DID能让UBI惠及所有人吗?

加密眼界

模块化和DID能让UBI惠及所有人吗?

石头财经

高途公布2025年第一季度未经审计业绩及新股票回购计划

财见

英特尔携手壳牌打造浸没式液冷认证方案,助力数据中心迈向高效未来

E科讯

模块化和DID能让UBI惠及所有人吗?

股市老人

0元打造520浪漫神器,用CodeBuddy生成专属爱情故事书

不惑

CodeBuddy

集成学习常用组合策略:让多个模型“合作”得更好

量贩潮汐·WholesaleTide

集成学习

【AI】我没写一行 SQL,就让 AI 查出了销售报表

非晓为骁

人工智能 AI BI MCP

模块化和DID能让UBI惠及所有人吗?

BlockChain先知

区块链RWA软件系统技术方案

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

利用 Amazon Bedrock Data Automation(BDA)对视频数据进行自动化处理与检索

亚马逊云科技 (Amazon Web Services)

深入剖析低代码:实现24小时产品上线的技术机制与优化策略

JeeLowCode低代码平台

低代码 低代码平台 低代码前端 低代码缺点 低代码,

哈尔滨等保、备案单位如何选择备案地?

黑龙江陆陆信息测评部

葵花药业集团与用友战略签约,共启医药行业数智化新篇章

用友BIP

游戏行业DDoS攻击类型及防御分析

网络安全服务

CDN 服务器 带宽 API接口 DDoS 攻击

Addepar完成2.3亿美元G轮融资

财见

产品经理用什么软件做竞品分析?AI生成产品报告攻略奉上!

职场工具箱

AI 产品经理 竞品分析 办公软件 AIGC

一个让成员认可、管理者省心的程序员数据评估系统,应该是什么样子?

思码逸研发效能

研发效能 绩效管理 效能度量 效能管理 研发效能度量

技术贴 | 如何基于 KWDB 快速实现工业物联网智能电表系统设计?

KaiwuDB

数据库·

AI应用及数据驱动型HR决策呈激增态势

财见

内网im聊天软件,私有化部署安全可控

BeeWorks

即时通讯 IM 私有化部署

MCP与华为云CSE珠联璧合,打造AI时代微服务生态引擎

华为云开发者联盟

微服务 华为云开发者联盟 MCP 华为云CSE

深化合作!港华集团数智升级,构建一体化管控平台

用友BIP

云上玩转 Qwen3 系列之三:PAI-LangStudio x Hologres构建ChatBI数据分析Agent应用

阿里云大数据AI技术

大数据 数据分析 人工智能、 PAI LangStudio

MiniMax 新语音模型登顶 TTS 全球榜单;AI 会议笔记 Granola 融资 6700 万美元,估值 2.5 亿丨日报

声网

局域网聊天工具,哪款更适合政企的即时通讯需求?

BeeWorks

即时通讯 IM 私有化部署 局域网

向日葵、ToDesk、网易UU远程、RayLink,哪款远控软件最适合设计师?

科技热闻

CrowdStrike为什么从Scala迁移到Go_Scala_谢丽_InfoQ精选文章