DevOps
DevOps aligne les équipes de développement et opérationnelles afin d'optimiser la qualité et la livraison.
Articles
Tutoriels
Guides interactifs
Qu'est-ce que DevOps ?
DevOps est un ensemble de pratiques et d'outils, ainsi qu'une philosophie culturelle. Son but est d'automatiser et d'intégrer les processus entre les équipes de développement et informatiques. DevOps met l'accent sur l'autonomisation des équipes, la communication et la collaboration transverses ainsi que l'automatisation technologique.
Le mouvement DevOps a débuté vers 2007 lorsque les équipes informatiques opérationnelles et de développement ont exprimé leurs inquiétudes quant au modèle traditionnel de développement, dans lequel les programmeurs travaillaient à l'écart des équipes opérationnelles chargées de déployer le code et d'en assurer le support. Le terme DevOps, qui combine les mots « développement » et « opérations », reflète le processus d'intégration de ces disciplines en un processus continu.
Comment fonctionne DevOps ?
Une équipe DevOps comprend des développeurs et des spécialistes des opérations informatiques qui collaborent tout au long du cycle de vie du produit, afin d'accélérer le déploiement des logiciels et de le rendre plus qualitatif. C'est une nouvelle méthode de travail, un virage culturel, qui a d'importantes répercussions sur les équipes et les organisations qui la pratiquent.
Dans le cadre d'un modèle DevOps, les équipes de développement et opérationnelles ne sont plus « cloisonnées ». Parfois, elles fusionnent en une seule équipe où les ingénieurs travaillent tout au long du cycle de vie des applications, du développement aux tests, en passant par le déploiement et les opérations, et possèdent un éventail de compétences multidisciplinaires.
Les équipes DevOps utilisent des outils pour automatiser et accélérer les processus, ce qui contribue à accroître la fiabilité. Une chaîne d'outils DevOps aide les équipes à aborder les principaux fondamentaux de DevOps, notamment l'intégration et la livraison continues, l'automatisation et la collaboration.
Les valeurs DevOps sont parfois appliquées à d'autres équipes que celles de développement. Lorsque les équipes de sécurité adoptent une approche DevOps, la sécurité fait partie intégrante du processus de développement. C'est ce qu'on appelle DevSecOps.
Le cycle de vie DevOps
En raison de la nature continue de DevOps, les experts utilisent la boucle infinie pour indiquer comment les phases du cycle de vie DevOps sont liées les unes aux autres. Bien qu'elle semble se dérouler de manière séquentielle, la boucle symbolise la nécessité de collaboration constante et d'amélioration itérative tout au long du cycle de vie.
Le cycle de vie DevOps comprend huit phases représentant les processus, les capacités et les outils nécessaires au développement (sur la partie gauche de la boucle) et aux opérations (sur la partie droite de la boucle). Tout au long de chaque phase, les équipes collaborent et communiquent pour maintenir l'alignement, la vélocité et la qualité.
Découverte
Le développement de logiciels est un sport d'équipe. En vue du prochain sprint, les équipes doivent organiser des ateliers pour explorer, organiser et hiérarchiser leurs idées. Les idées doivent être alignées sur des objectifs stratégiques et avoir un impact sur les clients. Agile peut aider à guider les équipes DevOps.
Planification
Les équipes DevOps doivent adopter des pratiques Agile pour améliorer la vitesse et la qualité. Agile est une approche itérative de la gestion de projet et du développement de logiciels qui aide les équipes à diviser le travail en tâches plus petites pour générer une valeur incrémentielle.
Build
Git est un système de contrôle de version gratuit et open source. Il dispose d'un excellent support pour les branches, les merges et la réécriture de l'historique du dépôt, ce qui a entraîné l'apparition de nombreux workflows et outils innovants et utiles pour le processus de développement.
Test
L'intégration continue (CI) permet à plusieurs développeurs de contribuer dans un dépôt partagé unique. Lorsque des changements du code sont mergés, des tests automatisés s'exécutent afin d'en vérifier l'exactitude avant toute intégration. Les merges et les tests de code aident souvent les équipes de développement à s'assurer de la qualité et de la prévisibilité du code une fois le déploiement terminé.
Déploiement
Le déploiement continu (CD) permet aux équipes de livrer des fonctionnalités en production fréquemment et de façon automatisée. Les équipes peuvent également effectuer le déploiement à l'aide de feature flags, afin de livrer du nouveau code aux utilisateurs régulièrement et méthodiquement, plutôt que d'un seul coup. Cette approche améliore la vélocité, la productivité et la durabilité des équipes de développement logiciel.
Agir
Gérez, de bout en bout, la livraison de services informatiques aux clients. Cela inclut les pratiques impliquées dans la conception, l'implémentation, la configuration, le déploiement et la maintenance de toute l'infrastructure informatique qui sous-tendent les services d'une organisation.
Observation
Identifiez et résolvez rapidement les tickets qui ont un impact sur le temps d'activité, la vitesse et les fonctionnalités des produits. Informez automatiquement votre équipe des changements, des actions à haut risque ou des pannes, afin que vous puissiez assurer la continuité des services.
Feedback continu
Les équipes DevOps doivent évaluer chaque version et générer des rapports pour améliorer les livraisons futures. En recueillant un feedback continu, les équipes peuvent améliorer leurs processus et intégrer le feedback des clients pour améliorer la prochaine version.
Outils DevOps
Les outils DevOps correspondent aux phases clés du cycle de vie DevOps. Ils facilitent les pratiques DevOps en aidant à améliorer la collaboration, à réduire les changements de contexte, à introduire l'automatisation, et à assurer l'observabilité et la surveillance.
Les chaînes d'outils DevOps suivent généralement deux approches : tout-en-un ou ouverte. Une chaîne d'outils tout-en-un offre une solution complète qui ne s'intègre généralement pas à d'autres outils tiers, tandis qu'une chaîne d'outils ouverte permet la personnalisation grâce à différents outils. Les deux approches présentent des avantages et des inconvénients.
Pour illustrer la chaîne d'outils DevOps ouverte, citons par exemple la solution Open DevOps d'Atlassian, qui repose sur Jira et s'intègre aux principaux fournisseurs et apps du Marketplace.
Quels sont les avantages de DevOps ?
Dans l'enquête sur les tendances DevOps de 2020 d'Atlassian, 99 % des personnes interrogées ont déclaré que DevOps avait un impact positif sur leur organisation. Parmi les avantages de DevOps, citons l'accélération/la simplification des livraisons, l'efficacité des équipes, la sécurité accrue, les produits de meilleure qualité et une plus grande satisfaction des équipes et des clients qui en découle.
Vitesse
Les équipes qui adoptent la livraison DevOps livrent plus souvent, de façon plus qualitative et plus stable. En fait, le rapport « State of DevOps 2019 » de l'équipe DORA a révélé que les équipes d'élite déploient 208 fois plus souvent et 106 fois plus rapidement que les équipes peu performantes. La livraison continue permet aux équipes de créer, de tester et de livrer des logiciels grâce à des outils automatisés.
Collaboration améliorée
DevOps repose sur une culture de la collaboration entre développeurs et équipes opérationnelles, qui partagent les responsabilités et combinent le travail. Il améliore l'efficacité des équipes et permet d'accélérer les transferts de tâches et la création de code conçu pour un environnement d'exécution spécifique.
Déploiement rapide
En augmentant la fréquence et la vélocité des livraisons, les équipes DevOps améliorent rapidement les produits. La rapidité de livraison de nouvelles fonctionnalités et de correction des bugs permet d'obtenir un avantage concurrentiel.
Qualité et fiabilité
Des pratiques telles que l'intégration et la livraison continues garantissent que les changements sont fonctionnels et sûrs, ce qui améliore la qualité d'un produit logiciel. La surveillance permet aux équipes de suivre les performances en temps réel.
Sécurité
En intégrant la sécurité dans un pipeline d'intégration, de livraison et de déploiement continus, DevSecOps est une partie active et intégrée du processus de développement. La sécurité fait partie intégrante du produit grâce à l'intégration des audits actifs et des tests de sécurité dans le développement Agile et les workflows DevOps.
Quels sont les défis liés à l'adoption de DevOps ?
Les habitudes sont tenaces. Les équipes dont les méthodes de travail cloisonnées sont bien ancrées peuvent avoir des difficultés avec le remaniement de leurs structures (voire s'y opposer) en vue d'adopter les pratiques DevOps. Certaines équipes peuvent croire à tort que de nouveaux outils suffisent à adopter DevOps. Pourtant, DevOps est une combinaison de personnes, d'outils et de culture. Chaque membre d'une équipe DevOps doit comprendre l'ensemble du flux de valeur, de l'idéation à l'expérience de l'utilisateur final, en passant par le développement. Cela nécessite d'éliminer les silos afin de collaborer tout au long du cycle de vie du produit.
DevOps ne concerne pas qu'une seule personne : c'est un travail collectif.
Robert Krohn
Head of Engineering, DevOps, Atlassian
Le passage d'une infrastructure héritée à l'Infrastructure-as-Code (IaC) et aux microservices peut accélérer le développement et l'innovation, mais l'augmentation de la charge de travail opérationnelle peut présenter des difficultés. Il est préférable d'établir une base solide pour l'automatisation, la gestion des configurations et les pratiques de livraison continue afin de lisser la charge.
Une dépendance excessive à l'égard des outils peut détourner les équipes des bases nécessaires de DevOps : la structure de l'équipe et de l'organisation. Une fois qu'une structure est établie, les processus, l'équipe, puis les outils doivent suivre.
Comment adopter DevOps ?
Pour adopter DevOps, il convient avant tout de s'engager à évaluer et, éventuellement, à modifier ou à supprimer les équipes, les outils ou les processus que votre organisation utilise actuellement. Cela signifie développer l'infrastructure nécessaire pour donner aux équipes l'autonomie nécessaire à la création, au déploiement et à la gestion de leurs produits sans être trop dépendantes d'équipes externes.
Culture DevOps
Une culture DevOps permet aux équipes d'adopter de nouvelles méthodes de travail qui impliquent une collaboration et une communication accrues. Elle permet d'aligner les employés, les processus et les outils sur une orientation client plus unifiée. Les équipes multidisciplinaires sont responsables de l'ensemble du cycle de vie d'un produit.
Apprentissage continu
Les organisations qui ont adopté DevOps sont des espaces où l'expérimentation et la prise de risques sont encouragées, où sortir des sentiers battus est la norme et où l'échec est considéré comme une phase naturelle de l'apprentissage et de l'amélioration.
Agile
Les méthodologies Agile sont extrêmement populaires dans le secteur du développement logiciel, car elles permettent aux équipes d'être flexibles, bien organisées et capables de répondre aux changements. DevOps est un virage culturel qui favorise la collaboration entre les équipes qui développent et gèrent des logiciels. Utilisés ensemble, Agile et DevOps se traduisent par une efficacité et une fiabilité élevées.
Pratiques DevOps
Intégration continue
L'intégration continue désigne la pratique qui consiste à automatiser l'intégration des changements de code dans un projet de développement. Elle permet aux développeurs de logiciels de merger fréquemment des changements de code dans un dépôt central où les builds et les tests s'exécutent. Cela permet aux équipes DevOps de corriger les bugs plus rapidement, d'améliorer la qualité des logiciels, et de réduire le temps nécessaire à la validation et à la livraison des nouvelles mises à jour logicielles.
Livraison continue
La livraison continue s'étend à l'intégration continue en déployant automatiquement les changements de code dans un environnement de test/production. Elle suit un pipeline de livraison continue, où les builds, les tests et les déploiements automatisés sont orchestrés en un workflow de livraison unique.
Prise de conscience de la situation
Il est essentiel que chaque membre de l'organisation ait accès aux données dont il a besoin pour faire son travail le plus efficacement et le plus rapidement possible. Les membres de l'équipe doivent être avertis des défaillances du pipeline de déploiement (qu'elles soient systémiques ou dues à des échecs de tests) et recevoir des mises à jour opportunes sur l'intégrité et les performances des applications exécutées en production. Les métriques, les journaux, les traces, la surveillance et les alertes sont autant de sources essentielles de feedback dont les équipes ont besoin pour éclairer leur travail.
Automatisation
L'automatisation est l'une des pratiques DevOps les plus importantes, car elle permet aux équipes d'avancer beaucoup plus rapidement tout au long du processus de développement et de déploiement de logiciels de haute qualité. Grâce à l'automatisation, le simple fait de pusher les changements du code vers un dépôt de code source peut déclencher un processus de build, de test et de déploiement qui réduit considérablement la durée de ces phases.
Infrastructure-as-Code (IaC)
Que votre organisation dispose d'un data center sur site ou qu'elle soit intégralement dans le cloud, la capacité de provisionner, de configurer et de gérer rapidement et systématiquement l'infrastructure est la clé d'une adoption fructueuse de DevOps. L'IaC va au-delà de la simple utilisation de scripts pour configurer une infrastructure : il traite votre infrastructure comme du code réel en ayant recours au contrôle de version, aux revues de code, aux tests, et bien plus encore.
Microservices
Les microservices désignent une technique architecturale dans laquelle une application est conçue comme un ensemble de services plus petits qui peuvent être déployés et exploités indépendamment les uns des autres. Chaque service possède ses propres processus et communique avec les autres via une interface. Cette séparation des préoccupations et ce découplement des fonctions indépendantes permettent des pratiques DevOps telles que la livraison et l'intégration continues.
Monitoring
L'équipe DevOps supervise l'ensemble du processus de développement. Cela implique la planification, le développement, l'intégration et les tests, le déploiement et les opérations. Cela permet aussi aux équipes de réagir rapidement et de manière automatique à toute dégradation de l'expérience client. Plus important encore, l'autonomie des équipes est renforcée dès les premières phases du développement et elles peuvent minimiser les changements de production en échec.
Lancez-vous avec DevOps
Le moyen le plus simple de se lancer avec DevOps consiste à identifier une petite chaîne de valeur (par exemple, une app ou un service de support de petite envergure) et de lancer des expériences avec certaines pratiques DevOps. Comme pour le développement de logiciels, il est beaucoup plus facile de transformer un flux unique avec un petit groupe de parties prenantes que de tenter une transition organisationnelle globale vers de nouvelles méthodes de travail.
Atlassian propose une solution Open DevOps qui fournit des processus DevOps de bout en bout grâce à Atlassian et d'autres outils tiers. En utilisant Jira comme pilier, les équipes peuvent choisir d'utiliser les produits Atlassian, ou d'ajouter leurs produits préférés à la chaîne d'outils ouverte. L'écosystème Atlassian fournit un large éventail d'intégrations et d'extensions, permettant ainsi aux équipes de personnaliser leurs chaînes d'outils pour répondre à leurs besoins.
N'oubliez pas de consulter nos tutoriels DevOps sur l'automatisation, les tests, la sécurité, l'observabilité, le feature flagging et la livraison continue.
Inscrivez-vous à notre newsletter Devops
Thank you for signing up