Close

Pipeline DevOps

Un pipeline DevOps est un ensemble d'outils et de processus automatisés qui permettent aux développeurs et aux experts des opérations de collaborer sur le développement et le déploiement du code dans un environnement de production.

Portrait de Krishna Sai
Tom Hall

Expert DevOps


DevOps est un mouvement novateur, car cette approche révolutionne la structure organisationnelle cloisonnée qui séparait les équipes de développement et opérationnelles. Résultat ? Un virage culturel où les experts du développement et opérationnels collaborent, adoptent l'automatisation, accélèrent le déploiement et sont plus flexibles.

La structure DevOps qui en résulte présente des avantages évidents : les équipes qui adoptent DevOps peuvent améliorer et simplifier leur pipeline de déploiement, ce qui réduit la fréquence et l'impact des incidents. La pratique DevOps YBIYRI (you build it, you run it ou vous le concevez, vous en êtes responsable) est en train de devenir la norme, et ce, pour une bonne raison : presque toutes les personnes interrogées (99 %) dans le cadre de l'enquête sur les tendances DevOps 2020 ont déclaré que DevOps a eu un impact positif sur leur organisation. Près de la moitié d'entre elles constatent un délai de mise sur le marché plus rapide et une amélioration de la fréquence de déploiement.

L'implémentation de DevOps est cependant plus facile à dire qu'à faire. Il faut les bonnes personnes, la bonne culture et les bons outils pour implémenter DevOps avec succès.

Qu'est-ce que le pipeline DevOps ?


Un pipeline DevOps est un ensemble de processus et d'outils automatisés qui permettent aux développeurs et aux experts des opérations de travailler de manière cohérente pour développer et déployer du code dans un environnement de production. Même si un pipeline DevOps peut différer d'une organisation à l'autre, il comprend généralement l'automatisation/l'intégration continue des builds, ainsi que des tests automatisés, et une phase de validation et de reporting. Il peut également inclure une ou plusieurs étapes de validation manuelles qui nécessitent une intervention humaine avant que le code ne soit autorisé à passer à la phase suivante du pipeline.

La continuité est une caractéristique distincte d'un pipeline DevOps. Elle inclut l'intégration continue, la livraison/le déploiement continus (CI/CD), le feedback continu et les opérations continues. Au lieu de tests ponctuels ou de déploiements planifiés, chaque fonction est exécutée en continu.

Icône représentant des anneaux interconnectés
Matériel connexe

Essayez la solution gratuitement

Icône d'outils
Matériel connexe

En savoir plus sur les outils DevOps

Considérations relatives au déploiement d'un pipeline DevOps


Puisqu'il n'existe pas de pipeline DevOps standard, la conception et l'implémentation d'un pipeline DevOps par une organisation dépendent de sa stack technique, du niveau d'expérience de l'ingénieur DevOps, du budget, ainsi que d'autres facteurs. Un ingénieur DevOps 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.

De plus, chaque organisation dispose d'une stack technique différente qui peut avoir un impact sur le processus. Par exemple, si votre base de code est Node.js, les facteurs incluent l'utilisation d'un registre de proxy NPM local, le téléchargement du code source et l'exécution de « npm install » à chaque étape du pipeline ou une seule fois, et la génération d'un artefact qui se déplace dans le pipeline. Ou, si une app est basée sur un conteneur, vous devez utiliser un registre de conteneurs local ou distant, développer le conteneur une fois et le déplacer dans le pipeline, ou le régénérer à chaque étape.

Pipeline DevOps : commit, build, tests unitaires, merge vers la branche « trunk », tests d'intégration, staging, tests de régression, déploiement. Le pipeline est arrêté si un test échoue à n'importe quel stade, et le développeur reçoit un feedback.

Bien que chaque pipeline soit unique, la plupart des organisations utilisent des composants fondamentaux similaires. La réussite de chaque étape est évaluée avant de passer à l'étape suivante du pipeline. En cas de panne, le pipeline est arrêté, et le développeur reçoit un feedback.

Composants d'un pipeline DevOps


Intégration/Livraison/Déploiement continus (CI/CD)

L'intégration continue consiste à effectuer des commits fréquents vers un dépôt de code source commun. Elle intègre continuellement les changements de code à la base de code existante afin que tout conflit entre les différents changements de code des développeurs soit rapidement identifié et assez simple à résoudre. Cette pratique est d'une importance stratégique pour accroître l'efficacité du déploiement.

Nous sommes convaincus que le développement basé sur le tronc est une exigence de l'intégration continue. Si vous n'effectuez pas de commits fréquents vers une branche commune dans un dépôt de code source partagé, il se n'agit pas d'intégration continue. Si vos processus de développement et de test sont automatisés, mais que vos développeurs travaillent sur les branches de fonctionnalités isolées au long cours, qui sont rarement intégrées dans une branche partagée, il ne s'agit pas non plus d'intégration continue.

La livraison continue garantit que la branche « principale » ou « trunk » du code source d'une app est toujours à un état « livrable ». En d'autres termes, si un responsable se présente à votre bureau un vendredi en fin d'après-midi et vous demande de livrer immédiatement la dernière version, cette dernière pourrait être déployée en appuyant sur un bouton et sans crainte de panne.

