MARGO

Actualité

Mieux comprendre le DevOps pour l’appliquer en entreprise

Par Mathieu Durand Business Manager

29/10/2020

Devenu incontournable dans les DSI des grands groupes, le DevOps a plus que jamais le vent en poupe. Cette pratique visant à unifier le développement logiciel (Dev) et l’administration des infrastructures (Ops) est en effet devenue stratégique et permet aux organisations de gagner en agilité, en fiabilité et donc en compétitivité. Culture agile, sécurité (contrainte incontournable en cas de migration dans le cloud), outils de développement, qualité de code, vélocité des tests, maintenabilité des applications sont autant d’enjeux auquel doit répondre ce profil hybride à la double compétence dev et administration. Dans cet article, nous vous proposons de revenir sur les origines du DevOps, ses grands principes et les outils les plus utilisés.

 

Les origines du DevOps


Dans une approche traditionnelle, les développeurs (Dev) collectent les exigences métiers et en développent le code, le testent, puis livrent l’application à l’équipe de production et d’exploitation (Ops). Les Opérationnels vont ensuite mettre l’application en production et gérer l’exploitation de cette dernière. 

Mais cette approche pose un problème majeur car développeurs et opérationnels ont des objectifs divergents. D’un côté, l’équipe de développement doit répondre à des contraintes fortes de Time to Market pour répondre rapidement aux exigences et attentes du marché. Tandis que de leur côté, l’équipe des opérationnels doit garantir la stabilité et la sécurité du système qui passe par un contrôle très sévère des changements apportés au système d’information (une panne de production pouvant coûter très cher à l’entreprise, qu’il s’agisse de perte de business potentiel, d’image dégradée ou encore de contraintes légales non respectées). 

L’opposition de ces objectifs crée donc un conflit d’intérêt majeur entre ces deux équipes : les développeurs vont blâmer les opérationnels pour les retards et problèmes de livraison. De leur côté, les opérationnels tiennent les développeurs pour responsable des incidents en production liés à une mauvaise qualité du code.

L’approche DevOps consiste donc à réconcilier ces deux mondes (Dev-Ops). Le but est d’aligner des objectifs à court termes qui peuvent être différents autour d’une ligne directrice commune : la création de valeur pour l’entreprise.

 

Les fondamentaux du DevOps

 

Le DevOps doit répondre à des enjeux de Time to Market, de qualité des produits développés et d’efficacité des équipes. Pour atteindre ces objectifs, la culture DevOps repose sur 5 grands principes que nous détaillerons ci-après.

Infographie culture DevOps Margo

  • La culture de collaboration (rôle de facilitateur de la communication en interne)

La culture de la collaboration est majeure car elle permet de donner à toutes les équipes une vision globale du système d’information, le but ultime étant de fluidifier et de faciliter l’intercommunication entre les Dev et les Ops.

  • La création de valeur comme objectif commun

La recherche systématique de valeur ajoutée pour le client se décline à travers la mise en place de cycles d’amélioration continue et donc la suppression des tâches qui n’apportent pas de valeur. Elle peut également se faire grâce au rapprochement des différentes équipes en les incitant à se concentrer sur la valeur business et sur la satisfaction des utilisateurs. 

  • Le partage comme valeur intrinsèque (accepter et banaliser les erreurs)

Le principe de partage reprend la définition même du terme DevOps : c’est à dire, faire partager un objectif commun aux deux équipes pour travailler ensemble. Mais il tient également compte du partage du travail au quotidien : des problématiques rencontrées, des connaissances et retours d’expériences. L’objectif étant de faire  émerger un sentiment d’empathie et d’entraide et donc de nouvelles idées !

  • La mise en place de métriques qui peuvent être pertinentes

La mise en place de métriques est nécessaire car on ne peut parler d’amélioration que si l’on est capable de mesure l’état initial, l’état final et la transition pour y arriver. La démarche DevOps prévoit ainsi l’instauration et le suivi de métriques métier pour la vitalité du business, de métriques d’équipe pour  la performance des équipes et d’indicateurs de satisfaction client pour améliorer les produits. 

  • L’automatisation des tâches chronophages et sans création de valeur

