Domaine : Transport

Produits JetBrains utilisés : Qodana, IntelliJ IDEA

Taille de l'organisation : Plus de 200 employés

Taille de l'équipe : 6 équipes, 60 développeurs au total

Pile technologique : Java, Spring, Jenkins

La voie vers un transport en commun fiable : comment Moovit prévient les incidents de production grâce à l'analyse de code de Qodana

Moovit est le créateur de l'application de transport en commun n°1. Les applications iOS, Android et web de Moovit offrent aux utilisateurs une expérience de mobilité intelligente pour se rendre facilement à destination en utilisant n'importe quel mode de transport public et partagé. Les usagers des transports en commun peuvent bénéficier de la billetterie mobile pour planifier, payer et utiliser les services de transport en commun. Lancé en 2012, Moovit dessert désormais plus de 1,5 milliard d'utilisateurs dans plus de 3 500 villes à travers 112 pays, dans 45 langues.

Le défi : détecter les pointeurs nuls et autres failles pouvant provoquer des pannes

Les transports publics sont une bouée de sauvetage pour l'emploi, l'éducation, les soins de santé et bien plus, mais ils peuvent s'avérer complexes et stressants à l'usage. Moovit, le créateur de l'application de transport public n°1, disponible sur iOS, Android et le web, offre aux utilisateurs une expérience de mobilité intelligente pour planifier et naviguer facilement vers leur destination en utilisant les transports publics et partagés. Moovit a guidé plus de 1,5 milliard d'utilisateurs dans plus de 3 500 villes à travers 112 pays.


Avec autant de personnes qui dépendent des informations et des conseils sur les transports en commun, notamment des informations en temps réel, la stabilité du système est essentielle. L'équipe d'infrastructure de Moovit est chargée de maintenir la stabilité de l'ensemble du système de Moovit pour les projets B2C et B2B. L'équipe a été confrontée à un défi de taille, consistant à identifier les problèmes qui se posaient en production et perturbaient les services de l'entreprise. L'une de leurs principales préoccupations était la détection des NullPointerExceptions, qui sont des causes courantes de pannes et qui auraient joué un rôle dans l'incident CrowdStrike.


Pour réduire les risques liés aux opérations de service et maintenir une qualité élevée du code, Moovit a commencé à rechercher un outil d'analyse de code statique répondant aux critères suivants :

  • Analyses rapides pour une détection précoce des problèmes. L'équipe avait besoin d'un outil capable d'identifier les problèmes dès le début du cycle de développement, avec des intégrations pour les murs qualité Jenkins et IntelliJ IDEA.
  • Possibilité de créer des règles et des configurations personnalisées. L'équipe devait être capable de définir des règles personnalisées et d'appliquer les conventions de codage spécifiques à son entreprise.
  • Évolutivité et rentabilité. La solution devait gérer la vaste base de code de Moovit sans surcharge de performances significative ni coûts exorbitants.

Résultats : moins de problèmes en production, plus de confiance de la part des développeurs

Actuellement, Qodana est utilisé par six équipes chez Moovit, soit un total de 60 développeurs. Étant donné que Qodana est basé sur le même moteur d'analyse qu'IntelliJ IDEA, les développeurs Moovit ont synchronisé leurs profils d'inspection entre IntelliJ IDEA et Qodana.


Le processus qui en résulte implique les étapes suivantes :

  1. Les développeurs exécutent d'abord des vérifications Qodana avant le commit dans IntelliJ IDEA et résolvent tous les problèmes.
  2. Ils envoient ensuite des requêtes de fusion vers un référentiel Bitbucket. Un travail de build commence dans Jenkins, où un mur qualité Qodana supplémentaire bloque le code si le nombre de problèmes dépasse un certain seuil ou s'il contient des problèmes de haute gravité.
  3. Si la fusion a été bloquée par le mur qualité Qodana, le développeur reçoit un message Slack avec un lien vers le rapport dans Qodana Cloud. La fonctionnalité Open in IDE permet ensuite d'appliquer les correctifs recommandés dans IntelliJ IDEA avant de valider à nouveau le code.

« Le principal avantage était que nous n'avions pas besoin de prédéfinir une liste d'inspections, car Qodana surveille un large éventail de problèmes de haute gravité. Nous avons simplement passé en revue sa liste des problèmes critiques par défaut ; nous n'avons supprimé que ceux qui ne correspondaient pas à nos besoins. »

— Amit Weinblum, chef d'équipe infrastructure chez Moovit

Réduction du nombre d'incidents de production

L'équipe d'infrastructure a signalé moins de problèmes de production, en particulier ceux qui auraient pu être détectés pendant le développement, grâce à une détection et une résolution proactives, plus tôt dans le processus.

« Nous sommes encore relativement novices avec Qodana, mais déjà deux cas majeurs se sont présentés, où je me suis dit : « Ils ont évité à mon équipe de rester travailler tard le soir ». Cela a eu un impact positif sur mon travail, car j'ai maintenant davantage confiance dans le fait que nous serons alertés des problèmes critiques. »

— Dor Rud, chef d'équipe backend chez Moovit

Application plus facile des règles de code critiques

Moovit a apprécié la possibilité de créer ses propres règles personnalisées (différentes des inspections Qodana standard), de personnaliser la gravité des problèmes et d'ajouter ou de supprimer facilement des inspections de son profil, ce qui a permis de surveiller les modifications de code vraiment importantes.

Amélioration de la productivité des développeurs et acceptation des meilleures pratiques en matière de qualité du code

Les développeurs ont apprécié la précision de l'analyse et l'intégration avec IntelliJ IDEA, qui leur ont permis de résoudre les problèmes plus rapidement et avec moins de perturbations dans leur workflow.

Un autre facteur important a joué un rôle : la puissance de la marque JetBrains, qui a contribué à convaincre les développeurs d'adopter Qodana comme étape supplémentaire d'analyse de code. Ils faisaient confiance à ses résultats, car ils étaient déjà fans d'IntelliJ IDEA et d'autres produits JetBrains. En fin de compte, sa rapidité et sa fiabilité ont renforcé la perception positive de l'analyse statique au sein de l'organisation.

« Franchement, nous étions inquiets des réactions négatives que nous aurions à gérer lorsque nous avons introduit Qodana. Il est généralement très difficile d'obliger les développeurs à respecter une politique d'entreprise. Grâce à la bonne réputation de JetBrains et au fait que Qodana signale des problèmes véritablement critiques, les développeurs n'ignorent pas Qodana et ne recherchent pas de solutions de contournement ; ils résolvent les problèmes. »

— Dor Rud, chef d'équipe backend chez Moovit

« Comme tout outil d'analyse de code, Qodana ajoute une étape de pipeline supplémentaire et ralentit le cycle de développement, mais c'est un inconvénient à court terme. Sur le long terme, il a stabilisé notre système de production et permis aux développeurs d'éviter de résoudre les problèmes trop tard dans le pipeline. Nous assistons à un changement de paradigme, dans lequel les équipes de développement suivent les politiques et s'épargnent quelques nuits blanches grâce à Qodana. »

— Amit Weinblum, chef d'équipe infrastructure chez Moovit