Quelles sont les difficultés pour réussir l'industrialisation informatique ?

Impossible de nos jours de monter un projet sans se pencher sur la question de l'industrialisation informatique. Passage obligé pour presque toutes les startups modernes, elle permet de standardiser et d'automatiser la plupart des processus nécessaires au fonctionnement de l'entreprise ou du projet. Cela est valable pour tous les types de projets nécessitant un support informatique : site web, plateforme de commerce en ligne, application smartphone, mais aussi les projets les plus complexes tels que les applications décentralisées fonctionnant sur des blockchains. Qu'est-ce que l'industrialisation informatique, et comment réussir cette étape phare de la vie d'un projet ?

Qu'est-ce que l'industrialisation informatique ?

L'étape d'industrialisation informatique est la dernière à mettre en place avant le lancement définitif d'un projet en ligne. Le but de celle-ci est de rendre le projet ou l'entreprise la plus automatisée possible. Ce faisant, elle devient moins chronophage, plus rationnelle et de ce fait beaucoup plus rentable. Jusqu'ici, le développement pourrait être qualifié d'artisanal. Les développeurs travaillent le code petit à petit, en font des tests manuels, et ils adaptent de manière empirique la taille des serveurs et les corrections à apporter au logiciel. Puis vient enfin l'étape d'industrialisation.

Il faudra commencer logiquement par standardiser tous les formats et les processus, définir des conventions de codage, un langage et un cadre de travail commun pour tous les développeurs qui interviennent sur le projet. Cela facilitera leur travail et évitera les erreurs sur le long terme. Certains logiciels de framework permettent de facilement standardiser un cadre de travail. La standardisation permet en deuxième lieu d'automatiser la plupart des processus, notamment les modifications du code au fil de l'eau. La standardisation préalable facilitera énormément l'écriture des scripts d'automatisation.

Au fur et à mesure de l'évolution du projet, on adaptera alors l'infrastructure informatique, si besoin le nombre de hubs et les pipelines pour garantir la scalabilité. Si les tests sont eux aussi automatisés, on pourra élargir l'automatisation au déploiement de toutes les nouvelles fonctionnalités et applications une fois produites.

Le travail des développeurs ne s'arrête heureusement pas avec l'automatisation des processus de base, et il restera à écrire les scripts de tests en fonction du contexte et de l'utilisation du réseau et du système informatique. Certains outils logiciels permettent d'aider à créer ces tests avant de les automatiser. Ils devront majoritairement concerner la performance du système et surtout la sécurité.

L'industrialisation informatique implique une part de tâches passives après sa mise en route, principalement en ce qui concerne la surveillance et la maintenance. Si un système automatique peut facilement détecter des bugs ou certains actes de malveillance, il faudra garder un œil humain professionnel sur l'ensemble du système pour repérer les axes d'amélioration possibles. Par exemple, étendre les notifications en cas de problème aux membres de l'équipe qui en sont responsables, prévoir un calendrier de maintenance...

Projet IT vs projet Big Data : quelles sont les différences ?

Dans les grandes lignes, les projets Big Data et IT peuvent sembler similaires. Ils diffèrent cependant dans leur finalité et dans l'utilisation faite des données qu'ils manipulent.

Déjà, leurs objectifs divergent. Les projets IT visent à créer et mettre en service des applications et des logiciels, voire des structures informatiques complexes, et tous les processus qui en découlent comme la gestion des systèmes. À titre d'exemple, développer des sites web ou des applications pour smartphone, voire des réseaux sociaux (le développement reste côté IT tandis que la gestion sera plus orientée Data). Les projets Big Data, eux, ont pour but de collecter des données, les stocker, les traiter, sur des volumes conséquents pour en extraire des tendances, que l'on appelle des insights. Ces données sont ensuite utilisées pour améliorer le système (à nouveau côté IT), voire créer des modèles prédictifs ou de prise de décisions. Les projets Data cherchent donc à analyser des comportements d'utilisateurs, détecter des tendances, des risques potentiels, et servent à l'optimisation in fine des logiciels.