L’automatisation des processus se décline en 3 grandes étapes outillées :

  • Provisioning d’environnement automatisé pour les Devs (avec Docker par exemple). 
  • Tests automatisés pour évaluer la qualité du nouveau code (Sélénium pour les test fonctionnels)
  • Phase de déploiement automatisée une fois la phase de test validée (déploiement applicatif facilité avec Puppet)

L’automatisation doit notamment permettre de converger vers le Déploiement continu. Il s’agit d’une  approche qui considère qu’une application doit être construite de telle manière qu’elle puisse être envoyée en production à tout moment. C’est à dire qu’à partir du moment où les applications réussissent les tests d’acceptations automatisés, elles doivent être automatiquement déployées en production.

L’objectif est d’avoir un rythme de production plus régulier, plus rapide et plus petit, ce qui sera moins risqué qu’une grosse mise à jour. L’objectif principal du développement continu étant une accélération du time to market. 

Avec ce cycle de livraison plus rapide et plus régulier, il est plus facile pour l’entreprise d’avoir des retours clients sur le produit livré. Et en exploitant ces données, il est plus facile d’aboutir par itération au produit qui répondra le mieux au besoin du marché et aux exigences de qualité. 

 

Le DevOps en pratique

 

Dans une démarche DevOps, les Devs collectent les besoins métier et développent le nouveau code de l’application pour répondre à ces besoins. L’application est ensuite automatiquement compilée et testée à différents niveaux, et si le code atteint le niveau d’exigence demandé en terme de qualité, l’évolution est livrée en production automatiquement et rapidement. 

Le travail des Ops est facilité, car les Devs ont intégré les contraintes de leur équipe dans la production du code, comme par exemple des métriques d’exploitation permettant de surveiller l’état de santé de l’application.   

Les équipes Ops, quant à elles, comprennent mieux les besoins des développeurs. Cela permet une meilleure optimisation des ressources de production, un meilleur monitoring et une meilleur remontée d’erreurs.

 

CI/CD, gestion des configurations, monitoring… Mais comment cela se traduit technologiquement ?

 

Nous allons maintenant voir la liste des outils et technologies qui peuvent être utilisés afin de mettre en place une approche DevOps. Ces outils sont donnés à titre indicatif, il en existe beaucoup d’autres. 

 

Se lancer dans le développement CI/CD (Intégration Continue / Déploiement Continu)

Le développement CI/CD traduit la phase de test qui challenge le code. L’acronyme CI/CD signifie « Intégration Continue/Déploiement Continu ». Plutôt que les équipes de développement livrent leur code source aux opérationnels en un seul bloc et à un seul moment, le code est testé tout au long de son écriture ou de ses modifications. Les outils d’intégration et de déploiement réduisent le temps nécessaire pour créer de nouvelles fonctions. Le code, fonctionnel puisque vérifié, servira de base aux opérationnels.

Voici des exemples d’outils utilisés dans cette phase :

  • GIT : c’est un outil de versionning, utilisé partout, qui permet notamment d’améliorer les cycles de développement.
  • SourceForge : l’adversaire de GitHub permet de créer des projets en open source grâce à une palette d’outils très complète : wikis de projets, accès à une BDD MySQL, url de sous-domaines uniques, métriques et analyses.
  • GitLab et son accès facilité à Azure DevOps. Si vous voulez éviter les deux premières sources.
  • Bitbucket et son environnement complet intégrant un puissant outil de suivi des problèmes
  • Beanstalk permet de coder, tester et déployer directement depuis un navigateur.

 

Doper la production

