Jean Albaladejo

Automatisation

|  Ma défition

L’automatisation est le fait de mettre en place des process pour réaliser des tâches répétitives de façon programmé sans intervention humaine directe.

Automatiser nécessite une bonne aptitude à cerner le périmètre à couvrir et surtout une bonne compréhension des enjeux à vouloir automatiser des tâches répétitives.

En entreprise, l’automatisation est souvent recherchée car elle permet de gagner du temps qui pourra être employée dans des tâches complexes, créatives ou encore qui nécessitent un jugement humain. Dans le métier de développeur, l’automatisation est fortement recherchée. Par exemple, l’automatisation est très utile dans ces domaines : initialisation de l’environnement, formatage et templating du code, lancement des tests, déploiement de l’application ou encore déploiement de documentation.

Le site du gouvernement www.francenum.gouv.fr a publié un article « L’automatisation : une solution indispensable pour gagner du temps et mieux gérer sa TPE PME ». Il met en avant les avantages d’utiliser l’automatisation au sein d’une entreprise. Tout d’abord, il explique que l’automatisation permet de faire gagner du temps considérable et qu’elle réduit fortement le risque d’erreur liée à une mauvaise manipulation humaine.  Il est aussi évoqué que l’automatisation permet d’améliorer l’expérience client (je détaillerai cet aspect avec un exemple concret dans la partie « Mes éléments de preuve »). Enfin, l’article aborde le fait qu’automatiser permet d’uniformiser des pratiques. L’uniformisation en entreprise permet d’apporter de la clarté et un suivi plus simple des données traitées lors de ces process automatiques. 

|  Mes éléments de preuve

Voici deux anecdotes durant lesquelles j’ai eu l’opportunité de mettre en oeuvre cette compétence.

Lors du projet « Standardisation d’un flow », l’enjeu principal était de permettre d’automatiser un flow spécifique qui comportait de nombreuses actions manuelles réalisées par nos clients.  L’objectif principal était qu’ils puissent utiliser le flow général standard qui est très automatisé. Pour cela j’ai développé des scripts Python et Perl qui sont lancés successivement au sein d’un pipeline Jenkins. Ces différents scripts permettent de standardiser l’historique des données auparavant traitées manuellement. Une fois toutes les données uniformisées de façon automatique, les clients peuvent enfin utiliser le flow standard automatique.  L’uniformisation des données historiques auraient été très compliquées à réaliser manuellement car cela aura été long et le risque d’erreur humaine élevé.

Les clients m’ont fait un retour que cette standardisation du flow historique est pour eux un grand gain de temps. Avant l’automatisation, un traitement d’un produit sur le flow historique mettait 2 à 3 jours de travail pour une personne. Maintenant, le traitement s’effectue en moins d’une demi-journée avec une majorité du temps qui correspond à l’exécution automatique sans besoin d’action humaine.

Lors du projet « Solution de monitoring », j’ai automatisé le déploiement de la solution. Pour cela, j’ai utilisé Subversion, Tuleap et Jenkins. L’enjeu était que la version en production soit automatiquement alignée avec la dernière révision du code. J’ai créé un déclencheur avec Tuleap qui est notre outil interne de ticketing et qui possède aussi des fonctionnalités pour interagir avec nos codes versionnés avec Subversion. J’ai ensuite créé un pipeline Jenkins qui est automatiquement déclenché via Tuleap lorsqu’un développeur pousse une nouvelle révision. Le pipeline Jenkins est rédigé en Groovy et lance une succession de tâches. Tout d’abord, la dernière révision du code est téléchargée dans un Workspace Jenkins, puis des tests spécifiques aux outils Prometheus sont lancés, en cas de réussite l’application est ensuite déployée en production. Enfin, des tests automatiques d’acceptance sont lancés pour voir si tous les services de la solution sont opérationnels.

Avant ce projet, la solution n’avait de déploiement automatisé et il fallait effectuer des actions manuelles pour gérer les services à chaque modification. Le fait d’automatiser le déploiement et les tests a permis de rendre la solution plus fiable avec moins d’interruption des services. Cela a aussi augmenté grandement le confort en termes de développement.

|  Mon autocritique

J’ai pu effectuer plusieurs tâches d’automatisation depuis mon alternance BAC+3 « Adminstrateur Système Devops » dans des langages différents : Groovy, Bash, Python et Perl.

Je pense avoir un niveau « confirmé », il faut que je continue à m’exercer au sein d’autres projets afin d’obtenir le niveau « Expert ». J’ai eu la chance de pouvoir effectuer de l’automatisation à travers différents langages de codage.

En tant qu’expert en ingénierie Logiciel spécialisation DevOps, je dois être en mesure de mettre en place des process automatisés afin de contribuer à l’enjeu principal du DevOps qui est de réduire le « Time to market ».  Le « Time to market » est le délai entre la conception d’une solution et sa mise à disposition sur le marché.

Je conseillerai à quelqu’un qui souhaite effectuer de l’automatisation de réaliser en amont une analyse entre une estimation de l’effort à fournir et le bénéfice attendu. En effet, la mise en place de l’automatisation peut parfois être longue et complexe et il faut s’assurer que le bénéfice attendu soit cohérent. Par exemple, il ne serait pas judicieux d’automatiser une tâche peu récurrente qui prendrait seulement 5 minutes à faire une fois par mois, par un process automatisé qui prendrait 3 semaines de travail temps plein à mettre en place.

|  Mon évolution dans cette compétence

Je souhaiterai continuer à évoluer en utilisant d’autres outils dédiés à cette pratique : Ansible et Terraform. J’ai déjà utilisé ces outils mais jamais dans un cadre de production en entreprise.

Il est prévu que je travaille lors de la fin de mon alternance sur l’automatisation de déploiement des exportateurs de monitoring avec l’outil Ansible. Aujourd’hui les exportateurs Python sont exécutés via des crontabs mais de créer un playbook qui sera exécuté lors du déploiement de la solution et qui permettrait de lancer les exportateurs sur les cibles souhaitées de façon automatiques.

J’aimerai aussi un jour avoir l’opportunité de pouvoir travailler avec Terraform en production de gérer des provisionnements de ressource de façon automatique dans le cloud. Ainsi, je souhaiterai suivre la formation « Automatisation des services cloud avec Terraform et Ansible » proposé par Telecom Paris.