Concernant les données traitées, une grande différence apparaît lorsque l'on observe les volumes, vitesses et variétés de celles-ci. Par exemple, les projets IT traitent des volumes modérés et n'utilisent que les données nécessaires à leur activité d'amélioration et de gestion du système. La vitesse de traitement est relativement basse et demeure à échelle humaine, ce qui limite les investissements nécessaires en serveurs et calculateurs puissants. Bien souvent, l'analyse est faite par des humains. Du côté des projets Data, en revanche, la quantité de données traitées atteint bien souvent les Tera, voire les Petabytes. D'où la nécessité d'avoir un débit très élevé et une automatisation poussée pour structurer les bases de données. Celles-ci concernent toutes les données que l'on peut récolter, jusqu'au temps de passage d'un curseur sur un logo. L'analyse d'une telle quantité de data est bien entendu dévolue à des ordinateurs et des serveurs de très grande capacité, très onéreux. La solution se trouve peut-être dans la conception décentralisée, à la manière des blockchains, qui permet à tous les utilisateurs de faire partie d'un même réseau et donc de partager une partie de leurs ressources au bénéfice du bon fonctionnement des logiciels et de la structure informatique.

Les outils et technologies diffèrent aussi entre les deux familles de projets. Là où les projets IT utilisent souvent des serveurs classiques et des bases de données SQL, les Big Data préfèreront se tourner vers de la haute technologie dédiée au stockage et au traitement des quantités colossales de données telles que Hadoop et Spark. En dehors de ces aspects purement techniques, une dernière différence de taille existe entre les deux. Il s'agit simplement des compétences et profils des experts qui travaillent sur le projet, qui influenceront aussi le recrutement pour ces derniers. Ainsi, pour un projet IT, les entreprises auront à cœur de recruter des développeurs classiques, des administrateurs système, des chefs de projet IT... car les compétences requises concernent la gestion des systèmes informatiques et le développement classique de logiciels. Alors que le recrutement pour un projet Big Data se concentrera sur des profils de spécialistes : data engineers, data scientists, architectes data, voire des experts en apprentissage automatique et IA. De ce fait, les diplômes et formations recherchées seront différents. Là où les compagnies IT recruteront en sortie d'école informatique, les Big Data trouveront leurs futurs salariés en sortie de formations spécialisées data, MBA Data Science, ou ingénierie data.

Les deux filières sont certes complémentaires et bénéficient d'un tronc de compétences commun, mais in fine la spécialisation est obligatoire tant les domaines couverts lors de ces formations sont denses.

 

Solutions pour accélérer l'industrialisation informatique

Bien qu'obligatoire, la phase d'industrialisation informatique n'est pas forcément longue et fastidieuse dans la mesure où elle est bien organisée en amont et où certaines étapes importantes sont respectées.

Comme nous l'avons dit plus haut, l'aspect le plus important de l'industrialisation Data ou IT est la gestion de projet. En utilisant les bons outils dès la conception du projet, il sera rapidement possible de passer à l'automatisation. Ces outils concernent surtout l'intégration logicielle et le déploiement continu, ainsi que les tests préliminaires à une mise en ligne définitive. Ces petits détails permettent, si on a eu soin d'y consacrer du temps dès le début, de mettre en place très rapidement des cycles courts et itératifs, tout en permettant aux développeurs de se consacrer à des ajustements simples et rapides en fonction des retours.

À ce sujet, dès la phase de test, il faudra veiller à recueillir tous les feedbacks des utilisateurs, de la version bêta à la version définitive, et leur apporter l'attention qu'ils méritent. Ajuster les logiciels aux utilisateurs avant la mise en ligne définitive peut faire gagner un temps précieux par la suite.

Mais le mot d'ordre à respecter à tout prix pour une industrialisation réussie, c'est la standardisation. Adopter des standards pour tout : la communication, les méthodes de travail, mais aussi les langages de codage, les plateformes de développement... Si deux développeurs peuvent arriver au même résultat sous Python et Java, la différence de langage de programmation pourra poser problème au moment de faire coexister les deux parties du code dans un seul. Penser à définir les standards dès le début du projet évite ce genre de déconvenues. Car reprogrammer une partie d'un logiciel est une étape longue dont toute entreprise se passerait volontiers.

Si le projet s'y prête, particulièrement les projets Data, l'utilisation d'outils de gestion de pipelines de données comme Kubeflow permet de combiner les phases de tests tout en déployant automatiquement sur les serveurs.

En tout état de cause, l'industrialisation d'un projet informatique est une aventure en soi, et doit être préparée bien en avance au travers de réunions auxquelles devront participer tous les acteurs, créatifs comme développeurs, afin de planifier un calendrier efficace.

À ce dernier sujet, planifier toutes les étapes de l'industrialisation avec les développeurs et codeurs peut aussi faire gagner un temps précieux, car en entreprise, toute tâche qui n'est pas soumise à une date butoir aura tendance à s'éterniser, au profit d'autres tâches moins importantes, menant à un risque important de désorganisation au sein des différents services de l'entreprise travaillant sur le projet.