Qu’est-ce que DevOps ?
DevOps combine le développement (Dev) et les opérations (Ops) pour unir les personnes, les processus et la technologie dans la planification, le développement, la livraison et les opérations des applications. DevOps permet la coordination et la collaboration entre des rôles auparavant cloisonnés tels que le développement, les opérations informatiques, l’ingénierie de qualité et la sécurité.
Les équipes adoptent la culture, les pratiques, et les outils DevOps pour accroître la confiance dans les applications qu'elles créent, mieux répondre aux besoins des clients, et atteindre plus rapidement leurs objectifs métier. DevOps aide les équipes à fournir continuellement de la valeur aux clients en produisant de meilleurs produits plus fiables.
DevOps influence le cycle de vie des applications tout au long de ses phases de planification, de développement, de livraison, et d'exploitation. Chaque phase dépend des autres phases, et les phases ne sont pas spécifiques aux rôles. Une culture DevOps implique tous les rôles de chaque phase dans une certaine mesure.
Le diagramme suivant illustre les phases du mode de vie de l’application DevOps :
Lorsqu'une équipe adopte la culture, les pratiques et les outils DevOps, elle peut réaliser des choses étonnantes :
Accélérer le délai de commercialisation
Grâce à une efficacité accrue, à une meilleure collaboration entre les équipes, à des outils d'automatisation et à un déploiement continu, les équipes sont en mesure de réduire rapidement le temps écoulé entre la création du produit et le lancement sur le marché.
S'adapter au marché et à la concurrence
Une culture DevOps exige que les équipes se concentrent d’abord sur le client. En alliant agilité, collaboration d'équipe et concentration sur l'expérience client, les équipes peuvent fournir en permanence de la valeur à leurs clients et augmenter leur compétitivité sur la place de marché.
Maintenir la stabilité et la fiabilité du système
En adoptant des pratiques d'amélioration continue, les équipes sont en mesure de renforcer la stabilité et la fiabilité des produits et services qu'elles déploient. Ces pratiques permettent de réduire les défaillances et les risques.
Améliore le temps moyen de récupération
Le temps moyen de récupération indique le temps nécessaire à la récupération à partir d'une défaillance ou d'une violation. Pour gérer les défaillances logicielles, les violations de sécurité, et les plans d’amélioration continue, les équipes doivent mesurer et travailler pour améliorer cette métrique.
Pour mettre pleinement en œuvre DevOps, vous devez adopter une culture DevOps. Entretenir une culture DevOps implique de profonds changements dans la manière dont chacun travaille et collabore. Lorsque les entreprises s’engagent sur la voie d'une culture DevOps, elles créent un environnement permettant aux équipes hautement performantes d’évoluer. Bien que l'adoption des pratiques DevOps automatise et optimise les processus par le biais de la technologie, sans passer à une culture DevOps au sein de l'organisation et de ses employés, vous ne bénéficierez pas de tous les avantages complets de DevOps.
L'image suivante capture les aspects clés de la culture du site en direct de Microsoft.
Les pratiques suivantes sont des composants clés d’une culture DevOps :
- Collaboration, visibilité, et alignement : Une caractéristique d'une culture DevOps saine est la collaboration entre les équipes. La collaboration commence par la visibilité. Les équipes de développement, informatiques et autres doivent partager entre elles leurs processus, priorités et préoccupations DevOps. En planifiant leur travail ensemble, elles sont mieux placées pour s’aligner sur les objectifs et les mesures de réussite en ce qui concerne l’entreprise.
- Changements dans la portée et la responsabilisation : À mesure que les équipes s'alignent, elles s'approprient et s'impliquent dans d'autres phases du cycle de vie, sans se limiter aux seules phases inhérentes à leurs rôles. Par exemple, les développeurs, en plus de l'innovation et de la qualité établies lors de la phase de développement, sont en charge des performances et de la stabilité que leurs modifications apportent à la phase d'exploitation. De même, les opérateurs informatiques assurent la gouvernance, la sécurité et la conformité des phases de planification et de développement.
- Cycles de publication plus courts : les équipes DevOps restent agiles en publiant des logiciels dans des cycles courts. Les cycles de mise en production plus courts facilitent la planification et la gestion des risques car la progression est incrémentielle, ce qui réduit également tout impact sur la stabilité du système. En outre, le raccourcissement du cycle de mise en production permet aux organisations de s’adapter et de réagir aux besoins évolutifs des clients, de même qu'à la pression de la concurrence.
- Apprentissage continu : les équipes DevOps hautement performantes adoptent un état d'esprit de croissance. Elles échouent rapidement et intègrent les apprentissages dans leurs processus. Elles s’efforcent d’améliorer continuellement, d’accroître la satisfaction des clients et d’accélérer l’innovation et l’adaptabilité du marché.
Vous mettez en œuvre DevOps en suivant les pratiques DevOps (décrites dans les sections qui suivent) tout au long du cycle de vie de l’application. Certaines de ces pratiques permettent d’accélérer, d’automatiser et d’améliorer une phase spécifique. D'autres couvrent plusieurs phases, aidant les équipes à créer des processus homogènes qui contribuent à renforcer la productivité.
L’intégration continue (CI) est la pratique utilisée par les équipes de développement pour automatiser, fusionner et tester le code. CI permet d’intercepter les bogues au début du cycle de développement, ce qui les rend moins coûteux à corriger. Les tests automatisés s’exécutent dans le cadre du processus CI pour garantir la qualité. Les systèmes CI produisent des artefacts et les alimentent pour mettre en production des processus afin de générer des déploiements fréquents.
La livraison continue (CD) est un processus par lequel le code est généré, testé et déployé dans un ou plusieurs environnements de test et de production. Déployer et tester dans plusieurs environnements améliore la qualité. Les systèmes CD produisent des artefacts déployables, y compris l’infrastructure et les applications. Les processus de mise en production automatisés consomment ces artefacts pour publier de nouvelles versions et des correctifs sur des systèmes existants. Les systèmes qui surveillent et envoient des alertes s’exécutent continuellement pour améliorer la visibilité de l’ensemble du processus CD.
La gestion de version consiste à gérer le code dans les versions, à suivre les révisions et l'historique des modifications afin de faciliter l'examen et la récupération du code. Cette pratique est généralement mise en œuvre à l'aide de systèmes de gestion de version tels que Git, qui permettent à plusieurs développeurs de collaborer sur la création de code. Ces systèmes proposent un processus clair pour fusionner les modifications de code intervenant dans les mêmes fichiers, gérer les conflits et restaurer les modifications apportées aux états antérieurs.
La gestion de version est une pratique DevOps fondamentale. Elle facilite la collaboration des équipes de développement, répartit les tâches de codage entre leurs membres et stocke l'intégralité du code pour simplifier sa récupération, si besoin. La gestion de version est également indissociable d'autres pratiques telles que l'intégration continue et l'infrastructure en tant que code.
Agile est une approche de développement de logiciels qui met l’accent sur la collaboration des équipes, le feedback des clients et des utilisateurs, et une grande adaptabilité au changement au travers de cycles de publication courts. Les équipes qui utilisent Agile apportent des modifications et des améliorations constantes aux clients, recueillent leurs commentaires, puis en tirent des enseignements et s’adaptent en fonction des attentes et des besoins de ces clients. Agile diffère sensiblement des infrastructures traditionnelles telles que l'infrastructure en cascade, qui se caractérise par de longs cycles de mise en production définis par des phases séquentielles. Kanban et Scrum sont deux infrastructures très populaires associées à Agile.
L'infrastructure en tant que code définit les ressources système et les topologies de manière descriptive, ce qui permet aux équipes de gérer ces ressources comme du code. Ces définitions peuvent également être stockées et versionnées dans des systèmes de gestion de version permettant leur révision et leur restauration, là encore comme du code.
Utiliser l'infrastructure en tant que code aide les équipes à déployer des ressources système de manière fiable, reproductible et contrôlée. De plus, l'infrastructure en tant que code permet d’automatiser le déploiement et réduit le risque d’erreur humaine, notamment au sein d'environnements aussi vastes que complexes. Fiable et reproductible, cette solution de déploiement d'environnement offre aux équipes la possibilité de gérer des environnements de développement et de test identiques aux environnements de production. La duplication des environnements dans différents centres de données et plateformes cloud gagne également en simplicité et en efficacité.
La gestion de la configuration fait référence à la gestion de l’état des ressources dans un système, notamment les serveurs, les machines virtuelles et les bases de données. Moyennant des outils de gestion de la configuration, les équipes peuvent déployer les modifications de façon systématique et contrôlée, réduisant ainsi les risques de modification de la configuration système. Les équipes utilisent des outils de gestion de la configuration pour suivre l’état du système et éviter toute dérive de configuration, à savoir toute dérive de configuration d’une ressource système par rapport à son état souhaité au fil du temps.
En plus de l'infrastructure en tant que code, il est facile de modéliser et d'automatiser la définition et la configuration du système, ce qui aide les équipes à exploiter des environnements complexes à grande échelle.
La surveillance continue signifie avoir une visibilité complète et en temps réel sur les performances et l'intégrité de l'ensemble de la pile d'applications. Cette visibilité va de l'infrastructure sous-jacente exécutant l'application aux composants logiciels de niveau supérieur. La visibilité est assurée grâce à la collecte de données de télémétrie et de métadonnées et à l’établissement d'alertes pour des conditions prédéfinies qui doivent susciter l'attention d'un opérateur. La télémétrie englobe les données d'événement et les journaux issus de différentes parties du système et stockés à un emplacement où ils peuvent être analysés et interrogés.
Les équipes DevOps hautement performantes veillent à définir des alertes exploitables et explicites, et à collecter des données de télémétrie enrichies afin de mieux les exploiter. Fortes de ces informations, les équipes peuvent résoudre les problèmes en temps réel et améliorer les applications lors des cycles de développement ultérieurs.
Dans la phase de planification, les équipes DevOps conçoivent, définissent et décrivent les fonctionnalités et les capacités des applications et des systèmes qu'elles prévoient de créer. Les équipes suivent la progression des tâches à des niveaux de granularité faibles et élevés, des produits uniques à des portefeuilles de produits multiples. Les équipes utilisent les pratiques DevOps suivantes pour planifier avec agilité et visibilité :
- Créer des backlogs.
- Faire le suivi des bogues.
- Gérer le développement de logiciels Agile avec Scrum.
- Utilisez des tableaux Kanban.
- Visualiser la progression avec les tableaux de bord.
Pour obtenir une vue d'ensemble des différentes leçons apprises et pratiques que Microsoft a adoptées pour prendre en charge la planification DevOps dans les équipes logicielles de l'entreprise, consultez Comment Microsoft planifie avec DevOps.
La phase de développement comprend tous les aspects du développement de code logiciel. Dans cette phase, les équipes DevOps effectuent les tâches suivantes :
- Sélectionner un environnement de développement.
- Écrire, tester, passer en revue et intégrer le code.
- Générer le code dans des artefacts à déployer dans différents environnements.
- Utilisez le contrôle de version, généralement Git, pour collaborer sur du code et travailler en parallèle.
Pour innover rapidement, sans sacrifier la qualité, la stabilité et la productivité, les équipes DevOps :
- Utiliser des outils hautement productifs.
- Automatiser les étapes banales et manuelles.
- Itérer en petits incréments par le biais de tests automatisés et d’intégration continue (CI).
Pour obtenir une vue d'ensemble des pratiques de développement adoptées par Microsoft pour prendre en charge leur passage à DevOps, consultez Comment Microsoft développe avec DevOps.
La livraison est le processus de déploiement d’applications dans des environnements de production de manière cohérente et fiable, idéalement via une livraison continue (CD).
Dans la phase de livraison, les équipes DevOps :
- Définir un processus de gestion des versions avec des étapes d’approbation manuelle claires.
- Définir des portes automatisées pour déplacer des applications entre les phases jusqu’à la version finale aux clients.
- Automatiser les processus de livraison pour les rendre évolutifs, reproductibles, contrôlés, et bien testés.
La livraison inclut également le déploiement et la configuration de l’infrastructure de base de l’environnement de livraison. Les équipes DevOps utilisent des technologies telles que l'infrastructure en tant que code (IaC), les conteneurs, et les microservices pour livrer des environnements d’infrastructure entièrement régis.
Les pratiques de déploiement sécurisées peuvent identifier les problèmes avant qu'ils affectent l'expérience client. Ces pratiques aident les équipes DevOps à livrer plus fréquemment avec facilité, confiance et tranquillité d'esprit.
Les principaux principes et processus DevOps que Microsoft a évolué pour fournir des systèmes de livraison efficaces sont décrits dans Comment Microsoft livre des logiciels avec DevOps.
La phase des opérations implique la maintenance, la surveillance, et la résolution des problèmes des applications dans des environnements de production, notamment des clouds hybrides ou publics comme Azure. Les Les équipes DevOps visent la fiabilité du système, la haute disponibilité, la sécurité forte, et aucun temps d’arrêt.
Les pratiques de livraison automatisée et de déploiement sécurisé permettent aux équipes d’identifier et d’atténuer rapidement les problèmes lorsqu’ils surviennent. Maintenir la vigilance nécessite une riche télémétrie, des alertes exploitables et une visibilité totale sur les applications et les systèmes sous-jacents.
Les pratiques que Microsoft utilise pour exploiter des plateformes en ligne complexes sont décrites dans Comment Microsoft exploite des systèmes fiables avec DevOps.
- Planifier des charges de travail efficaces avec DevOps
- Développer des logiciels modernes avec DevOps
- Livrer des services de qualité avec DevOps
- Exploiter des systèmes fiables avec DevOps
- Solutions DevOps sur Azure
- Le parcours DevOps chez Microsoft
- Commencez à suivre des procédures DevOps avec Azure
- Sécurité dans DevOps (DevSecOps)
- Qu’est-ce que l’ingénierie de plateforme ?
- Prise en main d’Azure DevOps
- Introduire DevOps Dojo : Créer des postes d’efficacité venant soutenir votre entreprise
- AZ-400 : Commencer un parcours de transformation DevOps
- Faciliter la communication et collaboration
- Examen AZ-400 : Conception et implémentation de solutions DevOps Microsoft
- AZ-400 : Implémenter la sécurité et valider la conformité des bases de code