Quels outils déployer pour que DevOps et agilité ne fassent plus qu’un ?

Les entreprises sont aujourd’hui nombreuses à avoir compris l’importance des applications. Dans ce contexte, avoir une culture adaptée et disposer des outils adéquats pour leur développement et leur maintenance s’avère nécessaire.

DevOps pour améliorer l'agilité de l'entreprise

Aujourd'hui, DevOps est l'un des meilleurs moyens pour assurer l'agilité de l'entreprise du point de vue des logiciels et des applications, des idées à la distribution sur le marché. Ce que l’on entend par DevOps, c’est un mélange équilibré de culture adaptée, d'outils appropriés et de processus de distribution/gestion. Si l'un de ces éléments ne suit pas, le flux ne sera pas aussi efficace que prévu ou ne fonctionnera peut-être même pas du tout.

Les différentes phases et outils d'un flux DevOps typique

Bien qu’il existe plusieurs moyens de modéliser le flux, la représentation basée sur le symbole de l'infini illustre une boucle DevOps générique. S'agissant d'une boucle fermée, l'ordre des phases n'a pas beaucoup d'importance. Néanmoins, il convient de garder à l'esprit que la limite entre les phases doit être aussi floue que possible, ce qui explique que la plupart des outils couvrent intentionnellement plusieurs phases et que la répartition sous forme de phases ne soit pas une science exacte.

La planification

De nombreux outils (dont la grande majorité open source) peuvent être utilisés pour la phase de planification, de la gestion des différentes fonctionnalités, des idées et des projets au suivi des problèmes, des bogues et de la collaboration en général. Cette vaste catégorie comprend des outils tels que Trello, Taiga, JIRA, RedmineMantisRequest Tracker ou Bugzilla.

Code

Les développeurs ont bien entendu besoin de langages de programmation pris en charge par le système d'exploitation sous-jacent ou par la plateforme sur laquelle leurs applications doivent être exécutées. Dans le cadre DevOps, cela signifie une exécution similaire dans les environnements de développement et de production (une discussion sur les conteneurs, facilitant cela, peut d’ailleurs avoir lieu à cette occasion). Les applications ont besoin d'une sorte d'environnement de développement intégré (bien que tous les développeurs ne soient pas unanimes sur ce point), incluant notamment la gestion du contrôle des sources (SCM) pour assurer un développement continu collaboratif.

En termes de système d'exploitation, de machine virtuelle, de cloud public ou d'hôte de conteneurs, Linux est de loin le meilleur choix pour n'importe quel codeur. Il lui est pour cela possible d’utiliser les programmes pour développeurs des distributions Linux d'entreprise ou des distributions communautaires gratuites. Il est également important de vérifier si son environnement de développement lui permet de créer son code pour son architecture cible (x86, Aarch64, z, Power ou autre).

Création

Une fois le codage terminé, il est temps de créer l'application, le package ou l'image. Il est pour cela possible de s’appuyer sur des systèmes génériques tels que Open Build Service, conçus pour créer et distribuer des paquets à partir de sources de manière homogène et sur un large éventail de systèmes d'exploitation et d'architectures matérielles. Pour créer un système d'exploitation/une image hôte, Open Build Service peut être complété par d’autres outils permettant la création et le déploiement de services de cloud public et privé ou autonomes. D’autres solutions peuvent également venir se greffer pour permettre l'intégration d’Open Build Service aux distributions Linux prises en charge.

Test et intégration continue/déploiement continu

Pour continuer à profiter des avantages offerts par le DevOps, il convient d’inclure des tests et une intégration permanents dans le flux. OpenQA, par exemple, est une infrastructure de test automatisée pour les applications d'interface utilisateur graphique. Cet outil complète les tests de scripts et les contrôles des sorties traditionnels. L'une des plates-formes les plus couramment utilisées pour l'intégration continue/le déploiement continu est Jenkins, mais il existe aussi d'autres solutions, comme Travis CI et Concourse.

Automatisation du déploiement et de la configuration continus

L'automatisation du déploiement et de la configuration continus est une autre phase importante du processus. Ici encore, plusieurs possibilités s'offrent aux développeurs. De ChefPuppetJuju et Ansible à Salt, plusieurs outils sont envisageables en fonction de l’architecture existante et des besoins métiers, opérationnels et techniques.

Gestion et monitoring

Une fois déployées selon la philosophie DevOps, les applications sont gérées (dans ce processus, l'orchestration des conteneurs et des ressources est capitale) et contrôlées de manière à alimenter en permanence la boucle et le flux DevOps pour, in fine, améliorer les performances, résoudre les problèmes ou s'adapter à l'apparition de défauts ou de nouvelles exigences. De nombreuses solutions permettent d'obtenir des informations, dont certaines pour des environnements conteneurisés, tandis que d’autres se concentrent spécifiquement sur les performances des applications, avec notamment des fonctionnalités d'analyse permettant d'interpréter les données.

Qu’une entreprise débute tout juste ou soit déjà experte de DevOps, elle pourra s’appuyer sur les outils conçus pour l’aider à améliorer son agilité, qui ne cessent de s’améliorer. Les développeurs et les équipes IT doivent ainsi se tenir prêt à constamment s’adapter et à améliorer la façon dont ils délivrent des applications à leur organisation. L'adoption d'une mentalité DevOps et sa mise en œuvre représentent un processus sans fin (ou du moins, les experts du secteur et les analystes n'en voient pas la fin pour le moment). Les étapes suivantes dépendent de la situation de chaque entreprise, notamment en termes d'activité, de culture existante, d'outils et de processus. 

Collaboratif / Cloud public