Comprendre le DevOps en 8 minutes et en emojis!

 

Qu’est ce que le DevOps?

Pour mieux comprendre le DevOps, voyons d’abord un fonctionnement traditionnelle d’entreprise sans DevOps :

  • Les Développeurs (abrégé Dev) collectent les exigences du métier pour ensuite en développer le code.  
  • Ensuite cette même équipe de Dev teste le nouveau code de l’application puis la livre à l’équipe Production et Exploitation (abrégé Ops pour Operationnals).
  • Les Ops se charge de la mettre en production, puis de gérer son exploitation.

Cependant ce modèle pose des problèmes car les 2 équipes Dev et Ops donc ont objectifs complétement différents :

  • D’un côté, l’équipe Dev doit faire évoluer les applications le plus rapidement possible. C’est la recherche d’un time to market réduit, le time to market étant le délai entre l’idée initiale et sa concrétisation en production,
  • De l’autre côté, l’objectif principal d’une équipe Ops est de garantir la stabilité du système. Cela passe par un contrôle sévère des changements apportés au Système d’information. Une panne de la production peut coûter cher à l’entreprise (business perdu, image écornée, contraintes légales non respectées…).

L’antagonisme de ces objectifs cree des conflits d’intérêts entre ces 2 équipes :

  • Les Devs blament les Ops pour les retards et problèmes de livraison.
  • Les Ops tiennent l’équipe des Dev pour responsable des incidents en production liés à une mauvaise qualité du code

Bref c’est pas joli à voir…

L’approche DevOps cherche justement donc à réconcilier ces 2 mondes (d’où la contraction du terme DevOps). Le but est d’aligner leurs objectifs court terme différents  autour d’un objectif commun long terme : celui de la création de valeur pour l’entreprise.

Et cette création de valeur passe par 3 canaux:

  • Un time to market plus rapide
  • Des produits de qualité
  • Des équipes plus efficaces

 

Les grands principes du DevOps 

Cette approche DevOps repose sur 5 grands principes :

  • La culture de collaboration
  • L’automatisation
  • La création de valeur comme objectifs
  • La mise en place de métriques à tous les niveaux
  • Le partage comme valeur forte

Culture de collaboration :

  • Créer une culture de collaboration est très importante car elle permet de donner à toutes les équipes une vision globale du système d’information.
  • Le but ultime est de fluidifier et faciliter l’intercommunication entre Dev et Ops.

La recherche systématique de valeur ajoutée pour client :

  • Elle se décline à travers la mise en place d’un cycle d’amélioration continue, et donc la suppression des taches sans valeur ajoutée.
  • Mais aussi en les incitant les équipes à se concentrer sur la création de valeur business et la satisfaction client.

La mise en place de métriques :

  • Les métriques sont nécessaire car on ne peut parler d’amélioration que si l’on est capable de mesurer l’état initial, l’état final et l’évolution entre les 2 états.
  • Ce sont des métriques à tout les niveaux :  métriques, métriques d’équipe et la mesure de la satisfaction client)

Principe de partage au sens large :

  • Il s’agit de partager un objectif commun, mais aussi les problèmes, les connaissances et les REX.
  • Cela permet de faire émerger un sentiment d’entraite mais aussi des idées nouvelles.

 

Automatisation des processus :

Il se décline sur plusieurs niveaux :

  • Provisionning d’environnements automatisé pour les devs
  • Tests automatisés pour valider la qualité d’un nouveau code
  • Déploiements automatisés une fois que ce code est validé comme conforme à la qualité attendue

Tout ceci en vue de tendre vers le déploiement continu :

  • Le déploiement continu est une approche qui considère qu’une application doit être construite de telle manière à ce  qu’elle puisse être envoyée en production à tout moment (déploiement en production après validation par les tests)
  • L’idée est d’accélérer les cycles de mise en production pour une accélération du time to market.

 

 

 

Et en pratique?

