DevOps & containers : l'équation d'une infrastructure-as-a-code - DIGITAL EXPERIENCE BORDEAUX // 2018 - Neotech Solutions

La page est créée Bruno Maillard
 
CONTINUER À LIRE
DevOps & containers : l'équation d'une infrastructure-as-a-code - DIGITAL EXPERIENCE BORDEAUX // 2018 - Neotech Solutions
DIGITAL EXPERIENCE
BORDEAUX // 2018

DevOps & containers :
l’équation d’une
infrastructure-as-a-code
Nicolas YUEN - Microsoft
Christophe HERAL – Neotech Solutions

L’événement de l’intelligence numérique de la région Aquitaine
DevOps & containers : l'équation d'une infrastructure-as-a-code - DIGITAL EXPERIENCE BORDEAUX // 2018 - Neotech Solutions
Principe n°3 du
manifeste Agile
• « Livrez fréquemment
un logiciel opérationnel
avec des cycles
de quelques semaines
à quelques mois
et une préférence
pour les plus courts. »

                           #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
DevOps & containers : l'équation d'une infrastructure-as-a-code - DIGITAL EXPERIENCE BORDEAUX // 2018 - Neotech Solutions
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

                         #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
DevOps & containers : l'équation d'une infrastructure-as-a-code - DIGITAL EXPERIENCE BORDEAUX // 2018 - Neotech Solutions
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

                          #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
DevOps & containers : l'équation d'une infrastructure-as-a-code - DIGITAL EXPERIENCE BORDEAUX // 2018 - Neotech Solutions
Value Stream Map

                                                             Temps efficace: 7h15
                                                               Temps vs
                                                         Délai de mise en prod: trop…

                                                © Paul Stack

                   #DigitalExperienceBordeaux      DIGITAL EXPERIENCE BORDEAUX // 2018
DevOps & containers : l'équation d'une infrastructure-as-a-code - DIGITAL EXPERIENCE BORDEAUX // 2018 - Neotech Solutions
Dev / ops : 2 objectifs opposés

                     #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
DevOps & containers : l'équation d'une infrastructure-as-a-code - DIGITAL EXPERIENCE BORDEAUX // 2018 - Neotech Solutions
Peur de la mise en prod
             Plutô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

                          #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
DevOps & containers : l'équation d'une infrastructure-as-a-code - DIGITAL EXPERIENCE BORDEAUX // 2018 - Neotech Solutions
DIGITAL EXPERIENCE
BORDEAUX // 2018

DevOps

L’événement de l’intelligence numérique de la région Aquitaine
DevOps & containers : l'équation d'une infrastructure-as-a-code - DIGITAL EXPERIENCE BORDEAUX // 2018 - Neotech Solutions
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

                              #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
DevOps & containers : l'équation d'une infrastructure-as-a-code - DIGITAL EXPERIENCE BORDEAUX // 2018 - Neotech Solutions
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/
                                                          #DigitalExperienceBordeaux       DIGITAL EXPERIENCE BORDEAUX // 2018
Contrôle de                   Intégration
                        sources                      continue

D’abord se
reposer sur          Processus de                     Tests
                         build                    d’acceptation
les pratiques
de dév
                   Tests unitaires                     Feature
                    automatisés                        flipping

                #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Définition :
                “Processus automatisé qui compile,
                teste, génère et analyse une application”

                    Récupération des sources
L’intégration       Compilation
continue –
Le principe         Génération des binaires

                    Exécution des tests automatisés

                    Analyse de code
                    #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
L’intégration continue - Les avantages

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

                                #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Tests d’acceptation
Basé 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 Google
               When L’utilisateur demande à se connecter
               Then 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

                                          #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Behaviour Driven Development / SpecFlow
Framework Open-Source de BDD en .NET. Compatible MSTest, NUnit…
S’installe comme un template Visual Studio (fichier .feature)

                            #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Feature Flipping
Activation/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ée
Ne pas oublier de nettoyer le code après l’activation (ou pas) définitive

                                #DigitalExperienceBordeaux        DIGITAL EXPERIENCE BORDEAUX // 2018
Process répétable à l’infini

                 Si quelque chose est difficile, faites-le plus souvent

                 Automatisez TOUT

