DevOps & containers : l'équation d'une infrastructure-as-a-code - DIGITAL EXPERIENCE BORDEAUX // 2018 - Neotech Solutions
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
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
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
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
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
Value Stream Map Temps efficace: 7h15 Temps vs Délai de mise en prod: trop… © Paul Stack #DigitalExperienceBordeaux DIGITAL EXPERIENCE BORDEAUX // 2018
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
DIGITAL EXPERIENCE BORDEAUX // 2018 DevOps L’événement de l’intelligence numérique de la région Aquitaine
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
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