行业: 交通
使用的 JetBrains 产品: Qodana, IntelliJ IDEA
组织规模: 200 多名员工
团队规模: 6 个团队,共 60 名开发者
技术栈: Java、Spring、Jenkins
公共交通是通往工作、教育、医疗等场所的生命线,但使用起来却充满挑战和压力。Moovit 是排名第一的通勤者应用的创造者,这款应用提供 iOS、Android 和 Web 版本,可为用户提供智能出行体验,让他们可以使用公共和共享交通工具轻松规划和到达目的地。Moovit 已进入 112 个国家/地区的 3500 多个城市,服务用户超过 15 亿。
由于很多人都依赖于交通信息和引导(包括实时信息),系统的稳定性至关重要。Moovit 的基础架构团队负责维护面向 B2C 和 B2B 项目的 Moovit 整套系统的稳定性。该团队面临的一项重大挑战是如何识别在生产中出现并且会干扰公司服务的问题。他们重点关注的问题之一是检测 NullPointerExceptions
,这是造成中断的常见原因,大家认为它是导致 CrowdStrike 事故的原因之一。
为了降低服务操作的风险并保持较高的代码质量,Moovit 开始寻找一种符合以下标准的静态代码分析工具:
目前,Moovit 的六个团队共 60 名开发者在使用 Qodana。由于 Qodana 基于与 IntelliJ IDEA 相同的分析引擎,Moovit 开发者在 IntelliJ IDEA 与 Qodana 之间同步了其检查配置文件。
最终流程涉及以下步骤:
“主要的优势是我们不需要预定义检查列表,因为 Qodana 会监视各种高严重性问题。我们只需检查其默认的严重问题列表并仅移除与需求不相关的问题。”
— Amit Weinblum,Moovit 基础架构团队负责人
基础架构团队报告的生产问题有所减少,特别是那些本可以在开发过程中发现的问题,这要归功于提早在流程中主动检测并解决问题。
“我们也是刚开始使用 Qodana,但已经出现的两个重大案例让我觉得‘Qodana 拯救了我的团队,让他们不必承受熬夜之苦’。它对我的工作产生了正面影响,因为我现在更加确信我们会在出现重要问题时收到警告。”
— Dor Rud,Moovit 后端团队负责人
Moovit 重视的功能包括可以创建自己的自定义规则(不同于标准 Qodana 检查)、自定义问题严重性、在其配置文件中轻松添加或移除检查,借助这些功能,Moovit 可以监控对他们真正重要的代码更改。
开发者对分析的准确性以及与 IntelliJ IDEA 的集成表示赞赏,这使他们能够更快地解决问题,并且对他们工作流的干扰也减少。
选择 Qodana 的另一个重要因素是 JetBrains 的品牌效应可以帮助说服开发者采用 Qodana 作为额外的代码分析步骤。他们已经是 IntelliJ IDEA 和其他 JetBrains 产品的忠实用户,因此会相信 Qodana 的结果。最后一个因素是 Qodana 的速度和可靠性提高了组织内对静态分析的认可度。
“坦白来讲,引入 Qodana 时,我们担心需要应对一些反对意见。让开发者执行某些公司政策的难度通常非常大。多亏了 JetBrains 积累的良好声誉以及 Qodana 能够报告真正关键的问题,开发者才没有忽视 Qodana 或寻找变通办法,而是解决问题。”
— Dor Rud,Moovit 后端团队负责人
“与任何代码分析工具一样,Qodana 增加了额外的管道步骤并减慢了开发速度,但这只是短期的不便。长远看来,这些举措可以确保生产系统稳定运行,并让开发者能够及时修正管道中的问题。我们看到了模式的转变,在 Qodana 的帮助下,开发团队遵循政策,并且不必承受数日的熬夜之苦。”
— Amit Weinblum,Moovit 基础架构团队负责人