SlideShare une entreprise Scribd logo
1  sur  76
Télécharger pour lire hors ligne
@gboissinot
101
10 Février 2015
MicroServices
Principes & Enjeux
Automatisation
(build, test, deploy)
Les Microservices favorisent le découpage de
son système d’information en de petites unités
métiers indépendantes et autonomes
« Fine-grained architecture »
UI 1
Cod
e
Export
Code
Promotion
Code
Application 1
UI 2
Code
Reporting
Code
Search Engine
Code
Application 2
BD
Store
Remote
Services
BD Search &
Reporting
Import
Code
UI 1
Code
Import /
Export/
Promotion
Service
UI 2
Code
Reporting
Service
Search Engine
Service
BD
Store
Remote
Services
Data
for Reporting
Data
For Search
Focalisé minutieusement sur une et une seule
responsabilité
Possédant un contexte d’exécution séparé
(propre machine, propre processus, propre container, etc)
Communique à travers une interface uniforme
Capable d’être déployé indépendamment et de manière
automatisé
Utilise un système d’inscription et de désinscription du
réseau de Microservices
« Gather together those things that
change for the same reason, and
separate those things that change for
different reasons »
Chaque service est
une application métier autonome
Extension du pattern Single Responsability
Pattern (SPR) au système d’information
La liberté des Microservices permet de réagir et de
prendre des décisions plus rapidement
à des changements inévitables
(fonctionnels, techniques, organisationnels, etc)
Responsive
Elastic Resilient
Message
-driven
Reactive Manifesto Pattern
Service 1
« Python »
Document
Database
Service 2
Clojure
Graph
Database
Service 3
Java
SQL
Database
Attention: Trouver le bon compromis entre
l’autonomie des équipes (avec la flexibilité du
choix) et le besoin de standardisation
Service 1
C++
Service 2
Python
Service 3
Java
On crée des équipes pluridisciplinaires co-localisés
orientées « Feature Métier »
Build & Run
Build & Run
Build & Run
New
Service
Les architectures Microservices accélèrent
l’innovation
Implication des Ops dans le métier
Adapté aux nouvelles organisations
Client / Fournisseur
(Cloud, Infrastructure 2.0)
Application de
la loi de Conway
MicroServices
« Collaboration »
IMPL
PUBLIC
API
Service
Une bonne API
• Agnostique à un
langage
• Porte la logique
d’intégration
Votre API est votre contrat en regroupant
l’ensemble des opérations exportables pour vos
consommateurs.
Elle doit évoluer indépendamment de votre code
?
De nombreux
protocoles et API
d’intégration:
RMI
JAX-RPC
JAX-WS
JMS
SOAP/HTTP
REST/HTTP
AMQ
etc
Trouver la communication la
plus simple possible!
Dans le cas d’une base de données mutualisée,
l’évolution des services suit l’évolution du
schéma de base, les services sont fortement
couplés.
Shared
Database
T_CODE_PAYS
Duplication de l’information (de la donnée)
dans chaque service
Gestion de la donnée à travers du code
ou du paramétrage (fichier de conf, etc)
Encapsulation dans un service dédié
Complex Integration System
(Encapsulate Logic)
Un bus d’intégration avec de la logique
(routage, transformation, etc) fournit de
l’intelligence dans la communication
ce qui introduit une forme de couplage
APIA
APIB
Protocole A
Technologie A
Format de données A
Protocole B
Technologie B
Format de données B
L’intégration doit être simple et favoriser
le faible couplage des services
Synchrone
ou
Asynchrone
Pas
d’intelligence
1) Request / Response (synchrone ou asynchrone)
2) Event Based (asynchrone)
Service
1
Service
1
Service
2
Service
2
Event
subscribespublishes
Conçu pour cacher les appels distants
Diminue l’interdépendance des services en raison
du partage d’un contrat
Fragile car on doit livrer un nouveau contrat à
chaque changement
La fiabilité du réseau et le coût du marshalling
sont à prendre en compte
On connaît les fonctionnalités mais on abstrait
la localisation des services
La sémantique des messages pilotent le
traitement des opérations
Des clients tolérants aux changements
Découplé temporellement & Physiquement
« Idenfiable Resources »
« Uniform interface »
« Stateless conversation »
« Resource representations »
« Hypermedia (HATEOS) »
Exploitation des méthodes HTTP
(GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS)
Facile à consommer avec tous les langages
Plusieurs solutions pour la gestion des
versions
Dans les communications modernes, REST/HTTP
tend à remplacer les autres technologies
d’intégration comme SOAP/HTTP
HTTP
METHOD
Resource
names
+
Uniform
interfaces
Les réponses REST contiennent
les liens dont on a besoin
Les clients interagissent par « hypermedia »
Pas de connaissance préétablie de comment
interagir avec le serveur
Le concept de HATEOS est unique. Cela permet au
serveur d’évoluer fonctionnellement de manière
indépendante des clients
On publie des événements
On souscrit à la réception d’événements
A chaque changement, un événement est
envoyé
Les Microservices publient des événements
en cas de changement d’état
Les autres Microservices souscrivent aux
événements publiés
• Synchronisation de la donnée répliquée
• Maintient de la consistance entre plusieurs
systèmes
L’utilisation d’événements au niveau applicatif permet de
garder la synchronisation des données répliquées et la
consistance des données entre plusieurs systèmes
MicroServices
« Chez les géants
du Web »
Compréhension du bénéfice d’avoir des équipes
autonomes gérant tout le cycle de vie des produits
(conception, implémentation, déploiement)
Création d’outils pour faciliter l’indépendance et
l’autonomie des équipes
• Amazon Web Services
• Suite d’outils Netflix (Hystrix, Eureka, etc)
Utilisation massive du PaaS (Cloud)
A
Librairie contrôlant la collaboration entre les différents
services pour offrir une grande tolérance à la latence
et à l’échec
Isole l’accès et permet d’éviter « the failure
cascade » en offrant des solutions de repli (fallback)
A
Microservices
Comment découper?
Shared Library
Modules
Les architectures Microservices peuvent être combinées
avec d’autres techniques de décomposition.
Service Service Service
Library
ModuleAv1
ModuleAv2
ModuleB
Uniquement les librairies dynamiques évitent
d’avoir à redéployer tous le processus en cas
de changement
Ne pas hésiter à dupliquer du code à travers
plusieurs services
Essayer de se limiter à l’usage de librairies techniques
Le principe « DRY » ne doit être respecté qu’au sein
d’un service
Erlang propose en natif
sa notion de modules
Java avec OSGI n’a pas marché
en raison de sa mauvaise intégration au
langage
En dehors de Erlang, l’implémentation des modules
ne permet pas de bénéficier de tous les avantages
des Microservices
« A Bounded Context is a specific responsability
enforced by explicit boundaries »
On regroupe en bloc fonctionnel cohérent
Favorise le faible coupage et la forte cohésion
On évite d’avoir du code anémique
On garde la logique au sein du service
Toujours penser au service de plus haut
niveau, puis affiner uniquement
si nécessaire ensuite
Packaging
Service
Metadata Repo Service
Import
Service
Export
Service
Promotion
Service
CompatibilityChecker
Service
Reporting
Service Aucune interactions
entre les services de
plus niveau
BOM
Service
Au début d’un projet, on ne connaît pas tout le scope
du projet (le domaine change au fur et à mesure)
On a tendance à créer un Microservices à chaque
nouveau besoin
Découper trop tôt en Microservices peut empêcher
d’avoir une cohérence globale
Il est plus facile de décomposer en Microservices
une base de code existante que de partir de Zéro
On écrit des API qui répondent à des besoins réels et
pas à des besoins futurs non idientifiés
On écrit des API qui est plus propice à l’extension
qu’à la modification
On limite le nombre de Microservices et on n’hésite
pas à faire du code jetable
On prend le temps sur la conception de la
modélisation de la donnée échangée
Microservices
Si on part d’un existant?
Un « seam » est un bloc de code
indépendant
Ne pas hésiter à s’aider du découpage
en package
Chaque « seam » va délimiter la frontière de son
service
Trouver le bon découpage nécessite de comprendre
le fonctionnel et le métier des différentes
applications / services par les utilisateurs
New
Service
Glue
Code
Monolith
On découpe toujours d’abord les données pour
éviter de collaborer par le système de persistance
Import
Code
Monolithic
Schema
Monolithic Service
Promotion
Code
Import
Code
Import
Schema
Promotion
Code
Promot
ion
Schema
Import
Service
Import
Schema
Promotion
Service
Promot
ion
Schema
Monolithic Service
1 2 3
MicroServices
« Les points d’attention »
Un nouveau langage
ou une nouvelle technologie
à chaque service
Communication inter-service
Des systèmes de compensation
avec des cas d’utilisation transverses
entre les services
Overhead
Latence
Fiabilité
L’infrastructure d’une architecture Microservices prend
encore plus d’importance.
Les NoOps n’existent pas.
Au contraire, le rôle des opérationnels est renforcé
<person>
<firstname>Gregory<firstname>
<lastname>Boissinot<lastname>
</person>
<person>
<firstname>Gregory<firstname>
<lastname>Boissinot<lastname>
<twitterid>gboissinot</twitterid>
</person>
Règles:
- Soyer conservateur dans la production de vos contrats
- Soyer flexible dans ce que vous accepter en lecture
- Utiliser une sémantique de version comme
MAJOR.MINOR.PATCH
V1.0.0
V1.1.0
service
v1
Client 1 Client 2
service
v1
Client 1 Client 2
service
Client 1 Client 2
v2 v2
temps
Release 1 Release 2 Release 3
MicroServices
« Pré requis DevOps »
On prend en considération la mixité
technologique au niveau CI
On automatise la construction (CI) et le
déploiement (CD) de chaque service
On doit assurer une certaine cohérence dans
la livraison logicielle
On doit fournir un unique point d’administration
Host
Service
Host
Service
Host
Service
Host
Service
Avec un service par host, on évite les effets de bord
en s’assurant que chaque service s’exécute en
isolation avec ses prérequis technologiques
L’approche de la virtualisation est intéressante mais
elle a coût
Utilisation ou création d’images
On peut « povisionner » l’image pour les
besoins (Chef, Puppet, Ansible)
On voudrait idéalement exécuter chaque service
dans une VM séparée (chaque service apporte son
environnement)
L’approche de la virtualisation est intéressante mais
elle a coût
Processus de création
d’une image assez long
Les images sont souvent volumineuses
(ex: > 20Go)
Le démarrage d’une VM peut prendre
plusieurs minutes
Les hyperviseurs (comme KVM, Xen, etc) sont basés sur
l’émulation d’infrastructure.
C’est coûteux en terme de prérequis.
L’approche Container propose une approche lightweight
Host
Container
Service
Container
Service
Container
Service
Container
Service
Les Containers sont rapides à provisionner
MicroServices
« Pourquoi Docker ? »
L’approche de la virtualisation est intéressante mais
elle a coût
Plateforme construite sur
des containers Unix LXC
On crée et on déploie des applications comme
des images dans le monde de la virtualisation
Facilite le provisioning de chaque service
S’appuie sur une registry d’images Docker
Une intégration dans les principaux outils de
l’usine logicielle
(Jenkins, Artifactory Pro, DockerHub, etc)
CoreOs (un Linux avec des services Docker)
Gestion de plusieurs containers (kubernetes,
CoreOs’s cluster, etc)
Des outils (CI)CD
Et la SOA?
L’enjeu initial du SOA
• Découper une application monolithique en
services (favorisant la réutilisabilité)
• Focalisé sur l’intégration en lieu et place du
couplage des composants
Ce qui a généralement manqué
• Abstrait jusqu’à la mise en production
• Difficile à changer (ESB pattern)
• Manque de consensus de faire du SOA
correctement
Conclusion
Ne cédez pas à toutes les possibilités offertes
Surveiller, surveiller, … votre production!
L’enjeu est toujours de trouver le bon niveau de
granularité
Déporte une certaine complexité au niveau de
l’intégration et donc du déploiement
Nécessite d’avoir des cas d’usage qui s’y prêtent et
d’avoir des équipes « produit » compétentes pour sa
mise en place
Temps
# de services

