Vous êtes sur la page 1sur 20
SOA – Microservices
SOA – Microservices

SOA Microservices

Plan du cours

Architecture

Isoler avec Docker

Communiquer avec RabbitMQ

Composer avec Docker Compose

Répartir la charge avec Nginx

microservices « fil rouge »

Pré-requis

Cours sur JAX-RS

Introduction générale sur les Microservices

Bases en shell Linux

Bases en réseaux

Ressources : Liens sur le Web

Billets issus de Blog

tuhrig.de/layering-of-docker-images

labs.ctl.io/optimizing-docker-images

Github

github.com/jpetazzo/orchestration-workshop

github.com/wsargent/docker-cheat-sheet

github.com/chanezon/docker-tips

github.com/javaee-samples/docker-java/tree/master/slides

Ressources : Liens sur le Web

Articles

www.programering.com/a/MDMzAjMwATk.html

Présentations

xebia.github.io/docker-introduction/slides

Ressources bibliographiques

Docker: Up & Running

Auteur : Karl Matthias, Sean P. Kane

Éditeur :

Edition :

O’Reilly

June. 2015 - 224 pages - ISBN : 9781491917572

Docker

Auteur : Sébastien

Éditeur :

Edition :

Cookbook

Goasguen

O’Reilly

Dec. 2015 - 366 pages - ISBN : 9781491919712

Ressources bibliographiques

RabbitMQ in Action

Auteur : Alvaro

Éditeur : Manning Publications

Edition : May 2012 - 312 pages - ISBN :

Videla, Jason J. W. Williams

9781935182979

Architecture microservices: HelloWorld

Architecture microservices: HelloWorld
• Site web : https://ee.kumuluz.com • Très jeune projet, a gagné le Duke’s Choice Award

Site web : https://ee.kumuluz.com

Très jeune projet, a gagné le Duke’s Choice Award 2015

KumuluzEE s’appuie sur les standards Java EE pour les briques logicielles (JAX-RS, JPA…)

Aucune nouvelle API proposée en dehors de Java EE et tout ce que vous avez appris en Java EE s’appliquent

Seule la manière de déployer change

• Docker Inc. est une jeune entreprise mars 2013 • Sites web de référence •

Docker Inc. est une jeune entreprise mars 2013

Sites web de référence

https://www.docker.com

Documentation : https://docs.docker.com/

Installation : https://docs.docker.com/engine/installation/

Installation : https://docs.docker.com/engine/installation/ • Propose une suite d’outils du même nom que la

Propose une suite d’outils du même nom que la société

Basés principalement sur

LinuX Containers (LXC) : https://en.wikipedia.org/wiki/LXC

Outils sont principalement en ligne de commande

Fonctionne sous Linux nativement et sous Windows et MacOS via une VM (Docker Toolbox)

• Dans un système Linux classique, deux systèmes de fichiers • bootfs : contient le

Dans un système Linux classique, deux systèmes de fichiers

bootfs : contient le « boot loader » et le noyau (kernel)

rootfs : contient la structure des répertoires (/usr, /lib, /bin…)

le « boot loader » et le noyau (kernel) • rootfs : contient la structure des
• Plusieurs rootfs ? • Sous un système Linux classique un seul rootfs • Sous

Plusieurs rootfs ?

Sous un système Linux classique un seul rootfs

Sous Docker possibilité de plusieurs rootfs

Le rootfs constitue l’image de base d’un conteneur Docker

• Sous Docker possibilité de plusieurs rootfs • Le rootfs constitue l’image de base d’un conteneur
• Sous Docker possibilité de plusieurs rootfs • Le rootfs constitue l’image de base d’un conteneur
• Une image est décomposée d’un ensemble de couches appelée layer qui composent l’image finale

Une image est décomposée d’un ensemble de couches appelée layer qui composent l’image finale

Chaque couche est liée à la couche inférieure dite parent

Exemple

Image finale = Apache + Emacs + Debian

Image de base = Debian

Emacs est une couche de l’image finale

Emacs est la couche parente de celle d’Apache

Facilite la réutilisation des images

Où trouver des images ?

https://hub.docker.com

• Un conteneur est une couche modifiable qui est liée à la couche inférieure •

Un conteneur est une couche modifiable qui est liée à la couche inférieure

Comparaison avec le monde « Java »

bootfs = JVM

image de base = classe Object

image = classe

relation parent = héritage

conteneur = instance d’une classe

Seul le conteneur est en lecture et écriture

parent = héritage • conteneur = instance d’une classe • Seul le conteneur est en lecture