Infrastructure Needs toward continuous delivery
Transcription
Infrastructure Needs toward continuous delivery
DOCKER, PIERRE ANGULAIRE DU CONTINUOUS DELIVERY ? - A DEVOPS STORY LE CHALLENGE DU CONTINUOUS DELIVERY Promouvoir une démarche agile et automatisée jusqu’à la production pour améliorer la vélocité et la qualité des produits livrés Code développé Tests unitaires Intégration Tests d’acceptance Mise en production De nouveaux challenges apparaissent (non exhaustif !) ● Réconcilier le cycle de vie des apps et de leurs infra. : penser produit ● Accroitre l’autonomie des équipes applicatives ● … tout en augmentant le besoin d’interactions avec des Ops Des éléments de solutions émergent à différents niveaux ● Organisationnel : Culture DevOps, avénement des feature-teams... ● Architecture applicative : micro-services, loose-coupling, stateless, APIs versionnées… ● Infrastructure : services cloud de plus en plus riches, infrastructure-as-code 19/11/2015 2 LE PARADIGME DU CONTENEUR « Un artefact universel, autosuffisant et standard, contenant un module applicatif et sa configuration d’infrastructure sous-jacente » Incrémental Programmatique Jetable Léger Immuable Social Portable Versionné Docker fournit à la fois le conteneur et l’écosystème pour l’opérer 19/11/2015 3 POUPÉES RUSSES Un catalogue d’images de base ● Les Ops de l’entreprise et la communautée proposent des bases système élémentaires ● Qu’ils utilisent pour proposer des produits finis directement utilisables (ex. Une instance REDIS) ● Ou que les DEVs enrichissent pour construire leur propre application MyApplication x.y (DEV) Tomcat8 + Java1.8 (OPs) RHEL 7.0 (OPs) Les Devs et les Ops partagent un même “vocabulaire” et un même écosystème Le DockerFile de MyApplication: FROM tomcat:8-jre8 MAINTAINER adrien ADD gameoflife.war /usr/local/tomcat/webapps/ EXPOSE 8080 CMD ["catalina.sh", "run"] 19/11/2015 4 PIPELINE CONTINUOUS DELIVERY On instancie un pipeline à chaque changement de code: Build Deploy DEV One versionned artifact to rule them all ! Deploy PRD Deploy UAT 2a Récupèrer l’image sous-jacente Registry APP x.y (APP team owned) Git commit du code ou du dockerfile 0011010100110 1011011010111 1101110101111 010011 1 JAVA 1.8 (OPS/middleware owned) 2c RHEL 6.7 (OPS/system owned) Renvoyer le nouvel artefact dans la registry 3b Pull APP image CD platform Intégrer dans une nouvelle image docker 2b Retirer l’ancienne version et ordonner le déploiement d’une nouvelle version P D 3a U U P Cluster docker 19/11/2015 5 JENKINS PIPELINE Le tag de l’image docker correspond directement au hash GIT Le build N est en env. de DEV Promotion manuelle Le build N-1 est en env. d’UAT Le build N-2 est en env. de PROD 19/11/2015 6 DU CONTENEUR À L’APPLICATION ‘’Docker est passé du conteneur universel à une topologie applicative orientée objet’’ Application Topologie (Compose) Exécution (Run containers) Stockage (Volumes) Transport (Network) ‘’... Et fournit une plateforme d’exécution complète’’ Plateforme de CaaS Cluster de serveurs Docker (Swarm) Exécution (Engine) Provisioning (Machine) Registry d’images internes, Docker Hub... 19/11/2015 7 CA PAAS OU CA CAAS ? Application (code) Conteneur Capacité (VM, Stockage, réseau…) Legacy PaaS CaaS IaaS Le CaaS facilite notamment l’accès au cloud des applications “legacy” La topologie d’une application peut tout à la fois reposer sur des composants CaaS/PaaS/IaaS 19/11/2015 8 REDISTRIBUTION DES CARTES DEVOPS Equipes applicatives focalisées sur le contenu Ne se préoccupe pas de la façon d’opérer des conteneurs Sait comment construire des conteneurs et opérer des applications Services cloud focalisés sur l’aspect extérieur Ignore la façon dont sont construites les images Sait comment opérer de grandes quantités de conteneurs “You build it, you run it!” 19/11/2015 9 CONCLUSION L’universalité du conteneur Docker facilite : La transition vers le cloud pour les applications historiques L’hybridation et la réversibilité des opérateurs de cloud Au delà de la technologie, Docker est un outil “DevOps” Favorise l’autonomie des équipes applicatives portant l’ensemble d’un produit Accroît la qualité des app. et contribue à accélérer le flux de livraison en automatisant Docker facilite l’élasticité des applications Toutefois, il faut également penser aux patterns d’architecture applicative adaptés 19/11/2015 10