CI, CD, release, flow, provisioning… Les avantages de DevOps sont nombreux mais cette approche a son lot de règles et son vocabulaire. Dans cet article, apprenez à parler le langage DevOps grâce à plus de 30 définitions simples des concepts-clés de cette philosophie du développement logiciel ! :)
Agile (méthode) :
Une méthode agile est une méthode utilisée dans le cadre de la création et/ou du développement d'un produit qui est :
- itérative
- collaborative
- incrémentale
Le but d'une méthode agile est de livrer rapidement au client final un produit qui correspond à ses besoins et à ses attentes, de la meilleure qualité possible et pouvant évoluer facilement.
Agile (manifeste) :
Le Manifeste Agile ou Agile Manifesto est une déclaration officielle déterminant les valeurs et les principes fondamentaux des méthodologiess agiles. Publié en 2001, il a été rédigé par dix-sept experts américains du développement d'applications. Ses quatre valeurs sont :
- les individus et leurs interactions,
- la fonctionnalité du produit final,
- la collaboration avec le client,
- l'adaptation au changement.
Le Manifeste Agile est défendu par l'association Agile Alliance.
Automatisation (automation) :
Fonctionnement d'un système informatique ou exécution d'un processus sans intervention humaine. L'automatisation permet de réduire grandement les risques d'erreurs, d'intégrer en temps réel de nouvelles fonctionnalités et de faire gagner du temps aux équipes de production.
Build :
Dans un plan Build - Run - Change, le Build est la phase de conception d'un système informatique. C'est à ce moment que l'on imagine l'application, ce qu'elle va permettre de faire, ses objectifs et la façon dont elle va être construite (combien de temps, quelles équipes, etc).
Change :
Dans un plan Build - Run - Change, le Change constitue ce qui concerne l'évolution d'un système informatique. Ce sont les moments durant lesquels on fait évoluer l'application.
Conteneur :
Un conteneur est un environnement informatique dédié à une application qui lui fournit les ressources (fichiers, variables, librairies) dont elle a besoin pour fonctionner. Il permet de disposer d'un espace d'exécution isolé pour tester de manière saine des applications ou des logiciels en cours de développement et identifier facilement les potentiels risques et failles de sécurité.
Definition of Done :
La Definition of Done est un l'accord de toutes les parties prenantes d'un projet sur un ensemble de spécifications et/ou de user stories qui doivent être achevées ou satisfaites pour qu'un système informatique soit considéré comme terminé.
Obama Mic Drop GIF from Obama GIFs
Déploiement :
Le déploiement ou deployment est l'introduction coordonnée de mises à jours et de nouveaux services au sein d'un système informatique (application, logiciel ...). L'un des buts de l'approche DevOps est de rendre les déploiements automatiques pour réduire son temps et rendre les nouveautés accessibles en temps réel pour les utilisateurs de l'application informatique.
Dev (DevOps) :
Dans l'approche DevOps, Dev désigne les équipes de développeurs qui sont engagées dans le développement logiciel.
DevOps :
DevOps est une approche visant à rapprocher les équipes de développement logiciel (Dev) et celles d'administration des systèmes (Ops) dans le but d'automatiser toutes les étapes de la création d'un système informatique grâce à des méthodes de partage, d’automatisation, de test et de mesure. L'approche DevOps repose notamment sur la livraison et l'intégration en continu permise grâce à la communication entre équipes Dev et équipes Ops pour réduire le temps nécessaire à la production et au déploiement d'applications dans un double objectif de qualité et rentabilité.
DevSecOps :
DevSecOps désigne l'automatisation des contrôles de sécurité dans le flux de travail DevOps permettant de réduire aussi tôt que possible les risques et les failles de sécurité.
Flow :
Façon dont les personnes et les productions évoluent et agissent au cours d'un processus.
Idempotence :
En développement informatique, l'idempotence signifie qu'une opération produit le même résultat, qu'elle soit réalisée une ou plusieurs fois.
Integration continue (continuous integration) :
L'intégration en continue consiste à intégrer de manière continuelle les nouveautés et les changements apportées à un projet de développement d'une application ou d'un système informatique et de le tester en permanence de manière automatique. L'intégration continue permet donc de repérer les failles dans le nouveau code aussi rapidement que possible et de réduire le temps total de développement informatique. Pour cela, une équipe de développement DevOps intègrent leur code au projet dans une version partagée au moins une fois par jour. Le code source est vérifié automatiquement à chaque fois qu'il est modifié.
Itérations :
Une itération est un cycle de production court (analyse, programmation, test...) qui se conclut par une livraison interne ou externe et qui dure entre une semaine et un mois.
Kanban :
Méthode agile visant à réduire les délais et les coûts en se concentrant sur les demandes et la satisfaction du client pour réduire les coûts inutiles grâce à une amélioration continue. Imaginée par Taiichi Ōno dans les années 1950 dans le cadre de la production d'automobiles au Japon, la méthode Kanban demande de se concentrer sur les demandes du marché. C'est donc une méthode à flux tirés à la différence des systèmes fondés sur les flux poussés. La méthode Kanban repose sur une visualisation des flux de développement qui permet de suivre l'avancement, la planification et de prioriser les tâches.
Tableau Kanban (Kanbam Board) :
Le Kanban Board est un outil qui permet de visualiser l'avancement des flux de travail et de prioriser les tâches à réaliser dans un planning. Les équipes agiles l'utilisent pour organiser et gérer leur travail. Le tableau Kanban se divise généralement en trois colonnes :
- À faire
- En cours
- Réalisé
Selon leur avancement, les membres d'une équipe agile font glisser les tâches et missions représentées dans le tableau sous forme d'étiquettes ("Kanban", en japonais).
Lean :
Approche de la production se concentrant sur l'élimination du gaspillage. Issue de l'industrie automobile japonaise dans laquelle elle a été intégrée dans les année 1970, le Lean management vise à maximiser la qualité des produits et la performance des processus en utilisant un minimum de ressources (humaines, temporelles et économiques). L'approche Lean recherche une performance maximale que l'on tente d'atteindre par l'amélioration des procédures et l'élimination du superflux.
Livraison continue (continuous delivery) :
Approche incrémentale de la production d'applications et de logiciels visant à réduire le temps de mise à disposition et les coûts de production. La livraison continue, ou continuous delivery, est une pratique clé de l'approche DevOps qui consiste à intégrer au fur et à mesure les nouveautés et les modifications apportées au code source du système informatique. Elle est rendue possible si elle est réalisée par un processus de développement, de test et de déploiement automatique : le Continuous Delivrery Pipeline. Une fois que le développeur a intégré son code au répertoire source, il est testé et déployé automatiquement, rendant les mises à jours disponibles immédiatement.
Microservices :
Service d'une application informatique indépendant des autres. Dans une architecture orientée service, une application est construire comme un ensemble de microservices qui fonctionnent de manière autonome. Ainsi, si l'un deux est en panne, il ne met pas en péril la totalité de l'application.
Ops (DevOps) :
Dans l'approche DevOps, Ops désigne les équipes qui sont engagées dans l'administration des systèmes et des infrastructures.
Orchestration :
En informatique, l'orchestration désigne les processus automatiques de gestion et d'organisation des systèmes informatiques. Dans l'approche DevOps, l'orchestration est la façon dont se coordonnent de manière automatique les outils employés. L'orchestration des conteneurs désigne la façon dont les conteneurs d'applications d'un projet de développement s'organisent et se coordonnent automatiquement.
Jurowski Orchestra GIF from Jurowski GIFs
Provisioning :
L'approvisionnement, ou provisionnement, ou provisioning, désigne les processus d'allocation automatique de ressources aux serveurs, aux applications ou aux utilisateurs, par exemple.
Récit utilisateur (user story) :
Une user story est un besoin exprimé par le client ou l'utilisateur d'un système informatique. Il permet de concevoir les fonctionnalités nécessaires pour y répondre, à condition d'être formulé de manière suffisamment précise. Pour ce faire, il est généralement exprimé sous la forme :
En tant que QUI, je veux QUOI dans le but de POURQUOI.
Release :
Une release est la mise à disposition d'une nouvelle version d'un logiciel ou d'une application informatique agrémentée d'une ou plusieurs modifications. Les nouveautés peuvent par exemple être des améliorations apportées en terme de sécurité, de stabilité ou de fonctionnalités.
Run :
Dans un plan Build - Run - Change, le Run constitue ce qui concerne l'exécution et la maintenance d'un système informatique.
Scrum :
Méthodologie agile incrémentale basée sur la collaboration avec le client ayant pour objectif de concentrer les efforts d'une ou plusieurs équipes sur les priorités pour le client. Le but de cette approche de la gestion de projet agile est de délivrer le produit de la meilleure qualité. Dans une équipe utilisant la méthode Scrum, le travail est divisé en sprints. Au sein de l'organisation, le Scrum Product Owner représente les intérêts du client.
Sprint :
Cycle de travail d'une durée courte (généralement comprise entre deux et quatre semaines) durant lequel une ou plusieurs fonctionnalités sont élaborées, développées testées et déployées. C'est un cycle qui fait partie d'un processus itératif et incrémental, un modèle agile. Un sprint s'achève par une livraison et dans certains cas, une rétrospective.
Test Driven Development (TDD) :
Pratique de développement logiciel basé sur des cycles de production courts et dont l'amélioration de la qualité est basée sur les résultats de tests automatiques définis en amont.
Time to Value :
Le Time to Value désigne le temps nécessaire à une organisation pour permettre à une fonctionnalité d'avoir de la valeur. Certaines fonctionnalités ont une valeur immédiate alors que d'autres sont développées dans le but d'acquérir de la valeur dans le futur.
Waterfall :
Un modèle en cascade ou waterfall, aussi désigné "cycle en V", est une méthode de gestion de projet linéaire dans lequel se succèdent différentes phases d'analyse, d'élaboration, de production et de tests avant la livraison finale. Dans ce modèle, les phases de travail dépendent de celles d'avant.