Articles
Tutoriels
Guides interactifs
Qu'est-ce qu'un ingénieur DevOps ?
Un ingénieur DevOps doit posséder des compétences de développement et opérationnelles, ainsi que des compétences interpersonnelles pour aider à combler les fossés entre les équipes cloisonnées.
Tom Hall
Expert DevOps
Lorsqu'une organisation est ancrée dans une structure cloisonnée où les équipes de développement et opérationnelles travaillent en vase clos, l'implémentation de DevOps implique souvent une refonte organisationnelle. Il faut les bonnes personnes, la bonne culture et les bons outils pour implémenter DevOps avec succès. Cependant, l'un des obstacles les plus courants à l'implémentation de DevOps est le manque de compétences des employés, selon l'enquête Atlassian sur les tendances DevOps de 2020.
L'ingénieur DevOps constitue l'un des rôles clés lors d'une restructuration DevOps. Il doit posséder un large éventail de compétences qui couvrent à la fois le développement et les opérations, mais aussi les compétences interpersonnelles nécessaires pour combler les fossés entre les équipes cloisonnées.
Qu'est-ce qu'un ingénieur DevOps ?
Un ingénieur DevOps est un technicien informatique généraliste qui doit parfaitement maîtriser le développement et les opérations, y compris la programmation, la gestion de l'infrastructure, l'administration système et les chaînes d'outils DevOps. Les ingénieurs DevOps doivent également posséder des compétences interpersonnelles, car ils s'efforcent de décloisonner l'entreprise pour créer un environnement plus collaboratif.
Les ingénieurs DevOps doivent bien comprendre l'architecture, le provisionnement et l'administration des systèmes courants. De plus, ils doivent être familiarisés avec les outils et pratiques traditionnels des développeurs, tels que l'utilisation du contrôle de version, la réalisation de revues de code et l'implémentation des résultats, l'écriture de tests unitaires, ainsi qu'une connaissance des principes Agile.
Rôles et responsabilités
Le rôle d'un ingénieur DevOps varie d'une organisation à l'autre, mais implique invariablement des compétences hybrides qui associent release engineering, provisionnement et gestion des infrastructures, administration des systèmes, sécurité et expertise DevOps.
Découvrir les solutions
Des outils DevOps pour toute l'équipe
Formations
Découvrez les éléments essentiels d'Atlassian DevOps
Le release engineering inclut le travail nécessaire pour développer et déployer du code applicatif. Les outils et processus exacts varient largement en fonction de nombreux facteurs, comme le langage dans lequel le code est écrit, le degré d'automatisation du pipeline, ainsi que le fait que l'infrastructure de production soit sur site ou dans le cloud. Le release engineering peut impliquer la sélection, le provisionnement et la maintenance d'outils de CI/CD, ou l'écriture et l'actualisation de scripts de développement/déploiement personnalisés.
Le provisionnement de l'infrastructure et l'administration des systèmes incluent le déploiement et la maintenance des serveurs, du stockage et des ressources réseau nécessaires à l'hébergement des apps. Pour les organisations disposant de ressources sur site, cela peut inclure la gestion de serveurs physiques, de dispositifs de stockage, de commutateurs et de logiciels de virtualisation dans un data center. Pour une organisation hybride ou entièrement basée dans le cloud, cela comprendra généralement le provisionnement et la gestion d'instances virtuelles des mêmes composants.
L'expertise DevOps est souvent sous-évaluée ou totalement négligée, mais il s'agit sans doute du rôle le plus important d'un ingénieur DevOps. Le passage à une culture DevOps peut dérouter les membres de l'équipe d'ingénierie. En tant qu'expert DevOps, il appartient à l'ingénieur DevOps de contribuer à vanter les mérites de la méthodologie et à former les membres de l'organisation.
Les 9 grandes compétences d'un ingénieur DevOps
Les compétences techniques requises d'un ingénieur DevOps varient en fonction de la structure de l'équipe, des technologies et de l'ensemble d'outils utilisés. Toutefois, de solides compétences en matière de communication et de collaboration sont essentielles. Il est également important pour un ingénieur DevOps de parfaitement comprendre tous les composants d'un pipeline de livraison, et de connaître les avantages et les inconvénients des outils et services disponibles.
1. Communication et collaboration
Il est important pour un ingénieur DevOps de communiquer et de collaborer efficacement avec les équipes, les responsables et les clients. Ces compétences dites « interpersonnelles » ou « soft skills » sont souvent négligées et sous-évaluées, mais l'implémentation fructueuse de DevOps dépend largement de la qualité et de la quantité de feedback tout au long de la chaîne de valeur.
2. Administration système
Un ingénieur DevOps aura de l'expérience dans l'administration des systèmes, comme le provisionnement et la gestion de serveurs, le déploiement de bases de données, la surveillance de la sécurité, l'application de correctifs aux systèmes et la gestion de la connectivité des réseaux internes et externes.
3. Expérience avec les outils DevOps
Étant donné qu'il est essentiel d'utiliser les bons outils pour maîtriser les pratiques DevOps, l'ingénieur DevOps doit comprendre une variété d'outils et être capable de les utiliser. Ces outils couvrent le cycle de vie DevOps, de l'infrastructure au développement, à la surveillance et à l'exploitation d'un produit ou d'un service.
4. Gestion des configurations
On attend souvent des ingénieurs DevOps qu'ils aient de l'expérience avec un ou plusieurs outils de gestion des configurations tels que Chef, Puppet ou Ansible. De nombreuses organisations ont adopté ces outils ou des outils similaires afin d'automatiser les tâches d'administration des systèmes, comme le déploiement de nouveaux systèmes ou l'application de correctifs de sécurité aux systèmes déjà en cours d'exécution.
5. Conteneurs et orchestration de conteneurs
Grâce à la conteneurisation, une technologie popularisée par Docker, le code de l'app et son environnement d'exécution sont regroupés dans la même image. Les outils de gestion des configurations traditionnels sont donc moins nécessaires. Dans le même temps, la gestion des conteneurs pose ses propres défis, et il devient nécessaire pour l'ingénieur DevOps de posséder une expérience dans la catégorie d'outils appelés « orchestrateurs de conteneurs » (p. ex., Docker Swarm ou Kubernetes).
6. Intégration et déploiement continus
L'intégration et la livraison continues (CI/CD) sont des pratiques essentielles d'une approche DevOps axée sur le développement logiciel, et sont rendues possibles par la multitude d'outils disponibles. La fonction la plus fondamentale de tout outil ou ensemble d'outils de CI/CD est d'automatiser le processus de développement, de test et de déploiement des logiciels.
Les ingénieurs DevOps devront généralement être expérimentés dans la configuration et le déploiement d'un ou plusieurs outils de CI/CD, et devront généralement travailler en étroite collaboration avec le reste de l'organisation de développement pour s'assurer que ces outils sont utilisés efficacement.
7. Architecture système et provisionnement
Un ingénieur DevOps doit être capable de concevoir, de provisionner et de gérer des écosystèmes informatiques, qu'ils soient sur site ou dans le cloud. Il est important de comprendre l'infrastructure IaC (Infrastructure-as-Code), un processus de gestion informatique qui applique les bonnes pratiques du développement logiciel DevOps à la gestion des ressources d'infrastructure dans le cloud. Un ingénieur DevOps doit comprendre comment modéliser l'infrastructure système dans le cloud grâce à Amazon Web Services (AWS), AWS CloudFormation ou Terraform.
8. Connaissances en programmation et en création de scripts
De nombreux administrateurs système traditionnels sont expérimentés dans le domaine de l'écriture de scripts Shell pour automatiser les tâches répétitives. Un ingénieur DevOps doit aller au-delà de l'écriture de scripts d'automatisation et comprendre les pratiques avancées de développement, mais aussi comment implémenter des pratiques de développement Agile comme les revues de code et l'utilisation du contrôle de version.
9. Compétences en gestion collaborative
La collaboration entre les équipes est une composante fondamentale d'une stratégie DevOps efficace, quelle que soit la structure spécifique de l'organisation. Que l'équipe d'ingénierie soit uniquement divisée par rôles, ou qu'il existe des équipes distinctes pour le développement de fonctionnalités, l'assurance qualité, ou encore DevOps, l'ingénieur DevOps doit agir en tant que coach et collègue dans toute l'organisation, et collaborer avec de nombreuses personnes différentes.
Par exemple, l'un des retours les plus précieux sur un investissement DevOps est la possibilité de fournir un feedback plus rapide aux développeurs. Un ingénieur DevOps devra souvent travailler avec l'équipe de QA (qu'il s'agisse de testeurs manuels ou de développeurs qui écrivent des règles d'automatisation des tests) pour accélérer les méthodologies de test, les rendre plus efficaces et plus performantes.
Parallèlement, les développeurs peuvent avoir besoin du soutien des ingénieurs DevOps lorsqu'ils s'efforcent d'améliorer le processus de développement et de déploiement du code applicatif.
L'équipe DevOps : autres rôles et responsabilités
Évangéliste DevOps
Il s'agit d'un expert DevOps qui promeut et développe les pratiques DevOps au sein de l'organisation. L'évangéliste DevOps a généralement une solide formation technique, mais le rôle est axé sur la communication interpersonnelle et l'amélioration des processus.
Responsable des livraisons/comité consultatif sur les changements
Les organisations qui ne sont pas encore passées à DevOps ou qui n'en sont qu'aux prémices de leur parcours peuvent avoir un groupe distinct appelé comité consultatif sur les changements (CAB) ou un rôle de responsable des livraisons.
L'objectif de ces rôles est de s'assurer que tout nouveau logiciel applicatif livré en production répond aux normes de qualité et de sécurité et qu'il a reçu les approbations appropriées de la direction.
Ces rôles étaient particulièrement importants lorsque les livraisons de logiciels étaient plus risquées. Toutefois, ils le sont moins (et sont parfois obsolètes) avec l'application de stratégies telles que les tests automatisés et les « dark launch ».
Expert en automatisation
Chaque ingénieur DevOps doit posséder une expertise en automatisation. Pourtant, il n'est pas rare qu'une organisation ait un rôle distinct d'expert ou d'ingénieur en automatisation. Il peut s'agir d'une personne dont l'objectif est de gérer les outils de CI/CD ou de développer et d'actualiser des suites de tests automatisés.
développeur de logiciel
Dans la plupart des cas, le titre de développeur logiciel est donné aux personnes qui écrivent du code applicatif utilisé dans le front-end et/ou le back-end. Ce sont ces personnes qui ont été historiquement décrites comme des « programmeurs informatiques » avant l'essor de la pensée Agile.
Assurance qualité
L'équipe de QA est chargée de détecter les défaillances des logiciels. Historiquement, les ingénieurs de QA se concentraient sur les tests manuels du nouveau code applicatif pour garantir son fonctionnement de base (« smoke tests »), qu'il ne crashait pas les fonctionnalités existantes (« tests de régression ») ou qu'il n'entrait pas en conflit avec d'autres nouvelles fonctionnalités (« tests d'intégration »).
De plus en plus, les organisations complètent ou remplacent les testeurs manuels par le rôle d'ingénieur de développement logiciel dans un environnement de test (SDET). Le SDET se concentre sur le test du nouveau code applicatif avant qu'il ne soit livré en production. Cependant, plutôt que de tester manuellement le logiciel, il se concentre sur l'écriture de code pour automatiser les tests.
Ingénieur en sécurité
Les organisations qui n'ont pas encore adopté la notion d'intégration totale de la sécurité et de la conformité dans leurs processus de planification et de développement ont souvent une personne ou une équipe responsable de la sécurité. Cela s'avère souvent contre-productif, car la sécurité est reléguée au second plan. De plus, il est beaucoup plus difficile de sécuriser un logiciel après sa conception, son développement et son déploiement que de le concevoir en gardant à l'esprit la sécurité.
Allez au-delà d'un rôle unique
DevOps est une pratique qui nécessite un virage culturel, de nouveaux principes de gestion ainsi que l'utilisation d'outils technologiques. Un ingénieur DevOps est au cœur de la transformation DevOps et doit posséder un large éventail de compétences pour opérer ce virage. Pourtant, la plupart des organisations auront besoin de plusieurs ingénieurs DevOps. En effet, elles devront faire appel à des techniciens généralistes et spécialisés qui travailleront en étroite collaboration pour implémenter les pratiques DevOps et améliorer le cycle de vie de développement (SDLC). Un ingénieur DevOps contribue à éliminer les silos pour faciliter la collaboration entre différents experts et entre les chaînes d'outils afin de tirer pleinement parti de DevOps.
Atlassian Open DevOps fournit aux équipes tout ce dont elles ont besoin pour développer et exploiter des logiciels. Les équipes peuvent créer la chaîne d'outils DevOps de leur choix, grâce à des intégrations avec les principaux fournisseurs et les principales apps du Marketplace. Parce que nous croyons que les équipes doivent travailler comme elles le souhaitent, et non comme le souhaitent les fournisseurs. Essayer maintenant.
Partager cet article
Thème suivant
Lectures recommandées
Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.