Contenu connexe

Tendances

Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...
Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...
Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...Microsoft Technet France
 
Watchguard la solution de sécurité informatique Partenaire expert de référence
Watchguard la solution de sécurité informatique Partenaire expert de référenceWatchguard la solution de sécurité informatique Partenaire expert de référence
Watchguard la solution de sécurité informatique Partenaire expert de référencePROJECT SI
 
Séminaire Sécurité Linagora mai 2009
Séminaire Sécurité Linagora mai 2009Séminaire Sécurité Linagora mai 2009
Séminaire Sécurité Linagora mai 2009LINAGORA
 
SQL Azure Data Sync ou comment synchroniser vos données avec le Cloud ?
SQL Azure Data Sync ou comment synchroniser vos données avec le Cloud ?SQL Azure Data Sync ou comment synchroniser vos données avec le Cloud ?
SQL Azure Data Sync ou comment synchroniser vos données avec le Cloud ?Microsoft
 
Introduction à la formation CERTIFICATE OF CLOUD SECURITY KNOWLEDGE / CCSK de...
Introduction à la formation CERTIFICATE OF CLOUD SECURITY KNOWLEDGE / CCSK de...Introduction à la formation CERTIFICATE OF CLOUD SECURITY KNOWLEDGE / CCSK de...
Introduction à la formation CERTIFICATE OF CLOUD SECURITY KNOWLEDGE / CCSK de...Tactika inc.
 
