Les missions techniques de l’ingénieur DevOps
L’objectif final de l’ingénieur DevOps est de mettre en place l’automatisation la plus complète possible de la mise en production d’une application ou d’un logiciel, qu’il ait un usage interne à destination des collaborateurs, ou externe (clients, fournisseurs, prestataires, etc.).
Pour cela, il met en place, gère et administre les systèmes informatiques, ce qui implique de :
- définir l’architecture technique des infrastructures d’intégration continue entre les équipements de ses clients et le service d’architecture du centre de service partagé, ou de l’hébergeur de service ;
- Construire, déployer et maintenir la production des infrastructures dans des environnements de Cloud public (comme Azure, AWS ou GCP) ainsi que de Cloud privé ;
- automatiser les déploiements des infrastructures d’intégration et de configuration, comme Ansible, Puppet, Saltstack ;
- mettre en place et automatiser des infrastructures conteneurisées ;
- créer, déployer et maintenir des solutions applicatives dans les différents environnements de Cloud public ou privé et les infrastructures “on premises” à base de VMWare ;
- mettre en place une organisation autour d’un repository central pensé pour les utilisateurs des solutions digitales ;
- assurer le déploiement de Middlewares, comme Apache, MySQL, Tomcat, etc. ;
- procéder aux intégrations continues dans les CI ou CD clients, comme Jenkins, et les développements locaux à destination des développeurs ;
- assurer l’unité et l’homogénéité des systèmes applicatifs ;
- garantir la sécurité des données et outils (centralisation des logs, gestion des mots de passe, synchronisation dans un gestionnaire, etc.) ;
- mettre en oeuvre les différents tests qualité ou de “Gated check-in” pour détecter et traiter les bugs ;
- développer les outils de monitoring et leur configuration afin d’assurer le suivi de la performance des outils.
Cette liste des missions du DevOps n’est pas exhaustive, tant elles peuvent être variées. En effet, selon la structure dans laquelle intervient l’ingénieur DevOps, ses missions peuvent s’étendre à d’autres aspects qui dépassent le cadre du développement applicatif ou la gestion des infrastructures. C’est notamment le cas dans les petites structures qui n’ont pas d’équipes techniques par exemple, et dans lesquelles le DevOps pourra se voir confier une mission plus globale encore.
À contrario, lorsqu’il travaille dans une grande, voire très grande structure, le métier de DevOps peut faire l’objet d’une spécialisation (automatisation, virtualisation, conception d’infrastructures, etc.)
Le métier d’ingénieur DevOps demande donc des connaissances et compétences dans de nombreux domaines, notamment dans les différents langages de programmation utilisés par les développeurs de l’entreprise (back end et front end), les outils de construction et de virtualisation (comme Team Foundation Server ou Docker), le développement de scripts, les différents systèmes d’exploitation, les outils de tests automatisés, ou encore connaître les principales plateformes Cloud (AWS, Azure, GPC, OCI, etc.).
En sus de ses compétences techniques, il doit savoir analyser et comprendre l’environnement complet de l’entreprise (particularités et enjeux du secteur d’activité, normes légales et réglementaires, fonctionnement propre à l’entreprise, etc.) et prendre le recul nécessaire pour proposer des solutions adaptées aux spécificités de chaque structure (taille, moyens humains et technologiques, process en place, freins, etc.).