DevOps & containers : l’équation d’une infrastructure-as-a...

46
DIGITAL EXPERIENCE BORDEAUX // 2018 L’événement de l’intelligence numérique de la région Aquitaine DevOps & containers : l’équation d’une infrastructure-as-a-code Nicolas YUEN - Microsoft Christophe HERAL – Neotech Solutions

Transcript of DevOps & containers : l’équation d’une infrastructure-as-a...

Page 1: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCEBORDEAUX // 2018

L’événement de l’intelligence numérique de la région Aquitaine

DevOps & containers :l’équation d’une infrastructure-as-a-codeNicolas YUEN - MicrosoftChristophe HERAL – Neotech Solutions

Page 2: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Principe n°3 du manifeste Agile

• « Livrez fréquemmentun logiciel opérationnelavec des cycles de quelques semainesà quelques moiset une préférencepour les plus courts. »

Page 3: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Loi de Conway

« Les organisations qui définissent des systèmes ... sont contraintes de les produire sous des designs qui sont des copies de la structure de communication de leur organisation » Melvin Conway – 1968

« L’organisation des équipes a un effet direct sur le code que l’on produit » Clément Rochas

Page 4: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Combien de temps pour déployer ?

How long would it take your organization to deploy a change that involved just one single line of code?Do you do this on a repeatable, reliable basis.

Mary Poppendieck – Implementing Lean Software Development

Page 5: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Value Stream Map

© Paul Stack

TempsTemps efficace: 7h15

vsDélai de mise en prod: trop…

Page 6: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Dev / ops : 2 objectifs opposés

Page 7: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Peur de la mise en prodPlutôt rare

Þ Pas d’entraînement Þ Manque de confiance

Un gros volume Þ Plus de risques

Nécessite l’intervention humaine

Les interdictions de livrer le vendredi

Page 8: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCEBORDEAUX // 2018

L’événement de l’intelligence numérique de la région Aquitaine

DevOps

Page 9: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Le mouvement DevOps

• Cycles courts jusqu’à la mise en production• Culture + pratiques + technologie• Faire parler les devs et les opsÞ Nécessite de casser les silos organisationnels• Processus de livraison rapide, fiable et répétableÞ Industrialiser et automatiser la mise en production• Nécessite la mise en place d’architectures scalables et

évolutives

Page 10: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Un impact sur l’organisation« You build it, you run it »

Source : http://thenextweb.com/insider/2011/10/05/amazons-cto-amazon-is-a-technology-company-we-just-happen-to-do-retail/

Page 11: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

D’abord se reposer sur les pratiques de dév

Contrôle de sources

Intégration continue

Processus de build

Tests d’acceptation

Tests unitaires automatisés

Featureflipping

Page 12: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

L’intégrationcontinue –Le principe

Récupération des sources

Compilation

Génération des binaires

Exécution des tests automatisés

Analyse de code

Définition :“Processus automatisé qui compile, teste, génère et analyse une application”

Page 13: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

L’intégration continue - Les avantages

Intégration du code de tous les développeurs Þ Détecte immédiatement les effets de bordsExécution lors de chaque changement de code source Þ Fournit un retour immédiat aux développeursLancer souvent la compilation du projet (plusieurs fois par jour)Maintenir un contrôle de source uniqueTester sur un autre environnement que celui de développementFacile pour quiconque d'obtenir le dernier déploiement exécutable

Page 14: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Tests d’acceptationBasé sur un langage de spécification des scénarios utilisateurs : Gherkin

User Story : « En tant qu’utilisateur, je veux me connecter à Google afin d’accéder à tous mes services en ligne »Scénario 1 : Accéder à la page de connexion

Given L’utilisateur n’est pas connectéAnd L’utilisateur est sur la page d’accueil GoogleWhen L’utilisateur demande à se connecterThen La page de connexion est affichée

Scénario 2 : Se connecter …