Implémenter son Cloud privé pour héberger ses machines virtuelles
Implémenter son Cloud privé pour héberger ses machines virtuellesImplémenter son Cloud privé pour héberger ses machines virtuelles
Implémenter son Cloud privé pour héberger ses machines virtuellesMicrosoft Décideurs IT
 
CWIN17 Morocco / Microservices architecture ghofrane benaziz
CWIN17 Morocco / Microservices architecture ghofrane benazizCWIN17 Morocco / Microservices architecture ghofrane benaziz
CWIN17 Morocco / Microservices architecture ghofrane benazizCapgemini
 
Architectures distribuées
Architectures distribuéesArchitectures distribuées
Architectures distribuéesFranck SIMON
 
Architectures et application hybrides selon vos termes et à votre propre rythme
Architectures et application hybrides selon vos termes et à votre propre rythmeArchitectures et application hybrides selon vos termes et à votre propre rythme
Architectures et application hybrides selon vos termes et à votre propre rythmeMicrosoft
 
Implémenter de l’authentification forte pour vos environnements Cloud
Implémenter de l’authentification forte pour vos environnements CloudImplémenter de l’authentification forte pour vos environnements Cloud
Implémenter de l’authentification forte pour vos environnements CloudMicrosoft Décideurs IT
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)Heithem Abbes
 
Tout ce que vous avez toujours voulu savoir sur Windows Azure Pack sans jamai...
Tout ce que vous avez toujours voulu savoir sur Windows Azure Pack sans jamai...Tout ce que vous avez toujours voulu savoir sur Windows Azure Pack sans jamai...
Tout ce que vous avez toujours voulu savoir sur Windows Azure Pack sans jamai...Microsoft Technet France
 
Sécuriser son projet Serverless
Sécuriser son projet ServerlessSécuriser son projet Serverless
Sécuriser son projet ServerlessManon PERNIN
 
Le Cloud Privé, de la théorie à la réalité avec Microsoft Private Cloud
Le Cloud Privé, de la théorie à la réalité avec Microsoft Private CloudLe Cloud Privé, de la théorie à la réalité avec Microsoft Private Cloud
Le Cloud Privé, de la théorie à la réalité avec Microsoft Private CloudMicrosoft Technet France
 
Ateliers Silverlight 2 à l'Epitech
Ateliers Silverlight 2 à l'EpitechAteliers Silverlight 2 à l'Epitech
Ateliers Silverlight 2 à l'EpitechChristophe Lauer
 
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...Microsoft Technet France
 
Principes et Fonctionnalités Velocity 6.1
Principes et Fonctionnalités Velocity 6.1Principes et Fonctionnalités Velocity 6.1
Principes et Fonctionnalités Velocity 6.1Social Computing
 
Projet Pki Etapes Clefs
Projet Pki   Etapes ClefsProjet Pki   Etapes Clefs
Projet Pki Etapes Clefsfabricemeillon
 
Architecture orientée service (SOA)
Architecture orientée service (SOA)Architecture orientée service (SOA)
Architecture orientée service (SOA)Klee Group
 

Tendances (20)

LinPKI
LinPKILinPKI
LinPKI
 
Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...
Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...
Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...
 
Watchguard la solution de sécurité informatique Partenaire expert de référence
Watchguard la solution de sécurité informatique Partenaire expert de référenceWatchguard la solution de sécurité informatique Partenaire expert de référence
Watchguard la solution de sécurité informatique Partenaire expert de référence
 
Séminaire Sécurité Linagora mai 2009
Séminaire Sécurité Linagora mai 2009Séminaire Sécurité Linagora mai 2009
Séminaire Sécurité Linagora mai 2009
 
SQL Azure Data Sync ou comment synchroniser vos données avec le Cloud ?
SQL Azure Data Sync ou comment synchroniser vos données avec le Cloud ?SQL Azure Data Sync ou comment synchroniser vos données avec le Cloud ?
SQL Azure Data Sync ou comment synchroniser vos données avec le Cloud ?
 
