Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

47
Livraison en Continue, avec l’outillage Devops (Jenkins, Docker, Ansible et Nexus) et Architectures Microservices Karim Djaafar Tech Leader of

Transcript of Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

Page 1: Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

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 ...

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 ...

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 ...

Les bases de Devops et ContinuousIntegration vs Continuous Delivery

Page 5: Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

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 ...

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 ...

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 ...

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 ...

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 ...

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 ...

Les ingrédients d’un processus SDLC

Page 12: Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

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 ...

L’outillage Devops et SDLC

Docker compose

Page 14: Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

Configuration logicielle et Automatisation

Page 15: Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

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 ...

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 ...

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 ...

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 ...

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 ...

Inventory

Ansible: Architecture et Flux

Playbook

Modules

AnsibleConfig

Pyth

on

SSH

Page 21: Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

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 ...

Une Démo ?

Quelques commandes Ansible avec Vagrant

Provisionner des machines

Page 23: Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

Notion de Microservices et de Conteneurs

Page 24: Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

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 ...

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 ...

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 ...

Image vs Conteneur

Image Docker runRunning

Container

Page 28: Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

Les Microservices dans les Architectures Devops

Page 29: Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

Microservices, c’est quoi ?

Page 30: Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

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 ...

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 ...

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 ...

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 ...

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 ...

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 ...

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 ...

Refactoring d’une Architecture Monolithique vers une

Architecture microservices

Page 38: Livraison Continue, avec l'outillage Devops (Jenkins, Docker ...

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 ...

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 ...

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 ...

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 ...

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 ...

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 ...

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 ...

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 ...

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 ...

Merci pour votre attention