Menu

Qu'est-ce que le DevOps ?

Rubriques

Partager cette page

Le DevOps est une philosophie en constante évolution qui offre un framework conçu pour dynamiser et améliorer le développement d'applications, et accélérer la mise à disposition de nouvelles fonctionnalités, de mises à jour logicielles ou de produits.

Il favorise la communication, la collaboration, l'intégration, la visibilité et la transparence continues entre les équipes chargées du développement d'applications (Dev) et celles responsables des opérations IT (Ops).

Cette relation plus étroite entre Dev et Ops se reflète dans chaque phase du cycle de vie DevOps : planification logicielle initiale, codage, développement, test, publication, déploiement, opérations et surveillance continue. Elle génère de façon constante des retours clients, ce qui renforce le potentiel d'amélioration lors du développement, des tests et du déploiement. La publication accélérée et permanente des modifications ou ajouts de fonctionnalités en est un exemple.

Les objectifs du DevOps s'articulent autour de quatre catégories : culture, automatisation, mesure et partage. Dans chacun de ces domaines, les outils DevOps améliorent la rationalisation et la collaboration des workflows de développement et des opérations en automatisant les tâches chronophages, manuelles ou statiques des phases d'intégration, de développement, de test, de déploiement ou de surveillance.

Importance du DevOps

En favorisant la communication et la collaboration entre les équipes chargées du développement et des opérations IT, le DevOps vise à optimiser la satisfaction client et à proposer des solutions à valeur ajoutée plus rapidement. Le DevOps est aussi conçu pour stimuler l'innovation dans une optique d'amélioration continue des processus.

Les pratiques DevOps accélèrent, optimisent et sécurisent la valeur commerciale des entreprises, par exemple via la publication plus fréquente ou la mise à disposition plus rapide de versions, de fonctionnalités ou de mises à jour des produits, le tout en assurant les niveaux de qualité et de sécurité appropriés. Les pratiques DevOps ont également pour objectif d'améliorer les délais de détection et de résolution de bogues ou d'autres problèmes, et de republication d'une version.

L'infrastructure sous-jacente apporte également au DevOps la fluidité des performances, la disponibilité et la fiabilité requises lors des étapes de développement, de test et de mise en production des logiciels.

Méthodes DevOps

Afin d'accélérer et d'améliorer le développement et le lancement de leurs produits, les entreprises disposent de plusieurs méthodologies et pratiques DevOps de développement logiciel. Les méthodes Scrum, Kanban et Agile sont les plus couramment utilisées.

  • Scrum : la méthode Scrum définit la manière dont les membres d'une équipe doivent collaborer pour accélérer les projets de développement et d'assurance qualité. Les pratiques Scrum utilisent des workflows clés, une terminologie spécifique (sprint, time box, daily scrum) et des rôles désignés (Scrum Master, product owner ou responsable de produit).
  • Kanban : développée par Toyota pour améliorer l'efficacité de ses usines de montage, la méthode Kanban repose sur un suivi du travail en cours dans un projet logiciel à l'aide d'un tableau de Kanban.
  • Agile : les premières méthodes de développement logiciel agile continuent d'influencer largement les pratiques et les outils DevOps. De nombreuses approches DevOps, notamment Scrum et Kanban, intègrent des éléments de la programmation agile. Certaines pratiques agiles offrent une meilleure réactivité face à l'évolution des besoins en documentant les exigences sous forme de récits utilisateurs, en organisant des réunions quotidiennes (daily standups) et en intégrant les retours des clients de manière continue. La méthode Agile préconise également des cycles de vie du développement logiciel plus courts que les méthodes de développement en cascade classiques.

Chaîne d'outils DevOps