Dans une entreprise Devops, on a alors la situation suivante :

  • Les Devs collectent les besoins métiers et développent un nouveau code de l’application pour répondre à ces besoins.
  • L’application est automatiquement compilés et testés à différents niveau. Si le code atteint le niveau d’exigences demandées en termes de qualité, l’évolution est livrés en production automatiquement et rapidement
  • En cas d’incident en prod, la nouvelle évolution peut être désactivée rapidement pour retourner sous l’ancienne version tout en remontant l’incident à corriger à l’équipe de dev
  • Le travail des Ops est quant à lui facilité  car les dev ont compris les contraintes de l’equipe de production et ont intégré ces problématiques d’exploitation et de production dans son code. Par exemple, le dev a intégré dans la conception de son application des métriques d’exploitation permettant de surveiller l’état de santé de l’application.
  • Les équipes opérationnelles comprennent ainsi mieux les besoins des développeurs pour permettre une meilleure optimisation des ressources de la production, un meilleur monitoring et une meilleure remontée d’erreur.

 

 

Docker : comprendre l’essentiel en 7 minutes

Dans cette vidéo, je vais vous parler de Docker!

  • Qu’est ce que Docker ?
  • Comment ça marche?
  • Et pourquoi est ce que l’on en parle autant?

 

C’est quoi la virtualisation par conteneurs ?

Avant de parler de Docker, il faut d’abord comprendre ce qu’est un conteneur

La virtualisation par conteneurs se base sur la virtualisation Linux LXC, pour Linux Containers. Il s’agit d’une méthode de cloisonnement au niveau de l’OS. Le principe est de faire tourner des environnements Linux isolés les uns des autres dans des conteneurs partageant le même noyau.

Ce qui veut dire que contrairement aux machines virtuelles traditionnelles, un conteneur n’inclut pas d’OS, puisqu’il s’appuie sur les fonctionnalités de l’OS de la machine hôte. Les conteneurs accèdent alors à l’OS hôte de manière totalement isolée les uns des autres.

Le conteneur virtualise l’environnement d’exécution (comme le processeur, la mémoire vive ou le système de fichier…) et ne virtualise donc pas la machine. C’est pour cela que l’on parle de « conteneur » et non de machine virtuelle (VM).

Fonctionnalités Linux pour LXC

LXC repose principalement sur 2 fonctionnalités du noyau Linux :

  • La première est la fonctionnalité des cgroups (pour control groups). C’est ce qui permet de limiter et d’isoler l’utilisation des ressources
  • Ensuite, la fonctionnalités de cloisonnement des espaces de nommage (ou namespace en anglais), permet d’empêcher qu’un group puisse « voir » les ressources des autres groupes.

La virtualisation par conteneur est aussi caractérisée par la couche intermédiaire du contrôleur qui gère un ensemble de fonctionnalités pour les conteneurs :

  • En premier lieu il y a évidemment l’interaction des conteneurs avec l’OS.
  • La sécurité par la gestion de privilèges et de ressources
  • La scalabilité : c’est à dire la duplication et la suppression de conteneurs
  • L’accessibilité des conteneurs à travers la gestion des API et CLI
  • La portabilité :c’est à dire la migration (à froid ou à chaud) de conteneurs

Différence entre un conteneur et un VM classique

  • Une machine virtuelle ou VM recrée intégralement un serveur. contenant donc un OS complet, avec ses pilotes, ses fichiers binaires ou bibliothèques, ainsi que l’application elle-même.
  • Comme le conteneur n’’embarque pas d’OS, il est donc beaucoup plus léger que la VM.  Le conteneur est donc plus facile à migrer ou à télécharger, et plus rapide à sauvegarder ou à restaurer.
  • La virtualisation par conteneur permet au serveur d’héberger potentiellement beaucoup plus de conteneurs que s’il s’agissait de machines virtuelles.

Et c’est quoi alors Docker?

Docker était initialement basé sur le LXC de Linux.

Docker est passé à Libcontainer après la v.1.8 (bye bye LXC!).
Rassurez-vous le principe est le même. L’intérêt est que Docker peut maintenant supporter plus de technologies d’isolation

Docker permet de créer des conteneurs qui vont uniquement contenir des applications avec leurs dépendances. Les conteneurs Docker permettent d’embarquer des applications afin de les exécuter au sein de l’ OS hôte mais de manière virtuellement isolée.

Le Docker engine fait tourner les conteneurs et joue le rôle de contrôleur.

En termes d’architecture,

  • Docker fonctionne sur une architecture client serveur.
  • Le client Docker communique avec le Docker daemon qui fait tourner le docker engine, pour construire et gérer les conteneurs Docker.
  • Le client Docket et le daemon Docker peuvent tourner sur la même machine, comme sur des machines différentes.