Introduction à la formation CERTIFICATE OF CLOUD SECURITY KNOWLEDGE / CCSK de...
Introduction à la formation CERTIFICATE OF CLOUD SECURITY KNOWLEDGE / CCSK de...Introduction à la formation CERTIFICATE OF CLOUD SECURITY KNOWLEDGE / CCSK de...
Introduction à la formation CERTIFICATE OF CLOUD SECURITY KNOWLEDGE / CCSK de...
 
Implémenter son Cloud privé pour héberger ses machines virtuelles
Implémenter son Cloud privé pour héberger ses machines virtuellesImplémenter son Cloud privé pour héberger ses machines virtuelles
Implémenter son Cloud privé pour héberger ses machines virtuelles
 
CWIN17 Morocco / Microservices architecture ghofrane benaziz
CWIN17 Morocco / Microservices architecture ghofrane benazizCWIN17 Morocco / Microservices architecture ghofrane benaziz
CWIN17 Morocco / Microservices architecture ghofrane benaziz
 
Architectures distribuées
Architectures distribuéesArchitectures distribuées
Architectures distribuées
 
Architectures et application hybrides selon vos termes et à votre propre rythme
Architectures et application hybrides selon vos termes et à votre propre rythmeArchitectures et application hybrides selon vos termes et à votre propre rythme
Architectures et application hybrides selon vos termes et à votre propre rythme
 
Implémenter de l’authentification forte pour vos environnements Cloud
Implémenter de l’authentification forte pour vos environnements CloudImplémenter de l’authentification forte pour vos environnements Cloud
Implémenter de l’authentification forte pour vos environnements Cloud
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
 
Tout ce que vous avez toujours voulu savoir sur Windows Azure Pack sans jamai...
Tout ce que vous avez toujours voulu savoir sur Windows Azure Pack sans jamai...Tout ce que vous avez toujours voulu savoir sur Windows Azure Pack sans jamai...
Tout ce que vous avez toujours voulu savoir sur Windows Azure Pack sans jamai...
 
Sécuriser son projet Serverless
Sécuriser son projet ServerlessSécuriser son projet Serverless
Sécuriser son projet Serverless
 
Le Cloud Privé, de la théorie à la réalité avec Microsoft Private Cloud
Le Cloud Privé, de la théorie à la réalité avec Microsoft Private CloudLe Cloud Privé, de la théorie à la réalité avec Microsoft Private Cloud
Le Cloud Privé, de la théorie à la réalité avec Microsoft Private Cloud
 
Ateliers Silverlight 2 à l'Epitech
Ateliers Silverlight 2 à l'EpitechAteliers Silverlight 2 à l'Epitech
Ateliers Silverlight 2 à l'Epitech
 
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
 
Principes et Fonctionnalités Velocity 6.1
Principes et Fonctionnalités Velocity 6.1Principes et Fonctionnalités Velocity 6.1
Principes et Fonctionnalités Velocity 6.1
 
Projet Pki Etapes Clefs
Projet Pki   Etapes ClefsProjet Pki   Etapes Clefs
Projet Pki Etapes Clefs
 
Architecture orientée service (SOA)
Architecture orientée service (SOA)Architecture orientée service (SOA)
Architecture orientée service (SOA)
 

En vedette

NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéZenika
 
Azure Business rules v0.3
Azure Business rules v0.3Azure Business rules v0.3
Azure Business rules v0.3Luca Mauri
 
JAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridgeJAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridgeJosé Paumard
 
Matinale DevOps / Docker
Matinale DevOps / DockerMatinale DevOps / Docker
Matinale DevOps / DockerZenika
 
Business intelligence v0.3
Business intelligence v0.3Business intelligence v0.3
Business intelligence v0.3Luca Mauri
 
HTTP/2 Changes Everything
HTTP/2 Changes EverythingHTTP/2 Changes Everything
HTTP/2 Changes EverythingLori MacVittie
 
Open Data v0.3
Open Data v0.3Open Data v0.3
Open Data v0.3Luca Mauri
 
UX STRAT USA: Leah Buley, "The Role of UX / CX in Business"
UX STRAT USA: Leah Buley, "The Role of UX / CX in Business"UX STRAT USA: Leah Buley, "The Role of UX / CX in Business"
UX STRAT USA: Leah Buley, "The Role of UX / CX in Business"UX STRAT
 
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...Zenika
 
Optimisez la performance de votre service client tout en maîtrisant votre b...
Optimisez la performance  de votre service client  tout en maîtrisant votre b...Optimisez la performance  de votre service client  tout en maîtrisant votre b...
Optimisez la performance de votre service client tout en maîtrisant votre b...Experian
 
Introducing HTTP/2
Introducing HTTP/2Introducing HTTP/2
Introducing HTTP/2Ido Flatow
 
Monitoring Compteur EDF avec node.js
Monitoring Compteur EDF avec node.jsMonitoring Compteur EDF avec node.js
Monitoring Compteur EDF avec node.jslaurenthuet
 
NightClazz Java 8 Decouverte
NightClazz Java 8 DecouverteNightClazz Java 8 Decouverte
NightClazz Java 8 DecouverteZenika
 
What HTTP/2.0 Will Do For You
What HTTP/2.0 Will Do For YouWhat HTTP/2.0 Will Do For You
What HTTP/2.0 Will Do For YouMark Nottingham
 
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoiPerf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoipkernevez
 
So, you wanna migrate to Java 9?
So, you wanna migrate to Java 9?So, you wanna migrate to Java 9?
So, you wanna migrate to Java 9?Tomek Adamczewki
 

En vedette (20)

NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery Avancé
 
Azure Business rules v0.3
Azure Business rules v0.3Azure Business rules v0.3
Azure Business rules v0.3
 