Les adeptes des pratiques DevOps intègrent souvent des outils compatibles DevOps dans leur chaîne d'outils pour rationaliser, accélérer et automatiser davantage les différentes étapes du workflow (ou « pipeline ») de fourniture des logiciels. Ces outils renforcent les principes fondamentaux du DevOps tels que l'automatisation, la collaboration et l'intégration entre les équipes chargées du développement et des opérations. Voici quelques exemples d'outils employés à différentes étapes du cycle de vie DevOps.

  • Planification : cette phase permet de définir la valeur commerciale et les exigences. Jira et Git peuvent être utilisés pour le suivi des problèmes connus et la gestion des projets.
  • Code : cette phase comprend la conception logicielle et la création du code logiciel à l'aide d'outils comme GitHub, GitLab, Bitbucket ou Stash.
  • Création : cette phase consiste à gérer les versions logicielles et à exploiter des outils automatisés pour compiler et intégrer le code en vue de sa mise en production. L'infrastructure requise pour la commercialisation du produit est aussi empaquetée dans des référentiels de code source ou de package à l'aide de logiciels tels que Docker, Ansible, Puppet, Chef, Gradle, Maven ou JFrog Artifactory.
  • Tests : cette phase comprend des tests continus, qu'ils soient manuels ou automatisés, et vise à assurer une qualité de code optimale à l'aide de logiciels comme JUnit, Codeception, Selenium, Vagrant, TestNG ou BlazeMeter.
  • Déploiement : cette phase peut inclure des outils de gestion, de coordination, de planification et d'automatisation de la mise en production des produits, notamment Puppet, Chef, Ansible, Jenkins, Kubernetes, OpenShift, OpenStack, Docker ou Jira.
  • Exploitation : cette phase permet de gérer les logiciels en production à l'aide d'outils tels qu'Ansible, Puppet, PowerShell, Chef, Salt ou Otter.
  • Supervision : cette phase permet d'identifier les problèmes affectant une version logicielle en production et de collecter les informations correspondantes avec New Relic, Datadog, Grafana, Wireshark, Splunk, Nagios ou Slack, entre autres.

Pratiques DevOps

Les pratiques DevOps améliorent en continu et automatisent les processus. Bon nombre d'entre elles portent sur une ou plusieurs phases du cycle de développement, notamment les exemples ci-dessous.

  • Développement continu : cette pratique couvre les phases de planification et de codage dans le cycle de vie DevOps et peut inclure des mécanismes de contrôle des versions.
  • Tests continus : cette pratique prévoit des tests automatisés, planifiés et continus du code lors de l'écriture ou de la mise à jour du code de l'application, qui accélèrent la livraison du code en production.
  • Intégration continue (CI) : cette pratique rassemble des outils de gestion de la configuration, de test et de développement pour assurer le suivi de la mise en production des différentes portions du code. Elle implique une collaboration étroite entre les équipes responsables des tests et du développement pour identifier et résoudre rapidement les problèmes de code.
  • Livraison continue : cette pratique automatise la publication des modifications du code après la phase de test, dans un environnement intermédiaire ou de préproduction. Un membre de l'équipe peut décider de publier ces modifications dans l'environnement de production.
  • Déploiement continu (CD) : à l'instar de la livraison continue, cette pratique automatise la publication d'un code nouveau ou modifié dans l'environnement de production. Les entreprises peuvent être amenées à publier plusieurs fois par jour des modifications du code ou des fonctionnalités. Dans un contexte de déploiement continu, les technologies de conteneur comme Docker et Kubernetes assurent la cohérence du code entre plusieurs plateformes et environnements.
  • Surveillance continue : cette pratique prévoit une surveillance continue du code exécuté et de l'infrastructure sous-jacente. Les développeurs reçoivent des retours sur les bogues ou sur les problèmes.
  • Infrastructure as code : cette pratique peut être suivie dans plusieurs phases DevOps pour automatiser le provisionnement de l'infrastructure requise pour une version logicielle. Les développeurs ajoutent le code de l'infrastructure à partir de leurs outils de développement. Par exemple, un développeur peut créer un volume de stockage à la demande via Docker, Kubernetes ou OpenShift. Cette pratique permet également aux équipes chargées des opérations de surveiller les configurations de l'environnement, d'effectuer le suivi des modifications et de simplifier la restauration des configurations.

