DevOps est apparu comme une philosophie essentielle, comblant le fossé entre le développement logiciel et les opérations informatiques. Cela va bien au-delà de la simple utilisation d'outils DevOps. Une équipe DevOps performante ne se contente pas d'accélérer le processus de livraison, elle en garantit aussi la qualité et la fiabilité. Toutefois, créer une telle équipe nécessite une combinaison harmonieuse d'outils, de culture, de processus, de collaboration et bien plus encore. Quels sont les éléments essentiels d'une équipe DevOps de haut niveau et comment les organisations peuvent-elles les intégrer pour obtenir des résultats optimaux ? Dans le cadre de cette série, nous avons eu le plaisir d'interviewer Dylan Etkin, cofondateur et PDG de Sleuth.
Bonjour Dylan – Pouvez-vous nous raconter votre parcours ?
J'ai commencé ma carrière en tant qu'ingénieur logiciel. J'ai eu la chance de rejoindre une petite start-up, Atlassian, en tant que 20e employé. J'y ai passé 10 ans à énormément apprendre et à voir l'organisation passer de 20 à 1200 personnes. J'ai travaillé comme l'un des trois premiers ingénieurs sur Jira, le premier architecte Jira et responsable technique sur Bitbucket, faisant évoluer ce produit de 40 000 à 2 millions d'utilisateurs.
J'ai quitté Atlassian pour rejoindre une petite start-up, Statuspage. Un an plus tard, Statuspage a été rachetée par Atlassian, et j'ai alors constaté que j'étais revenu au « vaisseau amiral ». Après 3 ans à la tête de cette équipe chez Atlassian, j'ai décidé de me lancer moi-même, créant Sleuth pour transformer en produit ce qui m'a toujours passionné : construire des équipes d'ingénierie efficaces.
J'ai toujours été fasciné par les outils de développement et par l'idée d'aider les équipes à être performantes et à apprendre continuellement.
Qui créditeriez-vous pour vous avoir aidé à atteindre le succès ?
De nombreuses personnes m'ont aidé tout au long de mon parcours. Plus je prends de l'âge, plus je réalise à quel point mon réseau est spécial, et à quel point ses membres sont ouverts à apporter leur aide quand on la demande.
Un exemple qui me vient à l'esprit est John Kodumal, cofondateur et CTO de LaunchDarkly. John et moi étions collègues chez Atlassian. Quand il est parti fonder LaunchDarkly, il a toujours partagé honnêtement son expérience de l'entrepreneuriat.
Lorsque j'ai commencé à me motiver pour créer Sleuth, il m'a soutenu à tous les niveaux. Qu'il s'agisse d'échanger des idées, de conversations franches sur la marche à suivre, ou encore de devenir notre premier client, John m'a toujours accompagné à chaque étape de mon parcours.
Pouvez-vous nous citer trois forces, compétences ou caractéristiques qui vous ont aidé à ce stade de votre carrière ? Et comment d'autres peuvent-ils les développer chez eux ?
- La persévérance. Le talent et l'intelligence ne vous mèneront qu'un certain chemin. Revenir sans cesse sur un problème, encore et encore, est bien plus efficace. La persévérance, même face à de nombreux échecs, a été la clé de ma réussite.
- L'attention au détail. C'est une caractéristique qui m'est toujours venue naturellement. En tant qu'ingénieur, c'est une compétence vitale pour exceller dans les tâches à accomplir. En environnement start-up, elle devient encore plus cruciale. Lorsqu'on guide un produit du concept à la réalité, l'attention au détail fait la différence entre un produit médiocre et un produit adoré des utilisateurs.
- La délégation. Même s'il est nécessaire de pleinement s'approprier son projet, une start-up devient très vite un exercice de recrutement de personnes plus compétentes que soi dans divers domaines, et d'accepter de transmettre ses "briques de Lego" pour laisser les autres réussir et pousser l'entreprise vers l'avant.
Sur quelles compétences travaillez-vous encore actuellement ?
Je travaille toujours sur beaucoup de choses, il y a toujours des compétences à développer. En ce moment, ce qui me préoccupe le plus est l'art d'obtenir le meilleur de ses équipes. Nous sommes tous différents, et savoir comment offrir un environnement où chacun peut donner le meilleur de lui-même est un vrai défi.
Parlons de ce qui fait une équipe DevOps performante. Quels sont les objectifs clés qu'une équipe DevOps pourrait se fixer dans le cadre d'une transformation numérique ?
Les équipes DevOps ont le pouvoir de mener efficacement les travaux du concept à leur déploiement en production. Ainsi, le principal objectif d'une équipe DevOps est de mettre en place des outils, des processus et une culture permettant à chaque développeur de concrétiser rapidement ses idées jusqu'à la mise en production réussie.
Les objectifs qui soutiennent cet objectif principal sont :
- Capacité à définir des tâches en petits lots
- Une chaîne CI/CD entièrement automatisée
- L'observabilité et des environnements de préproduction qui servent de filets de sécurité afin que les développeurs puissent déployer leurs changements en production en toute confiance
- Un processus clair pour savoir quoi faire quand un changement tourne mal. Tout le monde sait comment détecter un échec et remettre le système dans un état fonctionnel
- L'adhésion du reste de l'organisation : PM, Marketing, Support, Ventes et Direction. Une transformation DevOps ne peut réussir sans le soutien de l'ensemble de l'organisation
Y a-t-il des défis ou écueils courants auxquels les équipes DevOps doivent faire attention ?
Ils sont trop nombreux pour tous les énumérer. L'un des plus importants est de reconnaître que pratiquer le DevOps signifie transférer davantage de responsabilités vers le développeur. Cela n'est pas gratuit, et si vous n'investissez pas dans les processus et les outils, vous risquez de créer un système qui ne laissera plus de temps aux développeurs pour avancer sur leurs tâches réelles.
Vous courez également le risque de créer un environnement où les développeurs risquent de s'épuiser rapidement. Il faut garder à l'esprit que les personnes ont une capacité limitée, il est donc essentiel d'être attentif aux dispositions mises en place pour accompagner les développeurs pratiquant le DevOps.
Comment une collaboration et une communication efficaces entre les membres de l'équipe peuvent-elles améliorer la productivité et la réussite d'une équipe DevOps, et quelles pratiques peuvent faciliter cela ?
La communication et la collaboration sont essentielles pour pratiquer le DevOps. Parmi les pratiques importantes, on peut citer :
- Utiliser un outil de gestion des tickets pour tout le travail et inclure ce contexte et ces informations dans les commits et les revues de code
- Revue de code via des pull requests
- Fournir une solution de messagerie instantanée comme Slack à l'équipe
- Notifications de déploiement en équipe dans Slack ou dans l'outil ChatOps utilisé par l'équipe
- Approbations dans Slack pour promouvoir les modifications des environnements de préproduction vers la production
- Notifications individuelles aux développeurs lorsque leurs changements sont déployés et lorsqu'ils ont dépassé les seuils d'échec
- Visibilité pour l'équipe sur les incidents et les périodes où les déploiements doivent être mis en attente
- Démo en équipe avec les chefs de produit (PM) et autres parties prenantes
- Réunions quotidiennes (standups)
Quel est le rôle du CI/CD dans le DevOps, et quelles sont les meilleures pratiques pour mettre en œuvre des pipelines CI/CD afin de garantir un processus de livraison logicielle fluide et fiable ?
Le CI/CD est sans doute le composant d'outillage le plus important pour soutenir une équipe pratiquant le DevOps. L'idéal est que les équipes disposent d'un pipeline de déploiement entièrement automatisé, s'exécutant dans un délai raisonnable, pour que les développeurs n'aient pas à attendre longtemps et puissent accompagner leurs changements jusqu'en production. Il est crucial d'intégrer CI et l'exécution des tests dans ce pipeline idéal. Exécuter une suite de tests robuste sur vos changements en tant que prérequis au déploiement constitue le principal filet de sécurité pour s'assurer que seules de bonnes modifications sont envoyées en production.
Si les équipes ne souhaitent déployer qu'une fois par semaine, il est alors possible que le pipeline de déploiement ne soit pas entièrement automatisé. Cependant, si votre équipe vise au moins un déploiement quotidien, l'automatisation complète devient indispensable, et le déploiement doit être perçu comme une formalité.
Comment encourager une culture DevOps et un état d'esprit adapté contribue-t-il au succès global d'une équipe DevOps, et quelles stratégies les organisations peuvent-elles adopter pour promouvoir cette culture parmi leurs équipes de développement et d'exploitation ?
Pour les développeurs :
- La planification des sprints hebdomadaires ou bi-hebdomadaires permet de dimensionner les tâches et de créer un accord d'équipe sur la façon dont ces tâches s'intègrent dans la fenêtre définie
- L'automatisation du CI sur la branche de publication et la visibilité des résultats à l'ensemble de l'équipe pour maintenir la publication compilable
- Maintenir un rôle "perturbé" au sein de l'équipe afin que chacun sache qui est responsable de garder la branche de publication compilable
- Un des meilleurs moyens pour publier des travaux inachevés consiste à adopter une forme de "feature flagging" (basculement de fonctionnalités)
- Il peut aussi être très efficace de déployer chaque pull request l'une après l'autre. Cette pratique permet d'évaluer la taille du lot de chaque changement pendant la revue de code. Si un lot est trop important, d'autres membres de l'équipe peuvent demander au développeur de scinder sa modification en plusieurs pull requests.
- Disposer de métriques en nombre suffisant, et comprendre leurs normes habituelles pour pouvoir vérifier un déploiement
- Comprendre comment escalader un incident et revenir en arrière si nécessaire
- Être habilité à déployer ses propres modifications sur tous les environnements gérés par l'équipe, de façon rapide et fiable
Pour les PM et designers :
- Inclure un chef de produit (PM) dans la planification pour lui permettre d'exprimer les besoins clients lors de déploiements incrémentaux.
- Mettre en place des bannières de fonctionnalités, permettant de livrer du code sans l'exposer encore aux clients. Cela aide les PM à garder la flexibilité nécessaire tout en permettant aux développeurs d'avancer.
- Avoir un mécanisme convenu pour le feedback et la reprise de travaux, par exemple un ticket assigné directement à un développeur. Une stratégie pour résoudre les travaux incomplets peut être d'adopter des cycles de six semaines.
Pour les Engineering Managers :
- Mettre en place des processus qui facilitent la communication, comme des réunions de planification récurrentes, des revues de code et des démonstrations hebdomadaires.
- S'engager à consacrer du temps d'ingénierie pour maintenir la bonne compilation de la branche de publication. Faire circuler le code signifie aussi investir dans ce nouveau système. Lorsqu'un goulot d'étranglement est identifié, le manager doit permettre à l'équipe de le supprimer (par exemple, corriger des tests CI ayant une instabilité supérieure à 20 %).
- Mettre en place des outils qui permettent de mesurer continuellement les métriques DORA
Pour les dirigeants :
- Faites remonter les indicateurs Accelerate pour vos projets et rendez-les accessibles, avec du contexte, à vos dirigeants.
- Faites remonter votre taux de disponibilité ou équivalent pour vos applications.
- Fournissez à votre équipe dirigeante les mêmes informations de haut niveau concernant les grandes fonctionnalités déployées.
- Si vous êtes un cadre, comprenez que le changement prend du temps. Soyez ferme sur la responsabilité de vos équipes vis-à-vis des objectifs globaux, mais flexible sur la manière dont elles les atteignent. Faites confiance, mais vérifiez.
- Prenez le temps d’expliquer à votre organisation comment vous apportez de la valeur à vos clients. Expliquez le fonctionnement de la livraison incrémentielle, quelles seront les livraisons en "big bang", et comment cette approche permet d’apporter de la valeur plus rapidement aux clients.
Quels sont les composants essentiels d’une équipe DevOps performante ?
1 . L’équipe travaille ensemble dans une culture sans blâme.
Le développement logiciel est un sport d’équipe. Les incidents et erreurs sont des occasions pour l’équipe d’apprendre, et non des opportunités d’accuser. Une culture sans blâme peut s’étendre au-delà des incidents. Lors de la définition d’objectifs d’amélioration, l’équipe peut se concentrer sur les résultats à améliorer plutôt que sur la recherche de coupables parmi les individus ou les processus.
2 . Les déploiements sont une formalité.
Pour livrer par petits incréments et répondre rapidement aux incidents et retours des clients, le déploiement doit être simple et ne pas générer de crainte ou d’anxiété. Si une équipe ne fait pas confiance à ses déploiements, s’ils prennent trop de temps ou nécessitent des interventions manuelles, cela conduit à la peur et l’hésitation, ce qui bloque l’adoption du DevOps.
3 . Les développeurs sont individuellement habilités à porter les changements du concept jusqu’à la mise en production fiable. Le DevOps fonctionne quand on confie la responsabilité du processus complet, du concept jusqu’au lancement, entre les mains des développeurs. Cela permet à l’équipe de découper le travail en petits lots et de délivrer de la valeur au client rapidement, à petite échelle.
4 . L’équipe dispose de filets de sécurité, tels que l’observabilité et des mesures d’échec, afin d’agir avec confiance et rapidité (c’est l’un des nombreux avantages des outils d’observabilité des données). L’époque du « bouger vite et casser des choses » est révolue. Désormais, il faut agir vite, mais de manière fiable. Pour cela, il faut disposer de filets de sécurité automatisés.
5 . L’ensemble de l’organisation s’engage à travailler selon la démarche DevOps.
Quelles tendances émergentes voyez-vous dans le paysage DevOps qui pourraient avoir un impact significatif sur les stratégies de transformation numérique à l’avenir ?
Cela peut sembler évident aujourd’hui, mais les outils d’IA transforment déjà la manière dont les développeurs travaillent et auront sans aucun doute un impact considérable sur la pratique du DevOps à l’avenir. L’IA sera, au minimum, utilisée pour détecter et identifier les défaillances d’une façon qui n’est pas possible aujourd’hui.
Si toutes ses promesses sont tenues, alors elle remplacera entièrement les pipelines de déploiement et de tests complexes que nous connaissons actuellement.
Abonnez-vous à la newsletter The CTO Club pour plus de conseils, de sélections, de questions-réponses et plus encore !
