DevOps : êtes-vous fait pour le poste ?
L'ingénieur DevOps occupe un poste essentiel dans l'informatique moderne. Ce rôle nécessite une personne capable de réaliser des tâches techniques, mais aussi de gérer plusieurs équipes avec des priorités distinctes.
DevOps devient presque incontournable dans les entreprises. En l'absence d'une formation dédiée claire, les services informatiques doivent identifier, chez les nouvelles recrues comme chez les employés expérimentés, la bonne combinaison de talents requis.
Une carrière d'ingénieur DevOps peut vous attirer si vous disposez de compétences techniques sur différentes plateformes, ainsi que de compétences humaines, telles qu'une communication efficace et opportune.
Dans le cadre d’un déploiement continu, et pour réussir la convergence entre développement, tests et exploitation, les entreprises ont besoin de trouver des personnes dont les compétences sont donc très nombreuses. Pourtant, aucun plan de carrière formel n'existe à ce jour pour pourvoir ce poste.
Une maîtrise des plateformes
Les services IT sont généralement organisés autour d'un concept de pile ; les stacks combinent les systèmes d'exploitation, les services et les outils associés, qui permettent de développer, de déployer et de prendre en charge les applications. Entre lesdites piles, on constate souvent un certain chevauchement ou des compétences transversales. Les ingénieurs DevOps les plus efficaces sont ceux qui démontrent le plus grand savoir-faire dès lors qu'il s'agit d'administrer la pile que l'entreprise utilise déjà ou envisage d'utiliser. Les trois principales « stacks » sont Windows Server, Linux et celles de type Cloud.
La première comprend généralement des OS tels que Windows Server 2012 R2 et Windows Server 2016 ; des plateformes de gestion, telles que System Center et ses diverses déclinaisons, comme Operations Manager ; ainsi que les applications complémentaires, telles que SQL Server pour la base de données ou SharePoint pour la collaboration.
Une pile Linux comprend de nombreux autres outils open source, tels que Chef et Puppet, ainsi que des infrastructures elles-aussi open source, comme OpenStack, qui permettent de créer un Cloud privé. Depuis quelques années, les piles open source attirent de plus en plus l'attention en raison de la prolifération des machines virtuelles (VM) qui fait augmenter le coût des contrats de gestion des licences et de la maintenance logicielle lorsqu’elles sont dans un cadre propriétaire.
Opter pour une solution Cloud nécessite que l'ingénieur DevOps possède une bonne connaissance des services (Azure, Google Cloud, AWS), des options d'administration et de la structure tarifaire du fournisseur Cloud retenu.
Les compétences techniques font partie du poste
Les compétences de l'ingénieur DevOps sont notamment l'élaboration, le déploiement et l'exploitation des logiciels, ainsi que l'administration de la stack. Il doit, en outre, développer une grande expertise sur de nombreux outils spécifiques et adopter de bonnes pratiques.
Savoir programmer. Activité qui combine développement (Dev) et opérations (Ops), le DevOps peut désigner des choses différentes selon les entreprises. Toutefois, au final, la discipline implique de développer un nouveau code et de le mettre en production rapidement. Pour faire fonctionner les déploiements côté opérations, les ingénieurs DevOps ne sont pas nécessairement chargés d'écrire le code de base, mais ils doivent le comprendre, développer des scripts et s'attaquer aux intégrations (par exemple, faire en sorte que la nouvelle version du code communique avec la base de données). Les ingénieurs DevOps doivent, en outre, afficher de solides connaissances des différents langages informatiques, notamment PHP, Python, Perl et Ruby. Ils sont également formés aux outils de gestion de l'intégration, tels que Jenkins, Apache Maven ou Apache Ant.
Savoir gérer le changement. Vitesse et fluidité sont les marques de fabrique d'une culture DevOps. En effet, un code change constamment et il faut de solides compétences en gestion des versions et en collaboration pour assembler les bons composants et élaborer une version qui fonctionne correctement. Les ingénieurs DevOps utilisent des outils tels que Git, Perforce et Apache Subversion pour contrôler les versions et les révisions. Pour mieux déployer ce code en constante évolution, nombre d'ingénieurs DevOps adoptent la gestion des configurations ; une fonction presque systématiquement automatisée afin d'accélérer le rythme de diffusion des nouvelles versions. De nombreux ingénieurs DevOps sont des experts d'outils tels que Puppet, Chef et Vagrant.
Savoir mettre à disposition et déployer. Les ingénieurs DevOps ne se contentent pas de superviser le code au fil du développement ; ils fournissent aussi une passerelle qui facilite le transfert des nouvelles versions côté opérations. Les compétences s'étendent donc à l'infrastructure et au matériel informatiques : des serveurs et solutions de stockage aux réseaux. Sachant que l'ingénieur DevOps connaît l'intégralité de la stack, il peut guider la mise à disposition et le déploiement de chaque nouvelle version. Ce savoir-faire s'étend généralement à la création et la maintenance de services fiables et disponibles.
Savoir évaluer et surveiller. Un ingénieur DevOps est un consultant accompli : il est capable d'évaluer objectivement le fonctionnement de chaque nouvelle version, de procéder selon les besoins à des ajustements des ressources, d'utiliser différents outils pour mesurer les performances de la charge de travail et analyser les résultats des logs, puis de partager ces informations avec toute l'équipe afin d'améliorer les prochaines livraisons. Les ingénieurs DevOps connaissent différents outils qui surveillent les performances tant en local que sur des plateformes Cloud publiques, notamment Nagios, Zabbix, Sensu, Amazon CloudWatch, Splunk ou encore New Relic.
Communiquer et gérer le personnel
Les compétences DevOps ne s'arrêtent pas à un savoir-faire technique. Réussir dans ce rôle implique des compétences humaines que l'on retrouve chez les dirigeants et les responsables.
Connaître les plateformes de prise en charge. Les logiciels modernes tiennent davantage de l'intégration de plateformes et de services que de la programmation de base. Ainsi, aujourd'hui, plus personne ne crée de fonction de messagerie ou de base de données ; le code vient s'intégrer à des plateformes existantes, telles qu'Exchange, SQL Server, Redis, ou à d'innombrables autres progiciels exploitant des API. Si ces plateformes font généralement partie de la pile métier, les ingénieurs DevOps doivent tout de même savoir comment les exploiter. Par exemple, si l'entreprise rattache un nouveau produit logiciel à une base de données, l'ingénieur DevOps devra savoir configurer cette base et créer des requêtes SQL spécifiques.
Savoir gérer et communiquer. Un ingénieur DevOps est un poste de haut niveau qui travaille à l'échelle de plusieurs disciplines. Il est aussi à l'aise avec les développeurs, le personnel informatique et les cadres dirigeants. En d'autres termes, ses compétences font de lui un expert en communication, ainsi qu'un cadre à part entière, capable de joindre le geste à la parole, de comprendre le point de vue de chaque équipe, et de fédérer ces professionnels disparates de manière productive afin de garantir un développement continu rapide qui donnera les meilleurs résultats.
Savoir remédier aux problèmes. Le processus DevOps implique un grand nombre de personnes et d'intérêts contradictoires. Aussi, avec le temps, d'innombrables problèmes ne manquent pas de survenir. Ces problèmes comprennent des conflits de personnes, des changements de rôles et de responsabilités au sein de l'entreprise, ou la rupture de processus métier. Un ingénieur DevOps doit évaluer ces situations et rechercher des solutions constructives qui permettront d'atteindre les objectifs tout en satisfaisant les différentes parties prenantes. Par exemple, si un cycle de diffusion est retardé par des phases manuelles inefficaces, l'ingénieur DevOps peut monter un dossier technique et opérationnel en vue d'investir dans une forme d'automatisation.
Tenir le rôle
L'ingénieur DevOps hérite souvent d'un des rôles les plus difficiles. Les personnes qui relèvent ce défi avouent en tirer des gratifications qui dépassent largement le cadre du seul salaire. Certains ingénieurs DevOps ressentent un frisson à l'idée d'être impliqués dans l'intégralité du cycle de livraison des logiciels. D'autres trouvent leur satisfaction dans l'éclatement des cloisonnements traditionnels et dans la fusion entre développement et exploitation. D'autres encore expriment leur talent dans la rationalisation des processus et l'optimisation du déploiement et de l'exécution des applications.
Lire aussi
Au final, le véritable défi pour l'ingénieur DevOps consiste tout d'abord à obtenir le rôle. Il n'existe aucun plan de carrière formel et la liste des compétences est longue. L'ingénieur DevOps n'existe pas en soi ; le candidat évolue et se développe dans ce rôle ; il commence généralement en tant qu'informaticien démontrant un fort intérêt pour la programmation, ou à un poste de développeur investi dans les tests et le déploiement du code.
Dans les deux cas, le candidat s'affranchit largement des cloisonnements classiques, et opère dans plusieurs disciplines pour parvenir à une vision holistique de l'activité et du développement des produits logiciels qui s'y rattachent.
Les ingénieurs DevOps ne se contentent pas d'acquérir de nouvelles compétences en programmation, outils d'automatisation et autres tactiques de mise à disposition des VM. Ils collaborent avec plusieurs équipes, sont à l'écoute des idées et des préoccupations de leurs collaborateurs, et recherchent des moyens d'améliorer les processus et les méthodes qui permettent la réalisation des tâches. Il ne s'agit pas simplement de logiciels, mais plutôt de processus ; des processus qui font avancer l'activité et apportent un bénéfice stratégique.