Terinnova

Le Monde Du DevOps

Le Monde Du DevOps

Cet article est le début d’une série d’articles destinée aux curieux qui désirent comprendre le Devops et ses concepts partant de zéro. Pour cela, nous partirons de la genèse, parlerons de philosophie, psychologie etc … (et oui le DevOps est un mélange de plusieurs domaines du monde informatique )

Table of contents

1.Introduction

Les progrès technologiques changent radicalement le fonctionnement du monde. Depuis l’avènement d’internet, le rythme de développement des nouvelles technologies n’a cessé d’accroître et de façonner notre vie. Nous pouvons prendre exemple sur le Cloud qui continue à impacter le fonctionnement des entreprises, et même des personnes lambda sur n’est ce que reste que sur la gestion des données cela à mesure que de nouvelles applications sont découvertes. La blockchain est un autre exemple d’une nouvelle technologie vient bouleverser la manière de faire de nombreux secteurs (financier, sécuritaire, de divertissement …). Tout comme les nouvelles technologies impactent le monde informatique, il en est de même pour les changements culturels, je parle ici du mouvement DevOps.

Le terme DevOps est devenu très populaire, ce qui signifie beaucoup de choses différentes pour beaucoup de gens. Comme tout nouveau terme populaire, les personnes peuvent avoir des compréhensions et impressions confuses et parfois contradictoire de ce que c’est. Il est donc difficile de comprendre et définir ce qu’est exactement le DevOps. Cet article essayera de vous fournir quelques éclaircissements sur le terme DevOps et ce qu’il englobe.

2. L'histoire du DevOps

Tout commence en 2003, lorsque Google recrute Ben Trenor à la tête des ingénieurs dans un environnement de production distinct de celui de développement. Ces ingénieurs endossaient un nouveau titre de poste nommé SRE (Site Reliability Engineering) dont la tâche principale était d’assurer une disponibilité élevée des services proposés par google, tout en collaborant étroitement avec les développeurs. La moindre interruption des opérations pour les clients entraînait des pertes de revenus à google, ainsi les SRE ont été les précurseurs de cette philosophie axée sur la fiabilité des infrastructures pour réduire les temps d’arrêt et augmenter la satisfaction des clients. En 2007, l’administrateur système consultant Patrick Debois était sur un projet de migration de données pour le gouvernement belge. Il était impacté par le manque de cohérence et de communication entre les développeurs et les administrateurs systèmes. En 2008, il participe à une conférence agile de Toronto organisé par le développeur Andrew Shafer qui voulait présenter un sujet qui l’inspirait: “Agile Infrastructure ». Malheureusement Patrick Debois était le seul présent dans la salle contraignant Andrew shafer d’annuler son talk. Mais cela permettra aux deux informaticiens de discuter longuement de la problématique de Patrick et ont ensuite créé “Agile system Administration Group”. En 2009, John Allspaw et Paul Hammond (je n’ai pas trouvé son profile LinkedIn ) donnent une conférence pendant le Velocity O’Reilly intitulée en français “10+ déploiements par jour : coopération Dev et Ops à Flickr” d’où ils relatent le retour d’expérience très positif issu d’une collaboration étroite entre Dev et Ops sur le projet Flick dont leur solution pour une bonne collaboration entre les Dev et les ops était d’embaucher des « Ops qui pensent comme les Devs » et des « Devs qui pensent comme les Ops ». Cela pour éviter des propos tels que: « ce n’est pas mon code, ce sont vos machines! » ou « Ce ne sont pas mes machines, mais c’est votre code! ». Il est à noter que l’équipe de développement (appelée les Dev*) a pour objectif principal de faire évoluer l’application, en ajoutant de nouvelles fonctionnalités ou en corrigeant des bugs, le plus rapidement possible. L’équipe des administrateurs systèmes (appelée Ops*) se charge de maintenir l’application en conditions opérationnelles, en garantissant la stabilité de l’application et sa qualité, en sacrifiant le coût et le temps nécessaire au déploiement d’une nouvelle version. Se plaignant sur twitter de ne pas avoir pu assister à la conférence, Patrick Dubois se voit répliquer par Paul Nasrat (je n’ai pas trouvé son profile LinkedIn ): « pourquoi n’organisez vous pas votre propre évènement velocity en Belgique? ». Quelque mois après, Patrick Dubois se décide d’organiser sa propre conférence nommée “ DevOpsDays” car trouvait “Agile Administration System” trop long. Pour annoncer cette conférence sur twitter, il utilise l’hashtag “DevOps” comme dimunitif des mots “développement” et “opérations” qui devient instantanément viral. Depuis, le mouvement évolue, se structure, les outils apparaissent et se développent. Les bonnes pratiques se partagent et de plus en plus d’entreprises rejoignent ce mouvement.

3. DevOps Et Méthodologie Agile

Le DevOps est un ensemble de pratiques visant à automatiser des processus entre les équipes de développement et les équipes en charge du maintien en conditions opérationnelles des applications développées.

  • Exemple de scénario avec le DevOps

Au début d’un projet, toutes les équipent se réunissent et analysent la façon dont ils vont mettre en place un produit fonctionnel prêt à être déployé.