Grâce aux conteneurs, les applications sont empaquetées avec leur contexte d’exécution. Elles sont livrées avec tous leurs logiciels, bibliothèques et documents nécessaires. Ces paquets immuables traversent les équipes du développement à la production.

  • Kubernetes : C’est un Orchestrator : il permet de gérer une flotte de conteneurs (docker), de se rapprocher du “On Demand” pour la prod lors des montées de charges et de gagner en agilité au niveau des coûts en fonction du On Demand.
  • Docker : cet outil uniformise l’environnement technique et les rends autosuffisants, évite les conflits de configuration, réduit les erreurs et le Time to Market. Par ailleurs, il n’est pas nécessaire de configurer son projet quand il est installé sur la machine. Ce dernier tend à se standardiser et est omniprésent dans la pratique DevOps. 
  • Maven : il s’agit d’un Soft de management de projet orienté JAVA, qui permet l’automatisation de compilation.

 

Gérer les configurations

La gestion des configurations rassemble les processus qui valident la conformité d’un produit face aux diverses exigences durant tout son cycle de vie.

  • Jenkins : Outil d’automatisation de test permettant de gérer les tests d’intégration et également des  livraisons (Utilisé pour du CI/CD). Il gère ainsi la compilation projet, les tests et le déploiement. Il passe par un pipeline avec use case à la chaîne et produit les rapports d’erreurs rencontrées. 
  • Ansible : outil d’automatisation qui permet de déployer son application à tout moment et d’éviter les down time au déploiement par exemple.
  • Selenium : il s’agit d’un outil utile pour les test fonctionnels car peut reproduire des parcours utilisateurs. A partir d’une liste d’actions, il se comporte comme un humain navigant sur l’application. Il permet également l’automatisation des tests et de navigateurs web. 
  • GIT : Outils de versionning, utilisé partout qui permet notamment d’améliorer les cycles de développement.
  • Cloud : Pour mettre en place une infrastructure sur le cloud, AWS est aujourd’hui le leader du marché 

 

Monitorer l’infrastructure

Utilisé en fin de parcours, le monitoring permet d’analyser et de tirer les enseignements du déploiement des architectures et du développement. Son but : trouver et extraire des pistes d’amélioration.

  • Grafana : ce logiciel libre multi plateformes se concentre sur la visualisation de données. Via un tableau de bord et des graphiques, il facilite la lecture des informations et accélère l’analyse des bugs, ainsi que leur résolution.
  • ELK : (Elasticsearch, Logstash, Kibana) ELK stack collecte et analyse les journaux les plus courants du monde IT. Il centralise les données afin de résoudre les problèmes, surveille les applications ou  réalise des audits. Via Logstach, le stack rassemble les données et rend possible les alertes mail ou SMS.
  • Prometheus : Grâce à l’enregistrement des métriques en temps réel, Prometheus répond aux demandes en s’appuyant sur un langage de requête simple et génère des alertes. En un seul outil, les équipes rassemblent une base de données multidimensionnelle, un mécanisme de collecte évolutif et un langage de requête puissant.
  • Splunk : Il s’agit d’un outil de monitoring avec un côté prédiction en fonction des services choisis et configurés. Il permet de détecter, d’investiguer et de diagnostiquer. De plus,  à un niveau DevOps, il rend également possible la visualisation de l’infrastructure et des process Business. 

 

Déployer l’Infrastructure as code 

L’Infrastructure as code chiffre l’ensemble des processus afin d’automatiser les tâches reproductibles telles que le provisioning, la configuration ou les déploiements. Les plateformes répondent, pour la plupart d’entres elles, à la philosophie UNIX : elles ne font qu’une seule chose, mais elles le font bien.

  • Terraform : cet outil crée des serveurs (et non pas des conteneurs, à l’image de Docker) en cas de grosse montée en charge. L’idée est d’avoir le moins de code et d’actions manuelles à faire (gestion de contraintes).

 

Conclusion