Un outil introduit un mécanisme entre les conditions exprimées en langage fonctionnel par les gens du métier et le code technique

Tests fragiles : définir des seuils en fonction de la criticité de la feature testée

Page 15: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Behaviour Driven Development / SpecFlowFramework Open-Source de BDD en .NET. Compatible MSTest, NUnit…S’installe comme un template Visual Studio (fichier .feature)

Page 16: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Feature FlippingActivation/désactivation de fonctionnalité en production sans relivraison de code

(Possible aussi via AOP)

Contrairement au feature branching, la branche est dans le code.Stocké en base de données/configuration et modifiable à chaud

Nécessite de tester avec feature activée ET désactivéeNe pas oublier de nettoyer le code après l’activation (ou pas) définitive

Page 17: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

8 principes de Continuous Delivery

Process répétable à l’infini

Si quelque chose est difficile, faites-le plus souvent

Automatisez TOUT

Garder tout dans le contrôle de sources

« Fini » signifie « Mis en production »

Tester pour garantir la qualité

Tout le monde est concerné par la MEP

Améliorez le process en continu

Page 18: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

4 pratiques de Continuous Delivery

Compiler ses binaires une fois et une seule

Utiliser exactement le même mécanisme pour déployer dans tous les environnements

Effectuer des « tests de fumée » de votre déploiement

Si quelque chose échoue, annuler le déploiement

Page 19: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Continuous Delivery

Issu du livre de JezHumble et David Farley : Continuous Delivery

Page 20: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Un impact sur l’architecture

Complexité à déployer en continu un monolitheTout bug peut affecter l’ensemble du systèmeNécessite un rollback complet du déploiement

Alternatives : développement de micro-servicesÞ Systèmes petits et autonomesÞ Déploiement automatiséÞ Faciles à scaler

Page 21: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCEBORDEAUX // 2018

L’événement de l’intelligence numérique de la région Aquitaine

Les conteneurs

Page 22: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

23

con·tain·erkənˈtānər/nounan object that can be used to hold or transport something.

a large metal box of a standard design and size used for the transportation of goods by road, rail, sea, or air

Page 23: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Qu’est ce qu’un conteneur ?

� Virtualisation d’OS� Perception d’environnement isolé et

indépendant� Package déclaratif� Unité de déploiement « universelle »� Initialement idéal pour le développement et les

tests mais désormais prêt pour la production

Page 24: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

26

Page 25: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

27

Page 26: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

Transport de marchandises avant les années 60

Multiplicité des marchandises

Est ce que je m’inquiète de

l’interaction entre marchandises?

Multiplicité des méthodes de

transport et de stockage

Est ce que je peux transporter

rapidement et de manière fluide?

Page 27: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

Le conteneur de transport a apporté une solution

Multiplicité des marchandises

Est ce que je m’inquiète de

l’interaction entre marchandises?

Multiplicité des méthodes de

transport et de stockage

Est ce que je peux transporter

rapidement et de manière fluide?

Page 28: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Page 29: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

31

Page 30: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

Le conteneur logiciel apporte une solution

32

Multiplicité des piles applicatives

Est ce que les services et

applications interagissent de

manière appropriée ?

Multiplicité des plateformes

matérielles ou virtuelles

Est-ce que je peux migrer rapidement

et de manière fluide?

User DB

QA server

DevelopmentVM

Contributor’slaptop

Customer Data Center

Production Cluster

Public Cloud

Staticwebsite

nginx 1.5 + modsecurity + openssl + bootstrap 2

Web frontendRuby + Rails + sass + Unicorn

QueueRedis + redis-sentinel

Analytics DB

hadoop + hive + thrift + OpenJDK

Page 31: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

Le conteneur logiciel apporte une solution

33

Multiplicité des piles applicatives

Est ce que les services et

applications interagissent de

manière appropriée ?

Multiplicité des plateformes

matérielles ou virtuelles

Est-ce que je peux migrer rapidement

