Industria: Transporte

Productos de JetBrains utilizados: Qodana, IntelliJ IDEA

Tamaño de la organización: +200 empleados

Tamaño del equipo: 6 equipos, 60 desarrolladores en total

Pila tecnológica: Java, Spring, Jenkins

El camino hacia un transporte fiable: cómo Moovit evita incidentes de producción con el análisis de código de Qodana

Moovit es el creador de la aplicación número 1 para desplazarse al trabajo. Las aplicaciones para iOS, Android y web de Moovit ofrecen a los usuarios una experiencia de movilidad inteligente para llegar fácilmente a su destino utilizando cualquier medio de transporte público y compartido. Los usuarios de transporte público pueden beneficiarse de los billetes móviles para planificar, pagar y viajar con los servicios de transporte público. Moovit, introducido en 2012, ya da servicio a más de 1500 millones de usuarios en más de 3500 ciudades de 112 países y en 45 idiomas.

El desafío: detección de punteros nulos y otros errores que pueden causar caídas

El transporte público es fundamental para el trabajo, la educación, la sanidad y mucho más, pero puede resultar complicado y estresante. Moovit, el creador de la aplicación número 1 para desplazarse al trabajo, disponible para iOS, Android y web, ofrece a los usuarios una experiencia de movilidad inteligente para planificar y llegar fácilmente a su destino utilizando el transporte público y compartido. Moovit ha guiado a más de 1.00 millones de usuarios en más de 3500 ciudades de 112 países.


Con tanta gente dependiendo de la información y orientación sobre el transporte público, incluida la información en tiempo real, la estabilidad del sistema es fundamental. El equipo de infraestructura de Moovit es responsable de mantener la estabilidad de todo el sistema de Moovit, tanto para proyectos B2C como B2B. El equipo se enfrentó al importante desafío de identificar problemas que llegaban a la producción e interrumpían los servicios de la empresa. Una de sus principales preocupaciones era la detección de NullPointerExceptions, que son causas comunes de interrupciones y que se cree que han influido de algún modo en el incidente de CrowdStrike.


Para reducir los riesgos de las operaciones de servicio y mantener una alta calidad del código, Moovit empezó a buscar una herramienta de análisis estático de código que cumpliera los siguientes criterios:

  • Análisis rápidos para detectar los problemas en una fase temprana. El equipo necesitaba una herramienta que pudiera identificar los problemas al principio del ciclo de desarrollo, con integraciones para las barreras de calidad de Jenkins e IntelliJ IDEA.
  • Capacidad de crear reglas y configuraciones personalizadas. El equipo necesitaba poder definir reglas personalizadas y aplicar convenciones de programación específicas a su empresa.
  • Escalabilidad y rentabilidad. La solución tenía que gestionar la gran base de código de Moovit sin sobrecargas de rendimiento significativas ni costes desorbitados.

Resultados: menos problemas en producción, más confianza de los desarrolladores

Por el momento, seis equipos de Moovit utilizan Qodana, con un total de 60 desarrolladores. Dado que Qodana se basa en el mismo moto de análisis que IntelliJ IDEA, los desarrolladores de Moovit han sincronizado sus perfiles de inspección tanto en IntelliJ IDEA como en Qodana.


El proceso resultante implica los siguientes pasos:

  1. Al principio, los desarrolladores ejecutan comprobaciones previas de Qodana en IntelliJ IDEA y resuelven cualquier problema.
  2. A continuación, envían solicitudes de fusión (MR) al repositorio de Bitbucket. Se inicia un trabajo de compilación en Jenkins, donde una barrera de calidad adicional de Qodana bloquea el código si supera un determinado número de incidencias o si contiene problemas de alta gravedad.
  3. Si la fusión fue bloqueada por la barrera de calidad de Qodana, el desarrollador recibe un mensaje de Slack con un enlace al informe en Qodana Cloud. A continuación, utilizan la función Open in IDE para aplicar las correcciones recomendadas en IntelliJ IDEA antes de volver a confirmar el código.

«La ventaja clave era que no necesitábamos predefinir una lista de inspecciones, ya que Qodana supervisa una amplia gama de problemas de alta gravedad. Simplemente revisamos su lista predeterminada de problemas críticos y solo eliminamos los que no eran relevantes para nuestras necesidades.»

— Amit Weinblum, jefe de equipo de infraestructura en Moovit

Reducción del número de incidentes de producción

El equipo de infraestructura informó de menos problemas de producción, especialmente los que podrían haberse detectado durante el desarrollo, gracias a la detección y resolución proactivas en una fase más temprana del proceso.

«Aún somos bastante novatos con Qodana, pero ya ha habido dos casos importantes en los que he pensado: "Han salvado a mi equipo de trabajar hasta altas horas de la noche". Ha tenido un impacto positivo en mi trabajo, ya que ahora tengo más confianza en que nos alertará de los problemas críticos.»

— Dor Rud, jefe de equipo de backend de Moovit

Aplicación más fácil de las normas críticas del código

Moovit valoró la posibilidad de crear sus propias reglas personalizadas (diferentes de las inspecciones estándar de Qodana), personalizar la gravedad de los problemas y añadir o eliminar fácilmente inspecciones de su perfil, todo lo cual les permitía supervisar los cambios de código que realmente les importaban.

Aumento de la productividad de los desarrolladores y aceptación de las mejores prácticas de calidad del código

Los desarrolladores apreciaron la precisión del análisis y la integración con IntelliJ IDEA, que les permitió resolver los problemas más rápidamente y con menos interrupciones en su flujo de trabajo.

Otro factor importante fue el poder de la marca JetBrains, que ayudó a convencer a los desarrolladores para que adoptaran Qodana como un paso adicional de análisis de código. Confiaban en sus resultados porque ya eran entusiastas de IntelliJ IDEA y otros productos de JetBrains. En última instancia, su velocidad y fiabilidad mejoraron la percepción positiva del análisis estático dentro de la organización.

«Francamente, nos preocupaba la reacción violenta que tendríamos que gestionar al introducir Qodana. Suele ser muy difícil imponer una política de empresa a los desarrolladores. Gracias a la buena reputación de JetBrains y al hecho de que Qodana informa de problemas realmente críticos, los desarrolladores no ignoran Qodana ni buscan soluciones alternativas, sino que solucionan los problemas.»

— Dor Rud, jefe de equipo de backend de Moovit

«Como cualquier herramienta de análisis de código, Qodana añade un paso adicional al proceso y ralentiza el ciclo de desarrollo, pero es un inconveniente a corto plazo. A largo plazo, ha estabilizado nuestro sistema de producción y ha permitido a los desarrolladores evitar solucionar problemas demasiado tarde en el proceso. Estamos viendo el cambio de paradigma, en el que los equipos de desarrollo siguen las políticas y se ahorran unas cuantas noches de insomnio con Qodana.»

— Amit Weinblum, jefe de equipo de infraestructura en Moovit