JavaFX et le JDK9
JavaFX et le JDK9JavaFX et le JDK9
JavaFX et le JDK9
 
JAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridgeJAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridge
 
Matinale DevOps / Docker
Matinale DevOps / DockerMatinale DevOps / Docker
Matinale DevOps / Docker
 
Business intelligence v0.3
Business intelligence v0.3Business intelligence v0.3
Business intelligence v0.3
 
HTTP/2 Changes Everything
HTTP/2 Changes EverythingHTTP/2 Changes Everything
HTTP/2 Changes Everything
 
Open Data v0.3
Open Data v0.3Open Data v0.3
Open Data v0.3
 
UX STRAT USA: Leah Buley, "The Role of UX / CX in Business"
UX STRAT USA: Leah Buley, "The Role of UX / CX in Business"UX STRAT USA: Leah Buley, "The Role of UX / CX in Business"
UX STRAT USA: Leah Buley, "The Role of UX / CX in Business"
 
Company_Profile_Digital_1
Company_Profile_Digital_1Company_Profile_Digital_1
Company_Profile_Digital_1
 
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...
Agile Wake Up #1 du 01/12/2015 : L'agilité au service des projets Orange Fran...
 
Optimisez la performance de votre service client tout en maîtrisant votre b...
Optimisez la performance  de votre service client  tout en maîtrisant votre b...Optimisez la performance  de votre service client  tout en maîtrisant votre b...
Optimisez la performance de votre service client tout en maîtrisant votre b...
 
Introducing HTTP/2
Introducing HTTP/2Introducing HTTP/2
Introducing HTTP/2
 
Monitoring Compteur EDF avec node.js
Monitoring Compteur EDF avec node.jsMonitoring Compteur EDF avec node.js
Monitoring Compteur EDF avec node.js
 
How can your applications benefit from Java 9?
How can your applications benefit from Java 9?How can your applications benefit from Java 9?
How can your applications benefit from Java 9?
 
Http2 right now
Http2 right nowHttp2 right now
Http2 right now
 
NightClazz Java 8 Decouverte
NightClazz Java 8 DecouverteNightClazz Java 8 Decouverte
NightClazz Java 8 Decouverte
 
What HTTP/2.0 Will Do For You
What HTTP/2.0 Will Do For YouWhat HTTP/2.0 Will Do For You
What HTTP/2.0 Will Do For You
 
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoiPerf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
 
So, you wanna migrate to Java 9?
So, you wanna migrate to Java 9?So, you wanna migrate to Java 9?
So, you wanna migrate to Java 9?
 

Similaire à Conference MicroServices101 - 1ere partie

Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées servicesDonia Hammami
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESBLilia Sfaxi
 
Présentation evénement AWS - 13 oct 2015
Présentation evénement AWS  - 13 oct 2015 Présentation evénement AWS  - 13 oct 2015
Présentation evénement AWS - 13 oct 2015 ABC Systemes
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec dockergcatt
 
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Christophe Furmaniak
 
L’intégration, facteur clef de succès d’une transformation digitale
L’intégration, facteur clef de succès d’une transformation digitaleL’intégration, facteur clef de succès d’une transformation digitale
L’intégration, facteur clef de succès d’une transformation digitaleManon PERNIN
 
Cellenza microservices - tour d'horizon - v0.1
Cellenza   microservices - tour d'horizon - v0.1Cellenza   microservices - tour d'horizon - v0.1
Cellenza microservices - tour d'horizon - v0.1Radoine Douhou
 
Sécuriser votre chaîne d'information dans Azure
Sécuriser votre chaîne d'information dans AzureSécuriser votre chaîne d'information dans Azure
Sécuriser votre chaîne d'information dans AzureNis
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdfSamirAwad14
 
White paper - La sécurisation des web services
White paper - La sécurisation des web servicesWhite paper - La sécurisation des web services
White paper - La sécurisation des web servicesBee_Ware
 
PARTAGE par RENATER avec Cloudwatt & Netixia
PARTAGE par RENATER avec Cloudwatt & NetixiaPARTAGE par RENATER avec Cloudwatt & Netixia
PARTAGE par RENATER avec Cloudwatt & NetixiaAntony Barroux
 
eServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementeServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementLilia Sfaxi
 
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexesSayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexesSayehHiba1
 
Les web services
Les web servicesLes web services
Les web servicesdihiaselma
 
Accélérer la flexibilité, les performances et l'innovation avec IBM Integrate...
Accélérer la flexibilité, les performances et l'innovation avec IBM Integrate...Accélérer la flexibilité, les performances et l'innovation avec IBM Integrate...
Accélérer la flexibilité, les performances et l'innovation avec IBM Integrate...Cedric Ouaga
 

Similaire à Conference MicroServices101 - 1ere partie (20)

ESB
ESBESB
ESB
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées services
 
Chp3 - ESB
Chp3 - ESBChp3 - ESB
Chp3 - ESB
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESB
 
Présentation evénement AWS - 13 oct 2015
Présentation evénement AWS  - 13 oct 2015 Présentation evénement AWS  - 13 oct 2015
Présentation evénement AWS - 13 oct 2015
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
 
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
 
L’intégration, facteur clef de succès d’une transformation digitale
L’intégration, facteur clef de succès d’une transformation digitaleL’intégration, facteur clef de succès d’une transformation digitale
L’intégration, facteur clef de succès d’une transformation digitale
 
Cellenza microservices - tour d'horizon - v0.1
Cellenza   microservices - tour d'horizon - v0.1Cellenza   microservices - tour d'horizon - v0.1
Cellenza microservices - tour d'horizon - v0.1
 
Sécuriser votre chaîne d'information dans Azure
Sécuriser votre chaîne d'information dans AzureSécuriser votre chaîne d'information dans Azure
Sécuriser votre chaîne d'information dans Azure
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdf
 
Architectures bigdata
Architectures bigdataArchitectures bigdata
Architectures bigdata
 