La conception des tests à effectuer, l’infrastructure à utiliser et à gérer se fait ensemble de tel sorte que les besoins de chacun sont bien définis et reconnus par toutes les équipes. Le déploiement d’un nouveau code se fait au fur et à mesure que les développeurs le complètent. Ainsi les tests automatisés sont effectués sur le code, puis le code est Buildé et en fin déployé. Ce cycle est fait sans l’intervention d’un humain afin de réduire les erreurs.

  1. Culture DevOps

Le DevOps englobe une culture qui implique une collaboration entre les différentes équipent (opérations, les testeurs, les designers, les développeurs, les chefs de projet …) qui intervient à la réalisation d’un produit de qualité. Ces équipes œuvrent pour un but commun, et partagent un plan pour l’atteindre.

Il existe plusieurs méthodologies agiles dont nous pouvons citer les plus populaires Scrum, Kanban, Scaled Agile Framework. Bien qu’elles aient des approches distinctes, elles se concentrent toutes sur la capacité des personnes à coopérer et à prendre des décisions collectivement. Toutes ces méthodologies intègrent des itérations et un retour d’information continu, impliquant une planification continue, des tests continus, une intégration continue. Un des moyens pour atteindre ce genre d’équipe est d’inclure par exemple les Ops aux Daily meetings, les réunions quotidiennes et rapides de l’équipe, afin que ceux-ci puissent exposer leurs problématiques. Réciproquement les opérations peuvent faire appel à des développeurs, afin que ceux-ci puissent les aider à résoudre leur problème. Ces partages rendent la gestion du déploiement et la résolution de problèmes beaucoup plus efficaces. Contrairement aux processus classiques de style cascade, ces méthodologies agiles sont légères et s’accompagnent d’une nature intrinsèquement adaptable.

La méthode agile de la culture DevOps permet aux propriétaires de produits, aux développeurs, aux testeurs et aux personnes UX de travailler en étroite collaboration avec le même objectif en tête.

            2. Outils DevOps

Mettre en place un process de communication entre les équipes ne suffit généralement pas. C’est pour cela que les entreprises sont amenées à mettre en place un certain nombre d’outils afin de favoriser et de fluidifier les déploiements. Le Devops se base donc sur l’automatisation pour livrer plus souvent des produits de qualité. Cela comprend des outils de gestion de la configuration, de test et de création de systèmes, de développement d’applications, de contrôle des versions et de surveillance. L’automatisation DevOps suit une succession de phases nécessitant des outils différents et parfois les mêmes outils.

          3. Pipeline DevOps

Avec la culture DevOps, nous pouvons décomposer le cycle de vie d’une application qui se déroule tout au long d’un pipeline (voie de transition d’information de façon séquentielle) DevOps. Ce pipeline utilise des outils dans le but de réduire le temps nécessaire pour créer de nouvelles fonctions. Nous présentons les différentes phases du pipeline et les outils les plus utilisés.

              a) Planification :

Cette phase englobe tout ce qui se passe avant de commencer le code. Une feuille de route est produite et peut être enregistrée et suivie à l’aide d’un système de gestion des tickets et de suivi de projet qui fournit une variété d’outils tel que Jira.

               b) Gestion du Code :

Ici les développeurs écrivent le code du logiciel et le poussent dans un référentiel de code source dont les plus populaires sont GitHub et GitLab.

              c) Build :

À ce stade, l’automatisation commence. L’intégration continue du code est effectuée avec les outils comme Jenkins ou GitLab CI, visant à compiler et empaqueter automatiquement le code dans les conteneurs Docker selon la norme actuelle. Les outils de cette phase permettent aussi aux équipes de surveiller la réalisation des tâches répétées.

               d) Test :

Les tests continus des paquets crées précédemment sont automatiquement exécutés depuis le système d’intégration continu afin de réduire les risques de bogues et de failles. Parmi ces tests nous pouvons citer les tests de vulnérabilité avec SonarQube, les tests de fonctionnels avec Jmeter

               e) Déploiement :

Le code ayant passé toutes les étapes précédentes, le produit ou la version de l’application est automatiquement placé ou déployé à l’environnement adéquat par du Ansible, application généralement paquetée dans des conteneurs docker sur une plateforme d’orchestration des containers Kubernetes.

               f) Monitoring :

Cette phase consiste à surveiller l’environnement de production. Elle est gérée par un système de supervision capable de collecter et visualiser graphiquement les métriques de données, tout en fournissant des analyses sur le comportement, les performances et les erreurs des applications et de l’infrastructure. Les outils les plus utilisés ici sont Prometheus, grafana et la suite ELK.

CONCLUSION

Cet article était une brève introduction au mouvement DevOps. Il était question de faire la genèse sur le DevOps tout en essayant d’apporter quelques éclaircissements sur le concept. Il en ressort que, c’est un mouvement axé sur la collaboration des équipes, l’automatisation des process, ainsi que la résolution collective des problèmes. De ce fait, le cycle de vie des produits englobe différentes phases dans lesquelles différents outils sont utilisés. Ces outils feront l’objet de nos prochains articles.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>