8 principes de   Garder tout dans le contrôle de sources
Continuous       « Fini » signifie « Mis en production »
Delivery         Tester pour garantir la qualité

                 Tout le monde est concerné par la MEP

                 Améliorez le process en continu

                 #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Compiler ses binaires une fois et une seule

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

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

              Si quelque chose échoue, annuler le
              déploiement

              #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Continuous Delivery

                                                         Issu du livre de Jez
                                                         Humble et David Farley :
                                                         Continuous Delivery

                      #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Un impact sur l’architecture

 Complexité à déployer en continu un monolithe
 Tout bug peut affecter l’ensemble du système
 Nécessite un rollback complet du déploiement

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

                                    #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
DIGITAL EXPERIENCE
BORDEAUX // 2018

Les conteneurs

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

     con·tain·er
     kənˈtānər/
     noun
     an 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
                                      #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
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

                         #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
26

     #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
27

     #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Transport de marchandises avant les années 60
                                          Est ce que je
 Multiplicité des                        m’inquiète de
 marchandises                         l’interaction entre
                                         marchandises?

 Multiplicité des                     Est ce que je peux
  méthodes de                             transporter
 transport et de                      rapidement et de
    stockage                           manière fluide?
Le conteneur de transport a apporté une solution
                                           Est ce que je
 Multiplicité des                         m’inquiète de
 marchandises                          l’interaction entre
                                          marchandises?

 Multiplicité des                      Est ce que je peux
  méthodes de                              transporter
 transport et de                       rapidement et de
    stockage                            manière fluide?
#DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
31

     #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Le conteneur logiciel apporte une solution
                                   Static
                                  website                                                          Queue                                  Est ce que les
                      nginx 1.5 + modsecurity + openssl + bootstrap 2                         Redis + redis-sentinel                        services et
  Multiplicité des                                                                                                                         applications
 piles applicatives                                        Web frontend                                                                 interagissent de
                                                           Ruby + Rails + sass + Unicorn                 Analytics DB                        manière
                              User DB                                                                                                     appropriée ?
                                                                                                   hadoop + hive + thrift + OpenJDK

 Multiplicité des                                                                                                                      Est-ce que je peux
                         Development
  plateformes                VM                                                                                                        migrer rapidement
                                                            Customer                             Production Cluster
 matérielles ou                                            Data Center                                                                   et de manière
   virtuelles                                                                                                                                fluide?
                                                                                                                       Contributor’s
                                      QA server
                                                                               Public Cloud                               laptop

                                                                                                                                 32
Le conteneur logiciel apporte une solution
                                     Static                                                                          Est ce que les
                                                                                       Queue
                                    website                                                                            services et
                                                       Web frontend
  Multiplicité des                                                                 Analytics DB                       applications
                                    User DB
 piles applicatives                                                                                                interagissent de
                                                                                                                        manière
                                                                                                                     appropriée ?

 Multiplicité des                                                                                                 Est-ce que je peux
  plateformes                                                                                                     migrer rapidement
 matérielles ou                                                                                                     et de manière
   virtuelles                                                                                                           fluide?
                      Development   QA server    Customer
                          VM                    Data Center   Public Cloud   Production Cluster   Contributor’s
                                                                                                     laptop
                                                                                                           33
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)

                                  #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
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…

                                                             #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
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

                                                            #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
DIGITAL EXPERIENCE
BORDEAUX // 2018

Infrastructure as Code

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

              Pet vs Cattle
                   #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Quelques concepts importants

      Mutable vs Immutable
                   #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
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

                            #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
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
                                           #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
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

                          #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Infrastructure as Code – Quelques outils

Azure ARM        Terraform                           Ansible

                    #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Exemple Infra as Code – Conteneurs dans Azure

                     #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
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

                          #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
#DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Infrastructure
 User                   Media Services

                                                       3rd party integration
                                                       PIM / external Data
                                         Service Bus

 CDN    Load Balancer      Web App       Redis Cache             Data Layer

                           Search
Merci !

 #DigitalExperienceBordeaux   DIGITAL EXPERIENCE BORDEAUX // 2018
Vous pouvez aussi lire