DevOps accélère la distribution des logiciels d'une qualité optimale en combinant et en automatisant le travail des équipes de développement de logiciels et des opérations IT.
Par définition, DevOps décrit un processus de développement de logiciels et un changement de culture organisationnelle qui accélère la distribution de logiciels de meilleure qualité en automatisant et en intégrant les efforts des équipes de développement et des opérations informatiques, deux groupes qui, traditionnellement, travaillaient séparément ou de manière isolée.
Dans la pratique, les meilleurs processus et cultures DevOps vont au-delà du développement et des opérations pour intégrer dans le cycle de vie du développement logiciel les contributions de toutes les parties prenantes de l'application, y compris l'ingénierie de la plateforme et de l'infrastructure, la sécurité, la conformité, la gouvernance, la gestion des risques, le secteur d'activité, les utilisateurs finaux et les clients.
DevOps représente l'état actuel de l'évolution des cycles de distribution des logiciels au cours des 20 dernières années et plus, des versions géantes du code de l'ensemble de l'application tous les mois, voire toutes les années, aux petites mises à jour fonctionnelles itératives publiées tous les jours ou plusieurs fois par jour.
En fin de compte, DevOps vise à répondre à la demande toujours croissante des utilisateurs de logiciels en matière de nouvelles fonctions fréquentes et innovantes et de performances et de disponibilité ininterrompues.
Télécharger le livre électronique
Jusqu'à peu avant l'année 2000, la plupart des logiciels étaient développés et mis à jour selon la méthode de la cascade, une approche linéaire des projets de développement à grande échelle. Les équipes de développement de logiciels passaient des mois à développer de grands corps de nouveau code qui avaient un impact sur la plupart ou la totalité de l'application. Les changements étant très importants, ils passaient plusieurs mois supplémentaires à intégrer ce nouveau code dans le codebase.
Ensuite, les équipes chargées de l'assurance qualité (QA), de la sécurité et des opérations passeront encore des mois à tester le code. Il en résultait des mois, voire des années, entre les versions des logiciels, et souvent plusieurs correctifs importants ou des corrections de bogues intervenaient entre les versions. Cette approche « big bang » de la distribution de fonctions était souvent caractérisée par des plans de déploiement complexes et risqués, des blocages difficiles à programmer avec les systèmes en amont et en aval, et le « grand espoir » de l'informatique que les exigences métier n'avaient pas radicalement changé dans les mois précédant la mise en production.
Pour accélérer le développement et améliorer la qualité, les équipes de développement ont commencé à adopter des méthodologies Agile de développement de logiciels, qui sont itératives plutôt que linéaires et se concentrent sur la réalisation de mises à jour plus petites et plus fréquentes du codebase de l'application. Parmi ces méthodologies, les plus importantes sont l' intégration continue et la distribution continue, ou CI/CD. Avec la méthodologie CI/CD, des blocs plus petits de nouveau code sont fusionnés avec la base de code toutes les semaines ou tous les quinze jours, puis sont automatiquement intégrés, testés et préparés en vue du déploiement dans l'environnement de production. La méthode Agile a fait évoluer l'approche « big bang » en une série de « petits pas » qui ont également permis de compartimenter les risques.
Plus ces pratiques de développement Agile accéléraient le développement et la distribution des logiciels, plus elles faisaient des opérations informatiques encore isolées, approvisionnement du système, configuration, tests d'acceptation, gestion, surveillance, le nouveau goulot d'étranglement dans le cycle de vie de la distribution des logiciels.
DevOps est donc né de l'agilité. Il a apporté de nouveaux processus et outils qui étendent l'itération continue et l'automatisation CI/CD au reste du cycle de vie de la distribution de logiciels. Et il a mis en place une collaboration étroite entre le développement et les opérations à chaque étape du processus.
UrbanCode Deploy
UrbanCode Velocity
Rational Test Workbench
IBM Architecture Room Live
IBM Cloud Pak for Watson AIOps
Le cycle de vie DevOps (parfois appelé « pipeline de distribution continue », lorsqu'il est présenté de manière linéaire) est une série de processus de développement itératifs et automatisés, ou flux, exécutés dans le cadre d'un cycle de développement plus large, automatisé et itératif, visant à optimiser la distribution rapide de logiciels de haute qualité. Le nom et le nombre de flux peuvent varier selon la personne à qui vous demandez, mais ils se résument généralement à ces six éléments :
Trois autres flux continus importants se produisent entre ces flux :
Tests continus : les cycles de vie DevOps classiques comprennent une phase de « test » discrète qui intervient entre l'intégration et le déploiement. Toutefois, DevOps a progressé de manière à ce que certains éléments de test puissent intervenir au cours de la planification (BDD - programmation pilotée par le comportement), du développement (test unitaire, test de contrat), de l'intégration (analyses de code statique, analyses CVE, linting), du déploiement (test de fumée, test de pénétration, test de configuration), des opérations (test du chaos, test de conformité) et de l'apprentissage (test A/B). Les tests constituent une forme puissante d'identification des risques et des vulnérabilités et offrent aux services informatiques la possibilité d'accepter, d'atténuer ou de corriger les risques.
Sécurité : alors que les méthodologies en cascade et les implémentations Agile « ajoutent » des flux de sécurité après la distribution ou le déploiement, DevOps s'efforce d'intégrer la sécurité dès le début (planification), lorsque les problèmes de sécurité sont les plus faciles et les moins coûteux à résoudre, et de manière continue pendant le reste du cycle de développement. Cette approche de la sécurité est appelée shift left (tests précoces) (qui est plus facile à comprendre dans la figure 1). Certaines organisations ont eu moins de succès que d'autres dans le left shift, ce qui a conduit à l'émergence de DevSecOps (voir ci-dessous).
Compliance. Il est également préférable d'aborder la question de la conformité auxréglementations (gouvernance et risque) dès le début et tout au long du cycle de développement. Les industries réglementées ont souvent l'obligation de fournir un certain niveau d'observabilité, de traçabilité et d'accès à la façon dont les fonctions sont livrées et gérées dans leur environnement opérationnel d'exécution. Cela nécessite la planification, le développement, le test et l'application des règles dans le pipeline de distribution continue et dans l'environnement d'exécution. La vérifiabilité des mesures de conformité est extrêmement importante pour prouver la conformité à des auditeurs tiers.
Il est généralement admis que les méthodes DevOps ne peuvent fonctionner sans un engagement envers la culture DevOps, qui peut être résumée comme une approche organisationnelle et technique différente du développement logiciel.
Au niveau organisationnel, DevOps exige une communication, une collaboration et un partage des responsabilités permanents entre toutes les parties prenantes à la distribution des logiciels (les équipes de développement logiciel et des opérations informatiques, mais aussi les équipes chargées de la sécurité, de la conformité, de la gouvernance, des risques et des secteurs d'activité), afin d'innover rapidement et en permanence, et d'intégrer la qualité dans les logiciels dès le départ.
Dans la plupart des cas, la meilleure façon d'y parvenir est de démanteler ces silos et de les réorganiser en équipes DevOps transversales et autonomes qui peuvent travailler sur des projets de code du début à la fin, de la planification au retour d'information, sans avoir à passer le relais à d'autres équipes ou à attendre leur approbation. Dans le contexte du développement Agile, le partage des responsabilités et la collaboration sont les fondements d'une focalisation commune sur le produit qui a un résultat valable.
Sur le plan technique, DevOps exige un engagement en faveur de l'automatisation, qui permet de faire avancer les projets au sein des flux et entre eux, et en faveur du retour d'information et de la mesure , qui permettent aux équipes d'accélérer continuellement les cycles et d'améliorer la qualité et les performances des logiciels.
Les exigences du DevOps et de la culture DevOps exigent des outils qui prennent en charge la collaboration asynchrone, intègrent de manière transparente les flux DevOps et automatisent autant que possible l'ensemble du cycle de vie DevOps. Les catégories d'outils DevOps incluent :
Cloud natif est une approche de la création d'applications qui exploitent les technologies fondamentales du cloud computing. L'objectif de l'approche cloud natif est de permettre un développement, un déploiement, une gestion et une performance cohérents et optimaux des applications dans les environnements publics, privés et multiclouds.
Aujourd'hui, les applications cloud natives sont généralement
:À bien des égards, le développement cloud natif et DevOps sont faits l'un pour l'autre.
Par exemple, le développement et la mise à jour de microservices, c'est-à-dire la distribution itérative de petites unités de code dans un codebase, sont parfaitement adaptés aux cycles de gestion et de publication rapides de DevOps. Et il serait difficile de gérer la complexité d'une architecture de microservices sans déploiement et opération DevOps. Une récente enquête d'IBM auprès de développeurs et de responsables informatiques a révélé que 78 % des utilisateurs actuels de microservices prévoient d'augmenter le temps, l'argent et les efforts qu'ils ont investis dans cette architecture, et que 56 % des non-utilisateurs sont susceptibles d'adopter les microservices dans les deux prochaines années .
En empaquetant et en fixant de manière permanente toutes les dépendances du système d'exploitation, les conteneurs permettent des cycles de CI/CD et de déploiement rapides, car toute l'intégration, les tests et le déploiement ont lieu dans le même environnement. Et l'orchestration Kubernetes exécute les mêmes tâches de configuration continue pour les applications conteneurisées qu'Ansible, Puppet et Chef pour les applications non conteneurisées.
La plupart des grands fournisseurs de cloud computing, dont AWS, Google, Microsoft Azure et IBM Cloud, proposent une solution de pipeline DevOps géré.
DevSecOps est un DevOps qui intègre et automatise en permanence la sécurité tout au long du cycle de vie DevOps, du début à la fin, de la planification au retour d'information, puis de nouveau à la planification.
En d'autres termes, DevSecOps est ce que DevOps était censé être dès le départ. Toutefois, deux des premiers défis importants (et qui sont restés pendant un certain temps insurmontables) liés à l'adoption de DevOps étaient l'intégration de l'expertise en sécurité aux équipes pluridisciplinaires (problème culturel), et l'implémentation de l'automatisation de la sécurité dans le cycle de vie DevOps (problème technique). La sécurité a été perçue comme « l'équipe du « non »» et comme un goulot d'étranglement coûteux dans de nombreuses pratiques DevOps.
DevSecOps est apparu comme un effort spécifique pour intégrer et automatiser la sécurité comme prévu à l'origine. Dans le cadre de DevSecOps, la sécurité est un citoyen de « première classe » et une partie prenante au même titre que le développement et les opérations, et intègre la sécurité au processus de développement en mettant l'accent sur le produit.
Visionnez « Qu'est-ce que DevSecOps ? » pour en savoir plus sur les principes, les avantages et les cas d'utilisation, avantages et cas d' utilisation DevSecOps
L'ingénierie de la fiabilité des sites (SRE) utilise des techniques d'ingénierie logicielle pour automatiser les tâches de l'équipe des opérations informatiques, par exemple, la gestion des systèmes de production, la gestion des changements, la réponse aux incidents, voire la réponse aux situations d'urgence, qui, autrement, pourraient être effectuées manuellement par les administrateurs de systèmes. SRE cherche à transformer l'administrateur système classique en ingénieur.
L'objectif ultime de SRE est similaire à celui de DevOps, mais plus spécifique : SRE vise à équilibrer le désir d'une organisation de développer rapidement des applications avec son besoin de respecter les niveaux de performance et de disponibilité spécifiés dans les accords sur les niveaux de service (SLA) avec les clients et les utilisateurs finaux.
Les ingénieurs chargés de la fiabilité des sites parviennent à cet équilibre en déterminant un niveau acceptable de risque opérationnel causé par les applications, appelé « budget d'erreur », et en automatisant les opérations pour atteindre ce niveau.
Au sein d'une équipe DevOps transversale, SRE peut servir de passerelle entre le développement et les opérations, en fournissant les mesures et l'automatisation dont l'équipe a besoin pour faire passer les changements de code et les nouvelles fonctions dans le pipeline DevOps aussi rapidement que possible, sans « rompre » les conditions des accords sur les niveaux de service de l'organisation.
Plus d'informations sur l'ingénierie de la fiabilité des sites (SRE)
DevOps exige une collaboration entre les parties prenantes de l'entreprise, du développement et des opérations, afin de distribution et d'exploiter rapidement des logiciels fiables. Les organisations qui utilisent les outils et les pratiques DevOps tout en transformant leur culture construisent une base puissante pour la transformation numérique, et pour la modernisation de leurs applications , car le besoin d'automatisation s'élargit dans les opérations métier et informatiques.
L'évolution vers une plus grande automatisation doit commencer par de petits projets dont le succès est mesurable, et que vous pouvez ensuite adapter et optimiser pour d'autres processus et dans d'autres parties de votre organisation.
En travaillant avec IBM, vous avez accès à des fonctionnalités d'automatisation optimisées par l'IA, notamment des flux préconfigurés, pour rendre chaque processus de services informatiques plus intelligent, libérant ainsi les équipes pour qu'elles se concentrent sur les problèmes informatiques les plus importants et accélèrent l'innovation.
Pour aller plus loin :
Démarrez aujourd'hui avec un compte IBM Cloud.
IBM Cloud Pak for Watson AIOps utilise l'apprentissage automatique et la compréhension du langage naturel pour mettre en corrélation les données structurées et non structurées dans l'ensemble de votre chaîne d'outils des opérations en temps réel, afin de découvrir les informations cachées et identifier plus rapidement les causes premières. En éliminant le besoin de tableaux de bord multiples, Watson AIOps fournit des informations et des recommandations directement dans les flux de votre équipe pour accélérer la résolution des incidents.
Qu'il s'agisse des flux métier ou de vos opérations informatiques, nous vous couvrons avec une automatisation optimisée par l'IA. Découvrez comment les grandes entreprises se transforment.
Créez, modernisez et gérez avec confiance les applications de façon sécurisée dans tous les clouds.
Qu'il s'agisse des flux métier ou de vos opérations informatiques, nous vous couvrons avec une automatisation optimisée par l'IA.