et de manière fluide?

User DB Analytics DB

QueueWeb frontend

Static website

QA serverDevelopmentVM Contributor’s

laptop

Customer Data Center Production ClusterPublic Cloud

Page 32: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Un peu d’histoire sur les conteneurs

� Conteneur = unité de transport intermodal

� Virtualisation de processus� UNIX chroot (1979-1982)� BSD Jail (1998)� Parallels Virtuozzo (2001)� Solaris Containers (2005)� Linux LXC (2008)� Docker (2013)

Page 33: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Docker

� Solution pour manipuler des conteneurs � Modèle avec architecture de type client / serveur

� Client Docker� Moteur Docker� Communication client / serveur avec des appels en REST

� Ensemble de commandes � Décrire l’image d’une application à déployer dans un conteneur� Publier l’image dans une Registry (dépôt d’images public ou privé)� Interroger une Registry� Gérer les versions des images dans une Registry� Déployer des images…

Page 34: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Docker et Microsoft – une longue histoire� Docker dans Azure

� Extension Docker pour les VM Linux

� Azure Container Instance (ACI)

� Azure Kubernetes Services (AKS)

� Azure Container Registry (ACR)

� Azure Functions (Serverless)� Azure Logs Analytics : Container Solution Monitoring

� Docker sur Windows Server 2016 / Windows 10� Docker CLI pour gérer les conteneurs Windows et les conteneurs Hyper-V

� Outillage� Visual Studio 2015 et ultérieur : plug in pour Docker

� Visual Studio Code : extensions pour Docker

� Visual Studio Team Services

Page 35: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCEBORDEAUX // 2018

L’événement de l’intelligence numérique de la région Aquitaine

Infrastructure as Code

Page 36: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Quelques concepts importants

Pet vs Cattle

Page 37: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Mutable vs Immutable

Quelques concepts importants

Page 38: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Infrastructure as Code (IAC)

� L’Infrastructure As Code est un type d'infrastructure que les équipes IT (disons plutôt DevOps) peuvent administrer et mettre à disposition automatiquement, via du code, plutôt qu'en recourant à un traitement manuel

� Cela nécessite de modéliser les briques d’infrastructure sous la forme de fichiers déclaratifs qui sont stockables comme du code

Page 39: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

IAC - quelques bases� Code déclaratif : Permet de déclarer « Voici ce que je

souhaite créer » � Description de l’état finale souhaité

� Code impératif : Séquence de commandes de programmation pour créer / configurer un système� Exemples : scripts Bash ou PowerShell

� En Infrastructure as Code, on va utiliser du déclaratif car cela garantit une idempotence et simplifie la gestion du cycle de déploiement

Page 40: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Infrastructure as Code et dépôt de code

� C’est de l’infrastructure et c’est aussi une forme de code� Il est donc possible de stocker ces fichiers dans des

dépôts de code source historiquement utilisés par les développeurs pour leurs codes applicatifs

Page 41: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Infrastructure as Code – Quelques outils

Azure ARM Terraform Ansible

Page 42: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Exemple Infra as Code – Conteneurs dans Azure

Page 43: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Infrastructure as Code – Cas d’usage

� Automatiser la création des environnements (Dev / Staging / PreProd / Prod)

� Eviter les divergences d’environnement

� Garantir et tester la validité des environnements

� Utiliser l’infrastructure as code pour documenter l’infra

Page 44: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Page 45: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

3rd party integrationPIM / external Data

Data LayerRedis CacheWeb AppLoad BalancerCDN

User

Infrastructure

Search

Media Services

Service Bus

Page 46: DevOps & containers : l’équation d’une infrastructure-as-a ...neotech-solutions.fr/media/.../devops-et-containers... · DevOps & containers : l’équation d’une infrastructure-as-a-code

DIGITAL EXPERIENCE BORDEAUX // 2018#DigitalExperienceBordeaux

Merci !