Le profil DevOps a changé la manière historique des entreprises de concevoir des logiciels et applications IT en venant réconcilier deux mondes qui travaillaient jusqu’ici de manière totalement indépendante. Aujourd’hui, DevOps est un ensemble compréhensible de pratiques et de valeurs qui ont prouvé, pour des entreprises de toutes tailles, leur efficacité. Née il y a plus de 10 ans, cette pratique est devenue la clé de voûte des DSI et gagne même les autres strates de l’entreprise. On parle désormais de DataOps, de FinOps… des profils toujours plus hybrides pour répondre aux exigences d’agilité et de rapidité des organisations. Le DevOps est un poste stratégique mais qui fait appel à des profils rares qui, outre la double compétence technique et humaine, doivent également avoir une solide expérience en matière de gestion des développement et d’exploitation. 

 

 

Pour aller plus loin :

Margo accompagne les entreprises dans le pilotage de leurs projets, depuis la conception jusqu’au déploiement des applications, pour livrer rapidement des technologies innovantes et performantes. Les équipes Margo intègrent la gestion des exigences et des risques dans la gestion des projets avec une approche opérationnelle, pragmatique, tournée vers l’obtention de résultats concrets. Notre offre d’accompagnement couvre les aspects méthodologiques, technologiques et métiers : recueil et formalisation des besoins utilisateurs, audit et diagnostic, gouvernance de projet, support fonctionnel, mise en place de technologies et méthodologies BDD, DevOps… Vous avez un projet ? Contactez-nous pour en parler via le formulaire de contact disponible en bas de page.

 

Sources :

2020 : L’Ere DevOps 
DevOps importance to developers 2020

The 10-Minute Read to Understanding DevOps Tools | by Joel Nylund | Level Up Coding

The Complete DevOps RoadMap. An illustrated guide to becoming a… | by javinpaul | HackerNoon.com

https://neonrocket.medium.com/devops-is-a-culture-not-a-role-be1bed149b0

How To Orchestrate DevOps Tools Together To Solve Our Problems?

The Best Tools for Cloud Infrastructure Automation

Mieux comprendre DevOps | Outils de collaboration

Accelerate: State of DevOps 2019

10 ans d’évolution en Agilité et Devops

Qu’est-ce que l’approche DevOps ? 

Qu’est-ce que l’approche CI/CD ?


Par Mathieu Durand Business Manager
DevOps

Vous avez un projet DevOps ?

...
Veuillez renseigner les champs obligatoires
Veuillez joindre au moins un fichier
Saisie incorrecte pour le(s) champ(s) suivant(s) : .
Échec de l'upload du fichier . Assurez-vous que le fichier n'excède pas la taille maximale.
Témoignage

Sabrina, Senior Software Engineer chez Margo

Mon premier objectif à la SGCIB a été de développer from scratch une plateforme de build et donc d’introduire des bonnes pratiques de développement au sein du projet. Je ne pouvais pas rêver mieux : du développement en C#, du DevOps, et de nombreux challenges techniques !

Découvrir 
Actualité

FinOps, de la nécessité d’optimiser les coûts en mode DevOps

Lors de l'AWS Summit Paris, Thomas Barandon, Senior Technical Account Manager AWS, et Fouad Maach, Head of Group MoveToCloud Veolia, nous ont partagé les bénéfices de la mise en place d'une démarche FinOps lors du passage de tout ou une partie de votre infrastructure vers le cloud. Sébastien Bourguignon, Principal & Lead Digital Influencer chez Margo, revient sur cette session.

15/04/2019 Découvrir 
Actualité

FinOps dans un monde DevOps : l’optimisation des coûts en pratique

Lors de la conférence AWS Summit qui s’est tenue le 2 avril dernier au Palais des Congrès à Paris, Thomas Barandon, Senior Technical Account Manager AWS, et Fouad Maach, Move2Cloud Project Director Veolia, ont animé une session sur le rôle de FinOps pour optimiser ses coûts sur AWS ou d’autres plateformes. Ils ont ainsi abordé la définition du DevOps, le rôle du FinOps pour faire le lien entre Finance et Ingénierie et ils ont enfin présenté des exemples de solutions techniques à mettre en place pour diminuer les coûts sur AWS. Découvrez le nouveau rôle de FinOps avec Margo dans notre compte-rendu ci-dessous.

09/04/2019 Découvrir