Bâtir une usine logicielle pour accroître la vitesse et la qualité de l'innovation

Au risque de perdre sa compétitivité, l’entreprise est aujourd’hui soumise à l’impératif d’opérer une transformation digitale rapide. Il est essentiel de renforcer sa capacité à innover et, surtout, de réduire le temps de mise sur le marché de ses innovations.

Or, un time-to-market performant dépend des délais de livraison des évolutions logicielles

« De nouveaux entrants de petite taille et plus agiles, comme Uber, Netflix ou Airbnb, ont su démarrer très vite, changé la donne et rebattre les cartes de marchés colossaux », renchérit Axel Pavageau, Lead Cloud & Ops chez Ekino, une agence de développement web et mobile. Dans ce contexte, l’industrialisation logicielle et l’intégration continue jouent un rôle essentiel.

De l’artisanat à l’industrie

L’industrialisation de la production logicielle consiste à identifier, au niveau des équipes techniques, toutes les tâches répétitives qui n’apportent pas de valeur ajoutée en vue de les automatiser. Ce faisant, cela libère du temps et des ressources pour la conception et le développement d’innovations.

«  En 2008, nous avons automatisé le déploiement de l’applicatif sur l’architecture distribuée de 20minutes. Ils sont passés d’un déploiement qui prenait une demi-journée à 7 déploiements par jour. Nous sommes parvenus à livrer constamment de nouvelles fonctionnalités qui améliorent les applications. Pour cela, il est indispensable de libérer les ressources au déploiement du nouveau code applicatif. » Témoigne Sébastien Lucas

Qualité, coûts et vitesse : le trio gagnant de l’industrialisation

Adhérer à une telle démarche d’automatisation répond d’abord à une problématique de qualité. Dans le cycle de vie des projets de développement logiciel, bon nombre d’éléments sont encore faits à la main. Et qui dit opération manuelle, dit erreur humaine. L’enchaînement de tâches récurrentes implique un important risque d’engendrer tôt ou tard des anomalies. Or, corriger les erreurs d’exécution coûte cher. On trouve là une seconde incitation à passer à l’automatisation : la baisse des coûts de non qualité. Les « robots » logiciels ne font pas d’erreurs. Qui plus est, ils sont source d’économie de ressources, puisqu’ils vont plus vite que les humains. L’augmentation de la vitesse de production finira de convaincre les entreprises de basculer vers une approche d’industrialisation.

Par où commencer ?

En amont d’une stratégie d’industrialisation, il faut débuter par l’analyse de son processus de développement pour identifier les tâches répétitives. Mais les identifier ne suffit pas. Il convient aussi de les qualifier pour repérer les tâches à la fois les plus fréquentes et les plus coûteuses, afin de maximiser le retour sur investissement quant aux efforts à engager pour passer à l’automatisation.

Pendant cette phase d’analyse, des questions clés sont à se poser : combien de temps est-il nécessaire pour tester un nouveau code applicatif fraîchement livré par un développeur ; combien de temps faut-il pour mettre à disposition tout l’environnement de développement à un nouvel arrivant dans votre équipe ; etc.

De la copie de .zip au déploiement continu

Une usine logicielle se construit par étapes. A cet égard, Axel Pavageau souligne qu’« au fur et à mesure que vous avancez dans la démarche d’industrialisation, l’organisation de votre staff technique va gagner en maturité ».

A chaque étape, une partie du processus de développement se verra automatisée : packaging et tests d’un livrable (intégration continue) ; déploiement d’un nouvel applicatif (scripts shell) ; outillage du déploiement (déploiement automatisé sans intervention manuelle) ; automatisation de la configuration des environnements cibles ;  et passage au déploiement continu pour achever la logique d’industrialisation. Cette dernière phase est sans conteste « la plus complexe », selon Axel Pavageau.

Qui dit automatisation, dit outils

Toutes ces phases de l’industrialisation doivent être orchestrées par des outils qui vont chaîner les différentes étapes. Il est fondamental de bien choisir ses outils d’automatisation et surtout de bien délimiter leur périmètre fonctionnel. « Il existe un foisonnement d’outils d’industrialisation, quel que soit le sujet : gestion de configuration, automatisation de l’infrastructure, ordonnancement, déploiement…, observe Axel Pavageau. La difficulté du choix réside dans le fait que chaque outil couvre souvent un spectre fonctionnel assez large. »

Ne pas sous-estimer l’aspect humain

L’industrialisation est une démarche de changement qui bouscule les habitudes. Tant celles des exploitants (ops) que celles des développeurs. Il faut accompagner ce changement avec beaucoup de pédagogie. La démonstration par l’exemple sur de petits périmètres est capitale pour l’adhésion des équipes. Parvenir à livrer un commit en production, et faire un rollback en quelques minutes si la modification logicielle ne donne pas satisfaction, c’est alléger le poids sur les épaules et libérer l’innovation grâce au try, fail, learn.