Maintenant passons à un autre concept important de Docker : il s’agit des images Docker

Une image Docker est un template prêt à l’emploi avec des instructions pour la création de conteneur. L’environnement d’exécution d’un conteneur peut nécessiter l’empilement de plusieurs images

Par exemple :

  • On trouve à la base les composants nécessaires à Docker, et qui sont fournis par le noyau Linux de l’hôte.
  • Ensuite, on va prendre l’exemple de 2 containers avec deux images différentes : un avec Debian et un avec uBuntu.
  • Il est possible d’ajouter d’autres images, par par exemple sur le premier conteneur, on ajoute une image d’editeur de texte emacs et une image de serveur web Nginx.

A noter qu’une image ne peut pas être modifiée directement, elle reste toujours en lecture seule. C’est pour cela qu’on trouve une dernière couche, qui est la partie du conteneur accessible en écriture, qui contiendra toutes les modifications apportées à l’application.

Une image Peut être construit à partir d’un Dockerfile ou bien d’une image existante ou être récupéré sur un Registre Docker. Ces registre sont accessible depuis le docker Hub, un dépôt public d’images

 

Workflow de création d’un conteneur Docker

Lorsque je souhaite crée un container. J’ai la possibilité d’utiliser une image existante que je reprend du registre docker (public ou privé).

A noter que je peux aussi créer l’image via le Docker File. Les Dockerfiles sont des fichiers qui permettent de construire une image Docker étape par étape et ceci de facon automatisé

le Docker engine exécute ensuite cette image pour créer un container. Une fois que j’ai ce nouveau conteneur, je peux décider d’en faire une nouvelle image que je fais restocker dans un registre,

 

Pourquoi est ce que l’on en parle autant?

La principale raison est que  Docker permet de faciliter et  d’accélérer les déploiements. En effet, comme toutes les dépendances sont dans le conteneur, le conteneur est autosuffisant. Les conteneurs Docker fournissent le moyen de transporter de manière fluide les applications de l’environnement de développement jusqu’à l’infrastructure de production.

Les admin system n’ont alors plus qu’à “installer le conteneur” sur leurs serveurs Linux. Ce qui permet aux admin system de moins s’arracher la tête sur la gestion de telle ou telle version de librairies, de logiciels, etc.

En ce sens il rapprochent les équipes de dev et de production. C’est pour cela qu’on associe souvent Docker au Devops.

Comprendre le VPN en chanson !

Vous rêviez d’une chanson sur l’air de « Libérée, délivrée » (de La reine des neiges) pour vous expliquer le fonctionnement d’un VPN?

Non…?

Bah on l’a fait quand même! Et ça donne « Connecté, Protégé ».

 

Trop éloigné du réseau d’entreprise,

Je n’y accède qu’à distance

Un réseau privé virtuel

Crée un pont pour les échanges

 

Un tunnel VPN permet de relier

Ces réseaux physiques

En réseau privé.

 

Crypte tes échanges et tes données

De bout en bout sans te les faire voler

Pas d’piratage, de bug, de haine

Via VPN !

 

Connecté, protégé,

Réseau distant à ma portée ;

Connecté, protégé,

Comme un LAN local parfait.

 

J’ai laissé un client s’installer

Là, sur ma machine…

Pour échanger avec le serveur associé

 

Quand on atteint ce serveur,

Reste à s’authentifier

Un login, mot d’passe, sans erreur

Mon accès est validé

 

C’est en passant par Internet

Que j’économise et c’est chouette ! 

Pas d’équipements dédiés, mon vieux…

Tant mieux !

 

Connecté, protégé

Mon identité vérifiée

Connecté, protégé

Pas besoin d’beaucoup payer !

Me voilà!

Oui, je suis là!

Au sein du réseau…

 

Son pouvoir vient du tunneling sécurisé

Qui donne accès à toutes les ressources d’un réseau parfait

Et les applications deviennent toutes accessibles

Mes mails ou l’intranet, plus rien n’est impossible ! 

 

Connecté, protégé

Désormais plus rien ne m’arrête   

Connecté, Protégé

Une solution parfaite

Je suis là!

Comme je l’ai rêvé!

Au sein du réseau

Le VPN est le prix de la liberté.

L'architecture technique en cookies