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 // 2018Loi 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 // 2018Combien 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 // 2018Value Stream Map
Temps efficace: 7h15
Temps vs
Délai de mise en prod: trop…
© Paul Stack
#DigitalExperienceBordeaux DIGITAL EXPERIENCE BORDEAUX // 2018Peur 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 // 2018DIGITAL 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 // 2018Un 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 // 2018Contrô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 // 2018Dé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 // 2018L’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 // 2018Tests 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 // 2018Behaviour 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 // 2018Feature 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 // 2018Process 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 // 2018Compiler 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 // 2018Continuous Delivery
Issu du livre de Jez
Humble et David Farley :
Continuous Delivery
#DigitalExperienceBordeaux DIGITAL EXPERIENCE BORDEAUX // 2018Un 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 // 2018DIGITAL 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 // 2018Qu’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 // 201826
#DigitalExperienceBordeaux DIGITAL EXPERIENCE BORDEAUX // 201827
#DigitalExperienceBordeaux DIGITAL EXPERIENCE BORDEAUX // 2018Transport 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 // 2018Le 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
32Le 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
33Un 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 // 2018Docker
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 // 2018Docker 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 // 2018DIGITAL 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 // 2018Quelques concepts importants
Mutable vs Immutable
#DigitalExperienceBordeaux DIGITAL EXPERIENCE BORDEAUX // 2018Infrastructure 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 // 2018IAC - 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 // 2018Infrastructure 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 // 2018Infrastructure as Code – Quelques outils
Azure ARM Terraform Ansible
#DigitalExperienceBordeaux DIGITAL EXPERIENCE BORDEAUX // 2018Exemple Infra as Code – Conteneurs dans Azure
#DigitalExperienceBordeaux DIGITAL EXPERIENCE BORDEAUX // 2018Infrastructure 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
SearchMerci ! #DigitalExperienceBordeaux DIGITAL EXPERIENCE BORDEAUX // 2018
Vous pouvez aussi lire