Biztalk 2009
Biztalk 2009Biztalk 2009
Biztalk 2009
 
White paper - La sécurisation des web services
White paper - La sécurisation des web servicesWhite paper - La sécurisation des web services
White paper - La sécurisation des web services
 
PARTAGE par RENATER avec Cloudwatt & Netixia
PARTAGE par RENATER avec Cloudwatt & NetixiaPARTAGE par RENATER avec Cloudwatt & Netixia
PARTAGE par RENATER avec Cloudwatt & Netixia
 
Cours architecture
Cours architectureCours architecture
Cours architecture
 
eServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementeServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API Management
 
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexesSayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
 
Les web services
Les web servicesLes web services
Les web services
 
Accélérer la flexibilité, les performances et l'innovation avec IBM Integrate...
Accélérer la flexibilité, les performances et l'innovation avec IBM Integrate...Accélérer la flexibilité, les performances et l'innovation avec IBM Integrate...
Accélérer la flexibilité, les performances et l'innovation avec IBM Integrate...
 

Plus de Zenika

Datascience & IoT
Datascience & IoTDatascience & IoT
Datascience & IoTZenika
 
Matinale Agile Wake Up #4 : les tests et l'agilité
Matinale Agile Wake Up #4 : les tests et l'agilitéMatinale Agile Wake Up #4 : les tests et l'agilité
Matinale Agile Wake Up #4 : les tests et l'agilitéZenika
 
Agile Wake Up #3 : Lean UX
Agile Wake Up #3 : Lean UXAgile Wake Up #3 : Lean UX
Agile Wake Up #3 : Lean UXZenika
 
Agile Wake Up #3 : La transformation Agile de Kisio Digital
Agile Wake Up #3 : La transformation Agile de Kisio DigitalAgile Wake Up #3 : La transformation Agile de Kisio Digital
Agile Wake Up #3 : La transformation Agile de Kisio DigitalZenika
 
Agile Wake Up #3 : la contractualisation Agile
Agile Wake Up #3 : la contractualisation AgileAgile Wake Up #3 : la contractualisation Agile
Agile Wake Up #3 : la contractualisation AgileZenika
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalitéZenika
 
Motivation 3.0 : sens, autonomie et maîtrise.
Motivation 3.0 : sens, autonomie et maîtrise.Motivation 3.0 : sens, autonomie et maîtrise.
Motivation 3.0 : sens, autonomie et maîtrise.Zenika
 
Matinale React
Matinale ReactMatinale React
Matinale ReactZenika
 
NigthClazz Spark - Machine Learning / Introduction à Spark et Zeppelin
NigthClazz Spark - Machine Learning / Introduction à Spark et ZeppelinNigthClazz Spark - Machine Learning / Introduction à Spark et Zeppelin
NigthClazz Spark - Machine Learning / Introduction à Spark et ZeppelinZenika
 
NightClazz Spark / Machine Learning
NightClazz Spark / Machine LearningNightClazz Spark / Machine Learning
NightClazz Spark / Machine LearningZenika
 
HTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien LanduréHTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien LanduréZenika
 
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud VillenaveAgile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud VillenaveZenika
 
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelleAgile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelleZenika
 
Entreprise libérée : Du mythe à la réalité ?
Entreprise libérée : Du mythe à la réalité ?Entreprise libérée : Du mythe à la réalité ?
Entreprise libérée : Du mythe à la réalité ?Zenika
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte Zenika
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryZenika
 
WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013Zenika
 
Deadlock Victim
Deadlock VictimDeadlock Victim
Deadlock VictimZenika
 

Plus de Zenika (20)

Datascience & IoT
Datascience & IoTDatascience & IoT
Datascience & IoT
 
Matinale Agile Wake Up #4 : les tests et l'agilité
Matinale Agile Wake Up #4 : les tests et l'agilitéMatinale Agile Wake Up #4 : les tests et l'agilité
Matinale Agile Wake Up #4 : les tests et l'agilité
 
Agile Wake Up #3 : Lean UX
Agile Wake Up #3 : Lean UXAgile Wake Up #3 : Lean UX
Agile Wake Up #3 : Lean UX
 
Agile Wake Up #3 : La transformation Agile de Kisio Digital
Agile Wake Up #3 : La transformation Agile de Kisio DigitalAgile Wake Up #3 : La transformation Agile de Kisio Digital
Agile Wake Up #3 : La transformation Agile de Kisio Digital
 
Agile Wake Up #3 : la contractualisation Agile
Agile Wake Up #3 : la contractualisation AgileAgile Wake Up #3 : la contractualisation Agile
Agile Wake Up #3 : la contractualisation Agile
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_ml
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
 
Motivation 3.0 : sens, autonomie et maîtrise.
Motivation 3.0 : sens, autonomie et maîtrise.Motivation 3.0 : sens, autonomie et maîtrise.
Motivation 3.0 : sens, autonomie et maîtrise.
 
Matinale React
Matinale ReactMatinale React
Matinale React
 
NigthClazz Spark - Machine Learning / Introduction à Spark et Zeppelin
NigthClazz Spark - Machine Learning / Introduction à Spark et ZeppelinNigthClazz Spark - Machine Learning / Introduction à Spark et Zeppelin
NigthClazz Spark - Machine Learning / Introduction à Spark et Zeppelin
 
NightClazz Spark / Machine Learning
NightClazz Spark / Machine LearningNightClazz Spark / Machine Learning
NightClazz Spark / Machine Learning
 
HTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien LanduréHTTP2 : ce qui va changer par Julien Landuré
HTTP2 : ce qui va changer par Julien Landuré
 
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud VillenaveAgile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
Agile Wake Up #1 du 01/12/2015 : Scrum Master's Diary par Arnaud Villenave
 
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelleAgile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
 
