livraison continue, avec l'outillage devops (jenkins, docker
TRANSCRIPT
![Page 1: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/1.jpg)
Livraison en Continue, avec l’outillage Devops (Jenkins, Docker, Ansible et Nexus)
et Architectures Microservices
Karim Djaafar
Tech Leader of
![Page 2: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/2.jpg)
Agenda
• Qui suis je ?
• Les bases de Devops et Notion de Livraison en Continue (ContinuousDelivery)
• Ingrédients d’un processus SDLC
• Configuration logicielle et Automatisation
• Conteneurs et MicroServices dans un processus Devops
• Refactoring d’une application monolithique JEE vers une architecture microservices
• Une démo pour terminer …
![Page 3: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/3.jpg)
Qui suis je ?
• Architecte et Team leader de la Société de Conseil en ingénierie libreJasmine Conseil
• Auteur de nombreux ouvrages parus chez Eyrolles et d’Articles autourde l’IDE Eclipse et JBoss
• De nombreux projets menés autour de divers serveurs JEE(JBoss/Wildfly, WebSphere, TomEE…)
• Actuellement en charge du projet Devops et de l’industrialisation desenvironnements de recette et de déploiement au sein de l’equipeExpertise et support middleware d’EDF (France)
![Page 4: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/4.jpg)
Les bases de Devops et ContinuousIntegration vs Continuous Delivery
![Page 5: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/5.jpg)
Continuous Delivery
• Devops suppose un outillage compatible SDLC (SoftwareDevelopment Life Cycle) qui le supporte
Développeur ClientBuild Test release
SDLC
![Page 6: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/6.jpg)
CI (Continous Integration) vs CD (ContinuousDelivery)
• Un processus CI s’assure que le livrable est stable et fonctionnel grâce a l’utilisation des tests automatises du code de l’application
• Livraison dans des cycles court des évolutions et une remontée rapideen cas de problèmes via des notifications aux développeursconcernés
• Un processus CD est un processus beaucoup plus large qui va au delàdu code et englobe tout l’environnement nécessaire pour quel’application fonctionne (OS, réseau, serveur d’application, BD …)
![Page 7: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/7.jpg)
Processus CD (Continuous Delivery): les étapes
Développeur Développeur
Référentiel de code
L’outil de CIsurveille lecode du dépôtet lorsqu’unchangementest détectélance lesétapes dupipeline
Le pipeline exécutedifférentes taches au seindu goal et vérifie que lecode fonctionne commerequis.
Les développeurscommitent leur code surla branche principale ousur la branche features.Plus tard les features de labranche seront fusionneesa la branche principale
Si une des étapeséchoue, le processus estavorté et une notificationd’échec est envoyé audéveloppeur qui aeffectue le commit
Si l’intégralité du pipeline s’executesans échec, le commit est promu a une release candidate qui nécessitera des vérifications complémentaires manuelles
Promotion Notification d’échec
![Page 8: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/8.jpg)
Devops c’est quoi ?
• Dev : « Ca fonctionne chez moi ! »
• Ops : « C’est pas le serveur c’est le code ! »
![Page 9: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/9.jpg)
Devops: réconcilier les développeurs et les opérationnels de l’infrastructure • Un état d’esprit, une culture qui
va plus loin que les outils
• Complémente la démarche Agileplus axe sur les devs
• Réduire le gap entre lesdéveloppeurs d’applications etles opérationnels en charge del’infrastructure et desdéploiement
![Page 10: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/10.jpg)
Avantages
• Short Time to Market
• Les livraisons sont plus rapides, plus stables
• Meilleure collaboration entre les équipes de développement et lesopérationnels et le personnel en charge de la maintenance et dudéploiement opérationnel
• Meilleure intégration et prise en compte des évolutions fonctionnellesvoulues par le client
• Organisation optimisée
![Page 11: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/11.jpg)
Les ingrédients d’un processus SDLC
![Page 12: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/12.jpg)
Les outils devops
• Cloud Computing et PAAS (AWS, OpenShift,…)
• Gestionnaire de version a la base d’un processus CI (Github ou Bitbucket)
• Infrastructure de “code”: Ansible ou Puppet pour la gestion des serveurs centralisee
• Build/Test et CI: Jenkins
• Architecture conteneurisee (Docker) vs Virtualisee (VirtualBox)
• Microservices (voir plus loin)
![Page 13: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/13.jpg)
L’outillage Devops et SDLC
Docker compose
![Page 14: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/14.jpg)
Configuration logicielle et Automatisation
![Page 15: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/15.jpg)
Provisioning vs Gestion de la configurationApplication Déploiement (installation et
Configuration du logiciel et de l’applicatif dans la machine provisionnée
Serveur Physique
Hyperviseur / Conteneur
API Provisioning (création des Machines avec OS et logiciel)
Serveur Web
Config Config
Java Automatisation et Gestion de configuration
![Page 16: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/16.jpg)
OSLC et le cycle provisioning et déploiement
Développeur ClientBuild Test release
Provisioning
Déploiement
![Page 17: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/17.jpg)
Vagrant• Un outil en ligne de commande écrit en Ruby
• Out-of the Box avec le support de Virtualbox
• Pour provisionner une machine Ubuntu 14.04 on lancera par exemple la commande suivante:
• Puis lancer ssh dans la nouvelle machine ainsi construite:
• Puis une fois la machine utilisee, vous pouvez la détruire par la commande
![Page 18: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/18.jpg)
Ansible: les principes
• Orchestrer et automatiser les taches d’administration système
• Provisionner des machines
• Déployer des applications
![Page 19: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/19.jpg)
Installer Ansible
Pré requis:
• Installer python et la dernière version du package pip (systeme de gestion de paquets de Python)
$ brew install python (version recommandée 2.7.10)
$ pip install pip –upgrade
• Installer Ansible et support AWS en ligne de commande$ pip install ansible --upgrade
$ pip install awscli
![Page 20: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/20.jpg)
Inventory
Ansible: Architecture et Flux
Playbook
Modules
AnsibleConfig
Pyth
on
SSH
![Page 21: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/21.jpg)
Ansible
Inventory:192.168.0.1192.168.0.2
SSH private key
Server 1 192.168.0.1
SSH public key
Server 2192.168.0.2
SSH public key
Connexion SSH sur l’hôte distant
.ssh/authorized_keys
![Page 22: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/22.jpg)
Une Démo ?
Quelques commandes Ansible avec Vagrant
Provisionner des machines
![Page 23: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/23.jpg)
Notion de Microservices et de Conteneurs
![Page 24: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/24.jpg)
Des concepts qui font le buzz, Docker
• Un sujet « dans le vent » qui révolutionne la manière de concevoir et de packager du logiciel
• Docker une évolution du container qui offre:
Bu
ild
Le packaging d’une application et de ses dépendances dans un container
Ship
Le déplacement facilite du container d’une machine a une autre
Ru
n
Lancer le container, c’est a dire l’application qu’il contient
An
yA
pp
Tout ce qui peut tourner sous Linux
![Page 25: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/25.jpg)
Docker vs Java
• Java est WORA (Write Once Run everywhere), Docker est PODA(Package Once Deploy Antwehere)
![Page 26: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/26.jpg)
Quelques définitions: Un conteneur
• Une application, ou une image en cours d’ execution
• Les processus, le réseau, la configuration
• Pas une VM
![Page 27: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/27.jpg)
Image vs Conteneur
Image Docker runRunning
Container
![Page 28: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/28.jpg)
Les Microservices dans les Architectures Devops
![Page 29: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/29.jpg)
Microservices, c’est quoi ?
![Page 30: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/30.jpg)
Caractéristiques clés• Comme SOA, mais avec quelques « subtiles » différences:
• Pousse par la « vague » des conteneurs Docker, des infrastructures de type PAAS, etc.…
• Pousse aussi par les principes Devops et CI/CD
• Un microservice fait une seule chose et est responsable que d’une seulefonctionnalité
• Chaque microservice peut être construit par un ensemble d'outils ou delangage puisque chacun est indépendant des autres
• Un microservice est très faiblement couple
• Indépendance des équipes développant différent micro service
• Test plus facile et déploiement de type CD
• En général se base sur un style RESTFUL (pas obligatoire)
![Page 31: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/31.jpg)
Les microservices, oui mais pourquoi faire ?
• Les besoins IT augmentent et se complexifient
• Les clients sont de plus en plus exigeants
• Les exigences du Continuous Delivery pipeline:• Livrer rapidement
• Déployer facilement des portions de code
• Les exigences d’évolutivité de l’architecture• Évoluer plus facilement vers d’autres frameworks ou langages
![Page 32: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/32.jpg)
Application monolithique
Nœud 1
UI
Couche métier
DAO
BD
• Un Design classique en couchesqui convient a des petitesapplications et proposant unebonne répartition des rôles
• Assez complexe a maintenir et adéployer avec le temps
• Difficultés d’introduire denouveaux frameworks (exempleAngularjs)
![Page 33: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/33.jpg)
Application monolithique avec denombreuses fonctionnalités
Fonct. UI Fonct. UI Fonct. UIFonct. UI
UI
Fonct. Metier Fonct. Métier Fonct. MétierFonct. Métier
Business Layer
Fonct. DAO Fonct. DAO Fonct. DAOFonct. DAO
DAO
![Page 34: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/34.jpg)
Une scalabilite médiocre
Nœud 1
UI
Couche métier
DAO
BD
Nœud 1
UI
Couche métier
DAO
BD
Nœud 1
UI
Couche métier
DAO
BD
Load Balanceur
Node-03Node-02Node-01
![Page 35: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/35.jpg)
Quelques avantages …
• Typiquement package dans un seul .ear
• Facile a tester (tous les services sont disponibles)
• Développement facilite
![Page 36: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/36.jpg)
Une architecture microservice
Internet Application 1 Internet Application 2
Micro
service 1
Micro
service 2
Micro
service 3
Micro
service 4
![Page 37: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/37.jpg)
Refactoring d’une Architecture Monolithique vers une
Architecture microservices
![Page 38: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/38.jpg)
Refactoring de la Base : Etape 1
GUIServlets, Contrôleurs,
Managed BeansHTML, JavaScript, JSPs,
Templates...
Utilisateur Commande Catalogue
![Page 39: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/39.jpg)
Après refactoring (Step 1): chaque microservice possède sa propre base
GUIServlets, Contrôleurs, Managed Beans HTML, JavaScript, JSPs, Templates...
Utilisateur Commande Catalogue
![Page 40: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/40.jpg)
Architecture et Design : Step 2
• S’appuyer sur l’architecture REST pour l’exposition de son SI sous forme de web services
• Utiliser les patterns d’architectures (Agrégateur et Proxy notamment)
![Page 41: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/41.jpg)
Pattern Aggregator
Service C
WAR
Service B
WAR
Service A
WAR
Service Agrégateur
Load
Balancer
![Page 42: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/42.jpg)
Pattern Proxy
Service C
WAR
Service B
WAR
Service A
WAR
Service Proxy
Load
Balancer
![Page 43: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/43.jpg)
Packaging JEE : Passer du WAR a l’EAR
• Décomposer en unité fonctionnel autonome, chaque module en module WAR au sein d’un EAR
Pages Web
Fichiers de configuration
Classes Java
WAR EAR
Pages Web
Fichiers de configuration
![Page 44: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/44.jpg)
Dockerisation de l’application refactoree: Step 3
Pages Web
Fichiers de configuration
Classes Java
WAR
BD
![Page 45: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/45.jpg)
Docker Pro and Cons
• PROS• Portabilité maximale
• Facile a créer et
• Démarrage des conteneurs
• CONS• Solution host centric
![Page 46: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/46.jpg)
Une Démo ?
• Manipuler quelques commandes Docker
• Lancer l’usine logicielle avec Docker Compose (Nexus repository, Jenkins, GitHub…)
• Présentation de l’usine logicielle dockerisee
• Présentation de la solution Microservices JBoss Swarm, en version standalone et dockerisee
![Page 47: Livraison Continue, avec l'outillage Devops (Jenkins, Docker](https://reader034.vdocuments.fr/reader034/viewer/2022052308/586b9a841a28abca518b9f8e/html5/thumbnails/47.jpg)
Merci pour votre attention