L’usine logicielle, appelée aussi communément USIL, vient d’abord d’un concept : s’inspirer des bonnes pratiques des usines industrielles dans le but d’optimiser un projet IT et d’en assurer la qualité.
Les nouvelles technologies ne cessent de se développer et ont pris une ampleur considérable ces dernières années. En parallèle, les méthodes de développement informatique continuent, elles aussi, d’évoluer. Le bien connu cycle en V a peu à peu laissé place à des méthodes agiles, offrant aux équipes IT de meilleures marges de manœuvre, plus souples et plus réactives.
Ces nouvelles façons d’aborder un projet informatique ont ouvert de nouvelles perspectives : celles d’outils collaboratifs permettant d’optimiser les étapes d’un développement. Nous parlons là d’usine logicielle.
L’usine logicielle, une organisation complète au service de l’équipe IT
Mettre à disposition des développeurs et des architectes l’ensemble des outils nécessaires à la réussite d’un projet : c’est la vocation de l’usine logicielle. De prime abord, le concept semble simple. Mais pour assurer une organisation agile, anticiper les risques et garantir la réussite du projet, il est essentiel d’effectuer plusieurs étapes après chaque commit. Sur nos projets, ces étapes sont orchestrées par Gitlab CI et effectuées au sein d’un container docker :
Récupération des dépendances maven et npm depuis notre Nexus qui fait proxy vers les principaux repositories publics
Compilation du nouveau code
Exécution des tests, pour vérifier que tout fonctionne bien comme nous l’avions prévu, avec :
des tests unitaires, pour valider le bon fonctionnement de chaque méthode
des tests d’intégration, pour vérifier que l’application fonctionne bien dans sa globalité
Vérification de la qualité du code grâce à Sonar, pour s’assurer que nos règles (couverture de code, formatage, complexité) sont bien respectées et qu’on n’augmente pas la dette technique
Déploiement sur un environnement d’intégration pour pouvoir le tester
Génération automatique de la documentation relative au code que nous avons écrit
L’usine logicielle, pour un travail de qualité
La qualité du code
Dans le développement, le temps de correction d’un problème est proportionnel au temps que nous mettons à le découvrir. L’usine logicielle permet une intégration continue des développements de chacun. Ainsi, lorsqu’un problème survient ou lorsque Sonar détecte une baisse de la qualité, l’équipe peut immédiatement intervenir. Grâce à cette organisation, nous pouvons tout anticiper et facilement contrôler nos développements. C’est essentiel pour ne pas avoir de mauvaises surprises et cela nous permet de respecter les délais et les objectifs que nous nous fixons, tout en garantissant un code de qualité.
Par ailleurs, notre usine logicielle met à disposition un monitoring complet de nos applications. Munin et Xymon nous permettent ainsi de vérifier en un coup d’œil le bon fonctionnement de nos applications, nous alertent par email en cas de dysfonctionnement, et génèrent des graphes pour nous aider à comprendre ce qui a pu poser problème. Logstash et Kibana, quant à eux, nous offrent des tableaux de bord pour simplifier l’analyse des logs. Cette automatisation des process assure à nos projets une efficacité optimale, tout en restant dans un environnement agile et réactif.
La qualité du projet
L’usine logicielle garantit non seulement une qualité de développement, mais nous permet aussi une gestion de projet fluide à tous niveaux en évitant les erreurs humaines. A titre d’exemple, des hooks git empêchent tout commit sur une mauvaise version et un système de merges automatisés permet de s’assurer que tous les développements réalisés dans une version seront également présents sur les versions suivantes.
Cette organisation offre d’importants bénéfices pour un travail en équipe. Auparavant, les développeurs travaillaient davantage en silos et fusionnaient leurs développements plus tardivement.
En méthode Agile, l’usine logicielle permet une collaboration optimale : plus on fusionne rapidement, plus le projet est fiable.
La qualité de la relation client
L’usine logicielle est également un excellent système au service de la relation avec nos clients. Elle offre en effet des outils permettant de mieux visualiser l’état global du projet, ou de savoir rapidement quelles fonctionnalités ont déjà été livrées sur un environnement de recette donné. Ces outils leur permettent de s’assurer que le projet avance dans la bonne direction, de statuer sur des décisions en connaissance de l’environnement et de valider les livraisons rapidement.
Utiliser une bonne usine logicielle, c’est se donner toutes les chances pour qu’un projet informatique soit efficient, optimal et réussi. C’est l’huile dans le moteur de l’équipe, qui permet que tout s’enchaine parfaitement et qu’il n’y ait pas de blocage !
Pierre, Responsable projets et Référent USIL
Comments