Сфера деятельности: Транспорт

Используемые продукты JetBrains: Qodana, IntelliJ IDEA

Число сотрудников: 200+ сотрудников

Размер команды: 6 команд, 60 разработчиков

Технологии: Java, Spring, Jenkins

Маршрут к стабильному сервису: как Moovit защищает пользователей от сбоев с помощью Qodana

Moovit — создатели самого популярного сервиса для пассажиров. В приложении Moovit на iOS, Android и в браузере легко спланировать поездку на любом виде общественного транспорта. В приложении также можно купить билеты. С момента запуска в 2012 году Moovit помог добраться до места назначения 1,5 миллиардам человек в 3500 городах, в 112 странах и на 45 языках.

Задача: обнаружение NullPointer и других ошибок, способных вызвать сбой сервиса

Для многих общественный транспорт — основной способ добраться до работы, учебы или к врачу, однако пользоваться им бывает сложно и стрессово. Moovit, разработчик самого популярного приложения для поездок на транспорте, доступного на iOS, Android и в браузере, помог 1,5 миллиардам пассажирам с легкостью планировать маршруты и перемещаться по 3500 городам в 112 странах.


Когда столько людей полагаются на транспортную информацию, особенно в реальном времени, стабильность системы крайне важна. Команда инфраструктуры Moovit отвечает за бесперебойную работу всех сервисов компании — как B2В, так и B2С. Им нужно было решить важную задачу: вовремя находить баги, которые просачиваются в продакшен и нарушают работу сервисов. Одной из главных проблем были NullPointerExceptions, которые часто приводят к сбоям и, как считается, сыграли значительную роль в инциденте с CrowdStrike.


Чтобы минимизировать риски для сервиса и поддерживать высокое качество кода, команда начала искать инструмент статического анализа, который бы:

  • Быстро находил ошибки на ранних этапах. Команде нужен был инструмент, который мог бы выявлять ошибки на ранних стадиях разработки и интегрировался с Jenkins и IntelliJ IDEA.
  • Поддерживал кастомные правила и настройки. Нужна была возможность создавать свои правила и следить за тем, чтобы код соответствовал требованиям компании.
  • Был масштабируемым и не слишком дорогим. Решение должно было справляться с большим объемом кода без замедления работы и не бить по бюджету.

Результаты: меньше проблем в продакшене и больше доверия разработчиков

Сейчас Qodana используют шесть команд в Moovit — в общей сложности 60 разработчиков. Поскольку Qodana и IntelliJ IDEA работают на одном анализаторе, они смогли синхронизировать настройки инспекций в обоих инструментах.


Процесс выглядит так:

  1. Разработчики сначала запускают проверки Qodana в IntelliJ IDEA перед коммитом и исправляют найденные ошибки.
  2. Затем они отправляют merge-реквесты в репозиторий Bitbucket. В Jenkins начинается сборка, и если Qodana находит слишком много ошибок или серьезные проблемы, слияние блокируется.
  3. Если Qodana заблокировала слияние, в Slack приход уведомление со ссылкой на отчет в Qodana Cloud. Можно открыть IntelliJ IDEA, применить рекомендованные исправления и сделать коммит заново.

«Большое преимущество в том, что нам не нужно было заранее составлять список проверок. Qodana сама следит за множеством серьезных проблем. Мы просто посмотрели на стандартный список критических ошибок и убрали те, что нам не подходят»,

— Амит Вайнблум, руководитель команды инфраструктуры в Moovit

Меньше инцидентов в продакшене

Команда инфраструктуры заметила, что в продакшене стало меньше проблем, особенно тех, что могли бы быть выявлены на этапе разработки. Это произошло благодаря проактивному поиску и исправлению ошибок на более ранних этапах.

«Мы только начали пользоваться Qodana, но уже дважды она спасла мою команду от работы допоздна. Это положительно сказалось на моей работе, потому что теперь я уверен, что мы узнаем о критических проблемах вовремя»,

— Дор Руд, руководитель команды бэкенд-разработки в Moovit

Проще применять свои правила написания кода

Moovit ценит возможность создавать собственные правила, отличающиеся от стандартных проверок Qodana. Они могут регулировать степень серьезности проблем и легко добавлять или удалять проверки. Это позволяет следить за теми изменениями в коде, которые для них наиболее важны.

Повышение продуктивности разработчиков и принятие стандартов качества кода

Разработчики отметили точность анализа Qodana и хорошую интеграцию с IntelliJ IDEA, которые позволили им быстрее находить и исправлять проблемы, не нарушая рабочего процесса.

Бренд JetBrains сыграл свою роль: разработчики доверяли результатам, так как уже были знакомы с IntelliJ IDEA и другими продуктами компании. Благодаря скорости и надежности Qodana они стали лучше относиться к статическому анализу кода.

«Честно говоря, мы боялись, что разработчики не примут Qodana. Обычно трудно заставить команду следовать корпоративным правилам. Но благодаря хорошей репутации JetBrains и тому, что Qodana находит действительно важные проблемы, разработчики не игнорируют ее и не ищут обходные пути, а просто исправляют ошибки»,

— Дор Руд, руководитель команды бэкенд-разработки в Moovit

«Как и любой инструмент для анализа кода, Qodana — это дополнительный шаг в рабочем процессе, который замедляет цикл разработки, но это временные неудобства. В долгосрочной перспективе она помогает стабилизировать систему и избежать исправлений в последний момент. Мы видим, как меняется подход: команды начинают следовать правилам и спасают себя от бессонных ночей благодаря Qodana»,

— Амит Вайнблум, руководитель команды инфраструктуры в Moovit