Avantages du DevOps

Pour les entreprises qui suivent les pratiques DevOps, les avantages commerciaux et techniques sont évidents, et contribuent à améliorer la satisfaction des clients, pour la plupart.

  • Accélération et amélioration de la fourniture des produits
  • Résolution plus rapide des problèmes et complexité réduite
  • Plus grandes évolutivité et disponibilité
  • Stabilité accrue des environnements d'exploitation
  • Meilleure utilisation des ressources
  • Automatisation accrue
  • Meilleure visibilité sur les résultats du système
  • Innovation renforcée

Histoire du DevOps

De nombreuses méthodes DevOps destinées à rationaliser le développement et le déploiement des logiciels reposent sur des modèles agiles et sur la programmation lean. Le DevOps trouve son origine dans plusieurs mouvements nés de la volonté d'harmoniser les activités des développeurs et des équipes chargées des opérations.

Au début des années 2000, le maintien de la disponibilité est devenu une nécessité pour des sites web comme Google et Flickr dont la popularité ne cessait de croître. Des ingénieurs de fiabilité des logiciels (SRE) ont alors commencé à travailler en étroite collaboration avec les développeurs afin d'assurer le fonctionnement des sites après la mise en production du code.

Lors d'une conférence organisée en 2009, John Allspaw et Paul Hammond, deux ingénieurs de Flickr, présentent leur méthodologie, proche du DevOps, sous le titre « 10+ Deploys per Day: Dev and Ops Cooperation at Flickr » (10 déploiements par jour ou plus : la coopération entre les équipes de développement et des opérations chez Flickr). La même année, Patrick Debois organise la première édition des DevOps Days en Belgique. Un hashtag #DevOps fait également son apparition et le mouvement DevOps Days gagne du terrain à travers le monde.

Par la suite, d'autres outils et frameworks open source ont été proposés pour contribuer à l'avancement des objectifs DevOps.

NetApp et le DevOps

NetApp permet d'obtenir de meilleurs résultats avec le DevOps : les équipes chargées des opérations mettent en œuvre une infrastructure automatisée avec moins d'efforts d'ingénierie, et les développeurs travaillent de manière fluide dans des environnements fiables et prévisibles. Avec la technologie NetApp®, vous pouvez livrer en toute confiance les services et fonctionnalités dont votre entreprise a besoin pour optimiser la productivité des développeurs à la fois sur site et dans les environnements cloud.

Grâce à NetApp, les développeurs et les équipes chargées des tests, de l'assurance qualité et des opérations peuvent facilement consommer les ressources d'infrastructure-as-code (comme les volumes de stockage persistant) à l'aide des outils du pipeline DevOps qu'ils maîtrisent, notamment les API de stockage NetApp et les intégrations IaC avec Puppet, Ansible, Docker, Kubernetes, OpenShift, etc.

Mais NetApp va encore plus loin. La technologie NetApp permet aussi aux équipes des opérations de provisionner et de fournir en toute confiance des ressources aux développeurs et aux testeurs afin de réduire les cycles de codage et de test via l'auto-provisionnement de fonctionnalités rapides de stockage, comme les copies Snapshot ou les clones. Ainsi, il est possible de provisionner des copies de données de production en temps réel ou des jeux de codes en quelques secondes ou minutes pour accélérer le workflow de développement et de QA. Découvrez pourquoi NetApp est conçu pour le DevOps.

Pourquoi NetApp est conçu pour le DevOps

NetApp s'engage à encourager le DevOps avec thePub, une communauté qui favorise la collaboration, où les développeurs partagent conseils et astuces, et discutent des pratiques et protocoles DevOps les plus récents.

GUIDE COMPLET SUR LA CULTURE, LA TECHNOLOGIE ET LES OUTILS DEVOPS

La culture DevOps repose sur de petites équipes interdisciplinaires qui peuvent travailler indépendamment les unes des autres et assument ensemble la responsabilité de l'expérience utilisateur d'un logiciel.

Drift chat loading