# Chaîne d'outils Devops

Une chaîne d'outils Devops est une combinaison d’outils participant au développement, à la distribution et plus généralement à la gestion d’applications logicielles tout au long de leur cycle de développement. Chaque entreprise qui utilise la méthode DevOps la coordonne.
En général, les outils DevOps conviennent chacun à une ou plusieurs activités qui traitent les initiatives spécifiques au DevOps : Plan (planifier), Create (créer), Verify (vérifier), Package (emballer), Release (livrer), Configure (configurer) et Monitor (surveiller)$^,$.

## La chaîne d’outils

Dans l'industrie logicielle, une chaîne d’outils est un ensemble d’outils de programmation utilisés pour réaliser une tâche complexe en développement de logiciel pour créer un logiciel, typiquement un autre programme informatique ou un ensemble de programmes reliés. Généralement, les outils qui forment une chaîne sont exécutés successivement pour que le produit ou l’environnement résultant d'un outil devienne la donnée ou l’environnement d’entrée du suivant. Ce n’est cependant pas forcément toujours le cas, et le terme est aussi utilisé quand on parle d’un ensemble d’outils qui ne sont pas exécutés consécutivement.
Le DevOps étant un ensemble de méthodes qui insistent sur la collaboration et la communication entre les développeurs et les autres professionnels de l'informatique, tout en automatisant les processus de livraison des logiciels et les changements d’infrastructure, sa mise en œuvre peut inclure la série d’outils utilisés à différentes étapes du cycle. La mise en place de DevOps est un changement culturel qui exige la collaboration entre le développement (Dev) et l'exploitation (Ops), il ne peut pas y avoir un produit considéré, seul, comme l’outil de DevOps. C’est plutôt une collection d’outils, venant le cas échéant de plusieurs fournisseurs, qui sont utilisés en combinaison dans une ou plusieurs étapes du cycle$^,$$^,$.

## Les étapes de DevOps
### Plan : Planifier

Planifier est composé en fait en deux parties : « définir » et « planifier ». Cette étape concerne la valeur commerciale et les exigences des applications. Plus précisément, les activités de la planification comprennent la définition de :
* Indicateurs, objets, et retours d’expérience de production
* Spécifications
* Métriques métier
* Métriques de mise à jour et de mise en production
* Planning et analyse de rentabilité des versions
* Politique de sécurité.
Plusieurs catégories d'informaticiens sont impliquées dans ces procédures : le propriétaire des applications de l’entreprise, les développeurs de logiciel, l'architecte logiciel, le gestionnaire des mises en production continue, l'agent de sécurité et les gestionnaires de l'infrastructure. Parmi les sociétés qui offrent des solutions automatisant l’étape Plan, l'on trouve Atlassian, CA Technologies, iRise et Jama Software.

### Create : Créer

L’étape Create comprend la construction, le codage et la configuration du processus de développement de logiciel. Les activités associées sont :
* La conception et la configuration du logiciel,
* Le codage, y compris les contrôles de qualité et de performance,
* Le build du logiciel (assemblage des différentes parties), et sa performance,
* La préparation de la livraison.
Les outils et sociétés fournisseurs dans cette catégorie se chevauchent souvent avec ceux des autres étapes, ce qui est normal car le DevOps consiste à décloisonner les équipes. Quelques solutions et fournisseurs notables sont Bitbucket, GitLab CE, GitHub, Electric Cloud et CFEngine.

### Verify : Vérifier

L’étape Verify est directement liée à la garantie de qualité de la livraison du logiciel : il comporte des activités conçues pour assurer que la qualité logicielle est assurée et que la plus haute qualité est déployée à la production. Les activités principales sont :
* Test d’acceptation,
* Test de régression,
* Analyse de sécurité et vulnérabilité,
* Test de performance, de charge,
* Test de résilience par utilisation de Chaos Monkey par exemple,
* Test de configuration.
Les fournisseurs qui offrent des solutions pour cette étape entrent dans quatre catégories principales : automatisation des tests (ThoughtWorks, IBM, HP), analyse statique (Parasoft, Microsoft, SonarSource), laboratoire de test (Skytap, Microsoft, Delphix), et sécurité (HP, IBM, Trustwave, FlawCheck).

### Package : Empaqueter

L'étape Package concerne les activités impliquées une fois la livraison prête pour le déploiement. Elle est parfois aussi appelée « Préproduction » (ou « Préprod ») et comprend notamment :
* L’approbation et l’approbation préalable
* La configuration de livraison
* Les livraisons déclenchables
* Le regroupement et l'emballage des livraisons.
Les outils qui traitent cette étape sont les gestionnaires universels de paquets comme : Artifactory (JFrog), Nexus (SonaType) et ProGet (Inedo).

### Release : Livrer

Les activités de programmation, d’orchestration, de provisionnement et de déploiement de logiciel en production et en environnement ciblé sont toutes incluses dans l’étape Release. Plus spécifiquement :
* La coordination des livraisons
* Le déploiement et la promotion des applications
* Le repli et la récupération
* Les livraisons planifiées/programmées.
Les solutions qui couvrent ces aspects de la chaîne d’outils sont l’ARA (Application Release Automation), l’automatisation du déploiement et la gestion des mises en production (release management). Les fournisseurs concernés sont Automic, Clarive, Inedo, BMC Software, IBM, VMware, et XebiaLabs.

### Configure : Configurer

L'étape Configure se trouve du côté Ops (exploitation) de DevOps. Une fois le logiciel déployé, il peut y avoir d’autres activités de configuration et en préparation de l’infrastructure, comme :
* L'infrastructure de stockage, la mise en place et la configuration de la base de données et du réseau ;
* La mise en place et la configuration de l’application.
Les solutions pour faciliter ces activités sont les outils de Continuous Configuration Automation, gestion de configuration et Infrastructure as Code. Par exemple : Ansible, Chef, Puppet, Otter et Salt.

### Monitor : Surveiller

Monitor est un lien important dans la chaîne d’outils DevOps. Il permet à l’organisation informatique d’identifier un problème précis d’une livraison particulière et d'en comprendre l’impact sur l’utilisateur final. Ses activités sont :
* Performances de l'infrastructure
* L’expérience et la réaction de l’utilisateur final
* Les métriques et les statistiques de production.
Les informations venant des activités Monitor ont souvent un impact sur les activités Plan requises pour les changements et pour les nouveaux cycles de livraison. Les fournisseurs, dans cette étape, sont BigPanda, Ganglia, New Relic et Wireshark.