Cela signifie qu'il faut disposer d'un environnement de pré-production aussi similaire que possible à l'environnement de production et s'assurer que les tests automatisés sont exécutés, de sorte que chaque variable qui pourrait entraîner une panne est identifiée avant que le code ne soit mergé dans la branche principale ou dans la branche « trunk ».

Le déploiement continu implique de disposer d'un niveau de tests et d'opérations en continu si robuste que les nouvelles versions des logiciels sont validées et déployées dans un environnement de production sans aucune intervention humaine.

C'est rare et, dans la plupart des cas, inutile. Généralement, seules les entreprises « licornes » qui emploient des centaines ou des milliers de développeurs et qui livrent de nombreuses fois par jour ont besoin de ce niveau d'automatisation, ou souhaitent l'atteindre.

Pour expliquer simplement la différence entre livraison continue et déploiement continu, visualisez la livraison comme le livreur de chez FedEx qui vous remet un colis, et le déploiement comme l'ouverture de ce colis et l'utilisation que vous faites de son contenu. Si un changement produit est nécessaire entre la réception du colis et son ouverture, le fabricant est en cause.

Feedback continu

Le principal problème de l'ancienne méthode de développement logiciel en cascade (et par conséquent la raison d'être des méthodologies Agile) était le manque de feedback en temps opportun. Lorsqu'il fallait des mois ou des années pour implémenter les idées de nouvelles fonctionnalités, le résultat final était forcément différent de ce que le client attendait ou souhaitait. Agile a réussi à faire en sorte que les développeurs obtiennent plus rapidement le feedback des parties prenantes. Désormais, DevOps permet aux développeurs de recevoir un feedback continu non seulement de la part des parties prenantes, mais également de la surveillance et des tests systématiques de leur code dans le pipeline.

Les tests continus sont un composant essentiel de chaque pipeline DevOps et l'un des principaux moteurs d'un feedback continu. Dans un processus DevOps, les changements passent continuellement du développement aux tests et au déploiement, ce qui permet non seulement de livrer plus rapidement, mais également de livrer un produit de qualité supérieure. Cela signifie que vous devez disposer de tests automatisés dans l'ensemble de votre pipeline, y compris de tests unitaires qui s'exécutent sur chaque changement de build, de smoke tests, de tests fonctionnels et de tests de bout en bout.

La surveillance continue est une autre composante importante du feedback continu. Une approche DevOps implique d'utiliser la surveillance continue dans les environnements de staging, de test et même de développement. Il est parfois utile de surveiller les environnements de pré-production pour détecter les comportements anormaux. Cependant, il s'agit en général d'une approche utilisée pour évaluer en permanence l'intégrité et les performances des apps en production.

De nombreux outils et services offrent cette fonctionnalité. Cela peut impliquer de nombreux éléments, de la surveillance de votre infrastructure sur site ou cloud, comme les ressources serveur, ou encore la mise en réseau, ou les performances de votre app ou de ses interfaces API.

Opérations continues

Les opérations continues constituent un terme plus récent et moins connu, dont les définitions varient. Elles peuvent être interprétées comme une « disponibilité continue ». Par exemple, dans le cas d'une stratégie de déploiement de type « Blue-Green Deployment » dans laquelle se trouvent deux environnements de production distincts, l'un est « blue » (accessible publiquement) et l'autre est « green » (non accessible publiquement). Dans cette situation, un nouveau code serait déployé dans l'environnement « green » et une fois sa fonctionnalité confirmée, un bouton serait actionné (généralement sur un équilibreur de charge) et le trafic passerait du système « blue » au système « green ». Résultat ? Les utilisateurs finaux ne subissent aucun temps d'arrêt.

Une autre façon d'envisager les opérations continues est en tant qu'alertes continues. Dans ce concept, le personnel d'ingénierie est d'astreinte et est notifié en cas d'anomalie de performance de l'app ou de l'infrastructure. Dans la plupart des cas, les alertes continues vont de pair avec la surveillance continue.

Conclusion…


La méthodologie DevOps implique une simplification du développement logiciel, du déploiement et des opérations. Ces idées sont mises en pratique grâce au pipeline DevOps. On parle de « Continuous Everything » pour désigner l'ensemble du processus, de l'intégration du code aux opérations de l'app.

Pour en savoir plus sur la livraison continue, consultez nos tutoriels sur la livraison continue avec Bitbucket, qui vous permet de développer, tester et déployer grâce à la CI/CD intégrée. Ces tutoriels aideront les débutants et les professionnels à réaliser une livraison continue grâce à Bitbucket. Prêt à nous rejoindre ? Lancez-vous avec Bitbucket Pipelines gratuitement.

Tom Hall
Tom Hall

Tom Hall est un expert DevOps, un lecteur avide et un pianiste amateur.
Au cours des 20 dernières années, il a notamment obtenu les certifications Novell, EMC, VMware et AWS. Il a participé à l'organisation des DevOpsDays à Atlanta en 2016 et à Austin, au Texas, dans les années qui ont suivi.


Partager cet article

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.

Illustration Devops

Communauté DevOps

Illustration Devops

Atelier de simulation

Illustration d'une carte

Essayez la solution gratuitement

Inscrivez-vous à notre newsletter Devops

Thank you for signing up