Entreprise libérée : Du mythe à la réalité ?
Entreprise libérée : Du mythe à la réalité ?Entreprise libérée : Du mythe à la réalité ?
Entreprise libérée : Du mythe à la réalité ?
 
NightClazz Docker Découverte
NightClazz Docker Découverte NightClazz Docker Découverte
NightClazz Docker Découverte
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous Delivery
 
WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013
 
Deadlock Victim
Deadlock VictimDeadlock Victim
Deadlock Victim
 
Seren
SerenSeren
Seren
 

Conference MicroServices101 - 1ere partie

  • 4. Les Microservices favorisent le découpage de son système d’information en de petites unités métiers indépendantes et autonomes « Fine-grained architecture »
  • 5. UI 1 Cod e Export Code Promotion Code Application 1 UI 2 Code Reporting Code Search Engine Code Application 2 BD Store Remote Services BD Search & Reporting Import Code
  • 6.
  • 7. UI 1 Code Import / Export/ Promotion Service UI 2 Code Reporting Service Search Engine Service BD Store Remote Services Data for Reporting Data For Search
  • 8. Focalisé minutieusement sur une et une seule responsabilité Possédant un contexte d’exécution séparé (propre machine, propre processus, propre container, etc) Communique à travers une interface uniforme Capable d’être déployé indépendamment et de manière automatisé Utilise un système d’inscription et de désinscription du réseau de Microservices
  • 9. « Gather together those things that change for the same reason, and separate those things that change for different reasons » Chaque service est une application métier autonome Extension du pattern Single Responsability Pattern (SPR) au système d’information
  • 10. La liberté des Microservices permet de réagir et de prendre des décisions plus rapidement à des changements inévitables (fonctionnels, techniques, organisationnels, etc) Responsive Elastic Resilient Message -driven Reactive Manifesto Pattern
  • 11. Service 1 « Python » Document Database Service 2 Clojure Graph Database Service 3 Java SQL Database Attention: Trouver le bon compromis entre l’autonomie des équipes (avec la flexibilité du choix) et le besoin de standardisation
  • 12. Service 1 C++ Service 2 Python Service 3 Java On crée des équipes pluridisciplinaires co-localisés orientées « Feature Métier » Build & Run Build & Run Build & Run
  • 13.
  • 14.
  • 15. New Service Les architectures Microservices accélèrent l’innovation
  • 16. Implication des Ops dans le métier Adapté aux nouvelles organisations Client / Fournisseur (Cloud, Infrastructure 2.0)
  • 17.
  • 20. IMPL PUBLIC API Service Une bonne API • Agnostique à un langage • Porte la logique d’intégration Votre API est votre contrat en regroupant l’ensemble des opérations exportables pour vos consommateurs. Elle doit évoluer indépendamment de votre code
  • 21. ? De nombreux protocoles et API d’intégration: RMI JAX-RPC JAX-WS JMS SOAP/HTTP REST/HTTP AMQ etc Trouver la communication la plus simple possible!
  • 22. Dans le cas d’une base de données mutualisée, l’évolution des services suit l’évolution du schéma de base, les services sont fortement couplés. Shared Database
  • 24. Duplication de l’information (de la donnée) dans chaque service Gestion de la donnée à travers du code ou du paramétrage (fichier de conf, etc) Encapsulation dans un service dédié
  • 25. Complex Integration System (Encapsulate Logic) Un bus d’intégration avec de la logique (routage, transformation, etc) fournit de l’intelligence dans la communication ce qui introduit une forme de couplage
  • 26.
  • 27. APIA APIB Protocole A Technologie A Format de données A Protocole B Technologie B Format de données B L’intégration doit être simple et favoriser le faible couplage des services Synchrone ou Asynchrone Pas d’intelligence
  • 28. 1) Request / Response (synchrone ou asynchrone) 2) Event Based (asynchrone) Service 1 Service 1 Service 2 Service 2 Event subscribespublishes
  • 29. Conçu pour cacher les appels distants Diminue l’interdépendance des services en raison du partage d’un contrat Fragile car on doit livrer un nouveau contrat à chaque changement La fiabilité du réseau et le coût du marshalling sont à prendre en compte
  • 30. On connaît les fonctionnalités mais on abstrait la localisation des services La sémantique des messages pilotent le traitement des opérations Des clients tolérants aux changements Découplé temporellement & Physiquement
  • 31. « Idenfiable Resources » « Uniform interface » « Stateless conversation » « Resource representations » « Hypermedia (HATEOS) »
  • 32. Exploitation des méthodes HTTP (GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS) Facile à consommer avec tous les langages Plusieurs solutions pour la gestion des versions Dans les communications modernes, REST/HTTP tend à remplacer les autres technologies d’intégration comme SOAP/HTTP
  • 34. Les réponses REST contiennent les liens dont on a besoin Les clients interagissent par « hypermedia » Pas de connaissance préétablie de comment interagir avec le serveur Le concept de HATEOS est unique. Cela permet au serveur d’évoluer fonctionnellement de manière indépendante des clients
  • 35.
  • 36. On publie des événements On souscrit à la réception d’événements A chaque changement, un événement est envoyé
  • 37. Les Microservices publient des événements en cas de changement d’état Les autres Microservices souscrivent aux événements publiés • Synchronisation de la donnée répliquée • Maintient de la consistance entre plusieurs systèmes L’utilisation d’événements au niveau applicatif permet de garder la synchronisation des données répliquées et la consistance des données entre plusieurs systèmes
  • 38. MicroServices « Chez les géants du Web »
  • 39. Compréhension du bénéfice d’avoir des équipes autonomes gérant tout le cycle de vie des produits (conception, implémentation, déploiement) Création d’outils pour faciliter l’indépendance et l’autonomie des équipes • Amazon Web Services • Suite d’outils Netflix (Hystrix, Eureka, etc) Utilisation massive du PaaS (Cloud) A
  • 40. Librairie contrôlant la collaboration entre les différents services pour offrir une grande tolérance à la latence et à l’échec Isole l’accès et permet d’éviter « the failure cascade » en offrant des solutions de repli (fallback)
  • 41. A
  • 43. Shared Library Modules Les architectures Microservices peuvent être combinées avec d’autres techniques de décomposition. Service Service Service Library ModuleAv1 ModuleAv2 ModuleB
  • 44. Uniquement les librairies dynamiques évitent d’avoir à redéployer tous le processus en cas de changement Ne pas hésiter à dupliquer du code à travers plusieurs services Essayer de se limiter à l’usage de librairies techniques Le principe « DRY » ne doit être respecté qu’au sein d’un service
  • 45. Erlang propose en natif sa notion de modules Java avec OSGI n’a pas marché en raison de sa mauvaise intégration au langage En dehors de Erlang, l’implémentation des modules ne permet pas de bénéficier de tous les avantages des Microservices
  • 46. « A Bounded Context is a specific responsability enforced by explicit boundaries » On regroupe en bloc fonctionnel cohérent Favorise le faible coupage et la forte cohésion On évite d’avoir du code anémique On garde la logique au sein du service
  • 47. Toujours penser au service de plus haut niveau, puis affiner uniquement si nécessaire ensuite
  • 49. Au début d’un projet, on ne connaît pas tout le scope du projet (le domaine change au fur et à mesure) On a tendance à créer un Microservices à chaque nouveau besoin Découper trop tôt en Microservices peut empêcher d’avoir une cohérence globale Il est plus facile de décomposer en Microservices une base de code existante que de partir de Zéro
  • 50. On écrit des API qui répondent à des besoins réels et pas à des besoins futurs non idientifiés On écrit des API qui est plus propice à l’extension qu’à la modification On limite le nombre de Microservices et on n’hésite pas à faire du code jetable On prend le temps sur la conception de la modélisation de la donnée échangée
  • 51. Microservices Si on part d’un existant?
  • 52. Un « seam » est un bloc de code indépendant Ne pas hésiter à s’aider du découpage en package Chaque « seam » va délimiter la frontière de son service Trouver le bon découpage nécessite de comprendre le fonctionnel et le métier des différentes applications / services par les utilisateurs
  • 54. On découpe toujours d’abord les données pour éviter de collaborer par le système de persistance Import Code Monolithic Schema Monolithic Service Promotion Code Import Code Import Schema Promotion Code Promot ion Schema Import Service Import Schema Promotion Service Promot ion Schema Monolithic Service 1 2 3
  • 55. MicroServices « Les points d’attention »
  • 56. Un nouveau langage ou une nouvelle technologie à chaque service Communication inter-service Des systèmes de compensation avec des cas d’utilisation transverses entre les services
  • 57. Overhead Latence Fiabilité L’infrastructure d’une architecture Microservices prend encore plus d’importance. Les NoOps n’existent pas. Au contraire, le rôle des opérationnels est renforcé
  • 58. <person> <firstname>Gregory<firstname> <lastname>Boissinot<lastname> </person> <person> <firstname>Gregory<firstname> <lastname>Boissinot<lastname> <twitterid>gboissinot</twitterid> </person> Règles: - Soyer conservateur dans la production de vos contrats - Soyer flexible dans ce que vous accepter en lecture - Utiliser une sémantique de version comme MAJOR.MINOR.PATCH V1.0.0 V1.1.0
  • 59. service v1 Client 1 Client 2 service v1 Client 1 Client 2 service Client 1 Client 2 v2 v2 temps Release 1 Release 2 Release 3
  • 61. On prend en considération la mixité technologique au niveau CI On automatise la construction (CI) et le déploiement (CD) de chaque service On doit assurer une certaine cohérence dans la livraison logicielle On doit fournir un unique point d’administration
  • 62. Host Service Host Service Host Service Host Service Avec un service par host, on évite les effets de bord en s’assurant que chaque service s’exécute en isolation avec ses prérequis technologiques
  • 63. L’approche de la virtualisation est intéressante mais elle a coût Utilisation ou création d’images On peut « povisionner » l’image pour les besoins (Chef, Puppet, Ansible) On voudrait idéalement exécuter chaque service dans une VM séparée (chaque service apporte son environnement)
  • 64. L’approche de la virtualisation est intéressante mais elle a coût Processus de création d’une image assez long Les images sont souvent volumineuses (ex: > 20Go) Le démarrage d’une VM peut prendre plusieurs minutes
  • 65. Les hyperviseurs (comme KVM, Xen, etc) sont basés sur l’émulation d’infrastructure. C’est coûteux en terme de prérequis. L’approche Container propose une approche lightweight
  • 68. L’approche de la virtualisation est intéressante mais elle a coût Plateforme construite sur des containers Unix LXC On crée et on déploie des applications comme des images dans le monde de la virtualisation Facilite le provisioning de chaque service S’appuie sur une registry d’images Docker
  • 69. Une intégration dans les principaux outils de l’usine logicielle (Jenkins, Artifactory Pro, DockerHub, etc) CoreOs (un Linux avec des services Docker) Gestion de plusieurs containers (kubernetes, CoreOs’s cluster, etc)
  • 71.
  • 73. L’enjeu initial du SOA • Découper une application monolithique en services (favorisant la réutilisabilité) • Focalisé sur l’intégration en lieu et place du couplage des composants Ce qui a généralement manqué • Abstrait jusqu’à la mise en production • Difficile à changer (ESB pattern) • Manque de consensus de faire du SOA correctement
  • 75. Ne cédez pas à toutes les possibilités offertes Surveiller, surveiller, … votre production! L’enjeu est toujours de trouver le bon niveau de granularité Déporte une certaine complexité au niveau de l’intégration et donc du déploiement Nécessite d’avoir des cas d’usage qui s’y prêtent et d’avoir des équipes « produit » compétentes pour sa mise en place