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 des outils DevOps. Une équipe DevOps performante ne fait pas qu’accélérer le processus de livraison, elle 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 de bien plus encore. Quels sont les éléments clés d’une équipe DevOps d’excellence, 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, co-fondateur 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 d’intégrer une petite start-up, Atlassian, en tant que 20ème employé. J’y ai passé 10 ans à apprendre énormément et à voir l’organisation passer de 20 à 1200 personnes. J’étais l’un des 3 premiers ingénieurs sur Jira, le premier architecte Jira, puis responsable ingénierie sur Bitbucket, faisant passer ce produit de 40 000 à 2 millions d’utilisateurs.
J’ai quitté Atlassian et rejoint une petite start-up, Statuspage. Un an plus tard, Statuspage a été rachetée par Atlassian, et je me suis retrouvé à nouveau dans le vaisseau-mère. Après 3 ans à diriger cette équipe chez Atlassian, j’ai décidé de me lancer à mon compte, en créant Sleuth afin de transformer en produit ce qui a toujours été ma passion : construire des équipes d’ingénierie efficientes.
J’ai toujours été fasciné par les outils pour développeurs et par le fait d’aider les équipes à être efficaces et à apprendre en continu.
À qui attribuez-vous le mérite de vous avoir aidé à réussir ?
Beaucoup de personnes m’ont aidé sur le chemin. Plus je prends de l’âge, plus je réalise à quel point mon réseau est spécial et comme tous sont disponibles pour aider lorsqu’on le leur demande.
Un exemple marquant est John Kodumal, co-fondateur et CTO de LaunchDarkly. John et moi étions collègues chez Atlassian. Lorsqu’il est parti fonder LaunchDarkly, il a toujours partagé ouvertement son expérience de start-up.
Quand j’ai commencé à me motiver pour lancer Sleuth, il m’a soutenu à tous les niveaux. Que ce soit pour confronter les idées, avoir des discussions ouvertes sur la manière d’avancer ou encore en s’inscrivant comme notre premier client, John m’a toujours aidé à chaque étape de mon parcours.
Pouvez-vous partager avec nous trois forces, compétences ou caractéristiques qui vous ont permis d’arriver là où vous êtes aujourd’hui ? Comment les autres peuvent-ils activement développer ces domaines chez eux ?
- La persévérance. Le talent et l’intelligence ne suffisent pas à eux seuls. Revenir sans cesse à un problème est bien plus puissant. La persévérance, même face à de multiples échecs, a toujours été déterminante pour moi.
- L’attention aux détails. C’est une caractéristique qui m’a toujours été naturelle. En tant qu’ingénieur, c’est une compétence essentielle qui permet de réaliser les tâches qui se présentent à vous avec excellence. Dans un environnement de start-up, cette compétence devient encore plus critique. Lorsqu’on accompagne un produit de la vision à la réalité, l’attention portée aux détails fait toute la différence entre un produit moyen et un produit que les utilisateurs adorent.
- La délégation. Aussi engagé que l’on doit être dans son entreprise, une start-up devient très vite un exercice d’embauche de personnes plus compétentes que soi dans de nombreux domaines et d’accepter de leur « passer ses briques » pour que d’autres réussissent et fassent avancer l’entreprise.
Quelles compétences cherchez-vous encore à développer aujourd’hui ?
Je travaille en permanence sur de nombreux sujets, il n’y a jamais de pénurie de compétences à améliorer. Ce qui me préoccupe le plus actuellement, c’est l’art de tirer le meilleur de son équipe. Chaque personne est différente, et savoir offrir un environnement où chaque individu peut donner le meilleur de lui-même est un vrai défi.
Parlons d’avoir une équipe DevOps performante. Quels sont les objectifs clés qu’une équipe DevOps pourrait identifier dans le cadre d’une transformation numérique ?
Les équipes DevOps ont le pouvoir de transformer efficacement une idée en mise en production réussie. Par conséquent, l’objectif numéro un d’une équipe DevOps est de construire l’outillage, le processus et la culture qui permettent à chaque développeur de transformer rapidement une idée en un lancement réussi.
Les objectifs qui soutiennent la réalisation de cet objectif principal sont :
- Capacité à définir le travail en petits lots
- Un pipeline CI/CD entièrement automatisé
- Observabilité et environnements de préproduction qui servent de filet de sécurité afin que les développeurs puissent déployer leurs changements en production en toute confiance
- Un processus clair pour réagir en cas de problème. Tout le monde sait comment détecter les échecs et rétablir le système à un état fonctionnel
- L’adhésion du reste de l’organisation, PM, Marketing, Support, Ventes et dirigeants. Les équipes ne parviendront pas à réussir une transformation DevOps sans l’appui de toute l’organisation
Existe-t-il des défis ou des pièges courants auxquels les équipes DevOps doivent prêter attention ?
Il y en a trop pour tout lister. Ce qui me marque particulièrement, c’est de reconnaître que pratiquer le DevOps signifie qu’on délègue davantage de responsabilités au développeur. Ce transfert n’est pas gratuit, et si l’on n’investit pas dans les processus et l’outillage, on risque de construire un système qui ne laisse aucun temps aux développeurs pour accomplir leur véritable travail.
Vous courez également le risque de créer un environnement où les développeurs s'épuiseront rapidement. Il faut se rappeler que les personnes n'ont qu'une capacité limitée ; il est donc essentiel d'être attentif aux moyens mis en place pour soutenir les développeurs pratiquant le DevOps.
Comment une collaboration et une communication efficaces entre membres d'équipe peuvent-elles améliorer la productivité et le succès d'une équipe DevOps, et quelles pratiques peuvent y contribuer ?
La communication et la collaboration sont indispensables pour pratiquer le DevOps. Parmi les pratiques importantes, on trouve :
- Utiliser un outil de gestion des tâches pour tout le travail et inclure ce contexte ainsi que ces informations dans les commits et les revues de code
- Effectuer des revues de code via des pull requests
- Fournir une solution de messagerie instantanée telle que Slack pour l’équipe
- Notifications de déploiement en équipe via Slack ou l’outil ChatOps de l’équipe
- Approbations via Slack pour promouvoir des modifications depuis des environnements de préproduction vers la production
- Notifications individuelles pour les développeurs quand leurs changements sont déployés ou en cas de non-respect des conditions d’échec
- Visibilité en équipe sur les incidents et les périodes durant lesquelles les déploiements doivent être différés
- Présentations d’équipe avec les chefs de projet et autres parties prenantes
- Réunions quotidiennes stand up
Quel rôle joue le CI/CD dans le DevOps, et quelles sont les meilleures pratiques pour mettre en œuvre des pipelines CI/CD fiables afin d’assurer un processus de mise en production logiciel fluide et fiable ?
Le CI/CD est sans doute l’élément 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é exécuté en un temps raisonnable, afin que les développeurs n’attendent pas trop longtemps et puissent amener rapidement leurs changements en production. Il est essentiel d’inclure l’intégration continue et l’exécution des tests dans ce pipeline idéal. Lancer une suite de tests robuste sur vos changements avant le déploiement est un filet de sécurité primordial pour garantir le déploiement de modifications fiables.
Si les équipes ne souhaitent déployer qu’une fois par semaine, il est possible de posséder un pipeline de déploiement qui n’est pas entièrement automatisé. Cependant, si vous souhaitez déployer au moins une fois par jour, tout doit être entièrement automatisé, et les déploiements doivent devenir une formalité.
Comment favoriser une culture et un état d’esprit DevOps contribue-t-il à la réussite d’une équipe DevOps, et quelles stratégies les organisations peuvent-elles utiliser pour promouvoir cette culture auprès de leurs équipes de développement et d’exploitation ?
Pour les développeurs :
- La planification des sprints chaque semaine ou toutes les deux semaines aide à définir la taille des tâches et à instaurer un accord d’équipe sur leur inclusion dans cette période.
- Exécution automatique du CI sur la branche de livraison, avec visibilité globale des résultats, pour aider l’équipe à garder la branche de livraison opérationnelle
- Désigner un rôle "perturbateur" dans l’équipe pour qu’il soit clair que quelqu’un est chargé de maintenir la branche de livraison en état de fonctionnement
- L’un des meilleurs moyens de livrer du travail incomplet consiste à adopter une forme de "feature flagging" (basculement de fonctionnalités).
- Déployer chaque pull request séparément est également très efficace. Cette pratique permet d’examiner la taille du lot de modifications en même temps que la revue de code. Si le lot est trop volumineux, d’autres membres de l’équipe peuvent demander au développeur de découper ses modifications en plusieurs pull requests.
- Disposer de suffisamment de métriques et comprendre leurs valeurs normales pour pouvoir valider un déploiement
- Savoir comment escalader ou revenir en arrière en cas de besoin
- Être habilité à déployer ses propres changements sur tous les environnements maintenus rapidement et sans échec
Pour les chefs de projet et designers :
- Inclure un chef de projet dans la planification afin qu’il puisse exprimer les besoins des clients lors des déploiements incrémentaux.
- Mettre en œuvre des "feature flags" pour permettre le déploiement de code non encore accessible aux utilisateurs finaux. Cela donne la flexibilité nécessaire aux PM tout en permettant aux développeurs d’avancer rapidement.
- Établir un mécanisme de feedback et de reprises clairement défini, tel qu'une tâche assignée directement à un développeur. Pour résoudre la question du travail incomplet, une stratégie consiste à adopter des cycles de six semaines.
Pour les responsables techniques :
- Mettez en place des processus favorisant la communication : réunions régulières de planification, revues de code et démonstrations hebdomadaires.
- S’engager à consacrer du temps d’ingénierie au maintien des branches de livraison. Garder le code fluide suppose également d’alimenter ce nouveau système. Lorsqu’un goulot d'étranglement est identifié, le responsable doit permettre à l’équipe de le supprimer (par exemple, corriger des tests CI ayant plus de 20 % d’instabilité).
- Mettre en place des outils permettant de mesurer continuellement les métriques DORA
Pour les cadres dirigeants :
- Mettez en avant les indicateurs Accelerate pour vos projets et rendez-les disponibles, avec contexte, à vos dirigeants.
- Affichez la disponibilité ou l’équivalent pour vos applications.
- Fournissez à votre équipe de direction les mêmes informations de haut niveau sur les grands ensembles de fonctionnalités qui sont livrées.
- Si vous êtes cadre, comprenez que le changement prend du temps. Soyez ferme quant à la responsabilité de vos équipes pour l’atteinte des objectifs globaux, mais flexible quant à 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 en quoi consiste la livraison incrémentale, ce qui sera livré en un "big bang", et comment cette façon de travailler peut vous permettre d’apporter de la valeur plus rapidement à vos clients.
Quels sont les composants essentiels d’une équipe DevOps performante ?
1 . L’équipe travaille ensemble dans une culture de non-blâme.
Le développement logiciel est un sport d’équipe. Les incidents et les erreurs sont des opportunités pour les équipes d’apprendre, pas des occasions de blâmer. Une culture de non-blâme peut aller au-delà des incidents. Lors de la fixation des objectifs d’amélioration d’équipe, une équipe peut se concentrer sur l’amélioration des résultats plutôt que de blâmer les individus ou les processus pour expliquer pourquoi les choses ne sont pas au niveau attendu.
2 . Les déploiements sont un non-événement.
Pour livrer par petits incréments et répondre rapidement aux incidents ainsi qu’aux retours clients, le déploiement doit être simple et ne générer aucune peur ni anxiété. Si une équipe ne fait pas confiance à ses déploiements, ou s’ils sont trop longs ou impliquent des étapes manuelles, cela engendrera de la crainte et de l’hésitation, ce qui empêchera les équipes d’adopter DevOps.
3 . Les développeurs sont individuellement habilités à mener les changements du concept au lancement fiable en production. DevOps fonctionne lorsque la responsabilité de l’ensemble du processus, du concept au lancement, est confiée aux développeurs. Cela permet à votre équipe de scinder le travail en petits lots et de livrer rapidement de la valeur au client, de façon incrémentale.
4 . L’équipe dispose de filets de sécurité, comme l’observabilité et des mesures de gestion des échecs, de sorte qu’elle ait la confiance nécessaire pour avancer rapidement. L’époque où il fallait "aller vite et casser des choses" est révolue. Désormais, il faut aller vite, de manière fiable. Pour cela, il est indispensable de disposer de filets de sécurité automatisés.
5 . L’ensemble de l’organisation adhère au mode de fonctionnement DevOps.
Quelles tendances émergentes prévoyez-vous dans le paysage DevOps qui pourraient impacter significativement les stratégies de transformation numérique à l’avenir ?
Cela peut sembler une réponse évidente aujourd’hui, mais les outils d’IA transforment déjà la manière de travailler des développeurs et auront certainement un impact important sur la pratique du DevOps à l’avenir. L’IA sera, a minima, utilisée pour détecter et identifier les défaillances d’une manière impossible aujourd’hui.
Si elle tient toutes ses promesses, elle remplacera totalement les chaînes de déploiement et de tests complexes que nous connaissons aujourd’hui.
Abonnez-vous à la newsletter du CTO Club pour plus d’analyses, de synthèses, de questions/réponses et bien plus encore !
