Micro-services
Applications monolithiques
Toutes les fonctionnalités dans un seul process….
Le scalling se fait en répliquant l’application complète
Sur plusieurs serveurs.
Griefs contre les applications monolithiques
Maitrise
fonctionnelle
Onboarding
des
ressources
Perte de
connaissance
métier
Difficulté à
Refactorer
Evolutivité
Migration
Couts de
recette
exponentiels
Baisse de
qualité
Moins en
moins de V.A
métier
Incapacité générale à répondre rapidement
et de façon pertinente aux besoins
Frein à l’innovation !!!
Applications monolithiques
Toutes les fonctionnalités dans un seul process….
Chaque fonctionnalité de l’application se traduit par
un service
Les services sont répliqués sur différents serveurs
En fonction des besoins.
Une définition des micro-services
Qu’est-ce qu’un microservice?
Les caractéristiques des micro-services
« Componentization» (Autonome / isolé)
Organisé autour de « business capabilities »
Elastique, Résiliant et « Responsive »
Orienté message et « Smart end points »
Configurable et automatisé
Gouvernance décentralisée et monitoring
intelligent
Organisé autour de business capabilities
UI specialist
Middleware
dba
Front
Organisé autour de business capabilities
Un principe de base fort
« You build it,
you deploy it,
you run it »
Data Management décentralisé
Front Front
Quelle est la taille d’un micro-service ?
« Quelle est la bonne
granularité ? »
2 équipes, 10 micro-services
10 équipes, 10 micro-services
10 équipes, 100 micro-services
2 équipes, 100 micro-services
Quelques idées reçues
1. Mon application est sur Docker donc elle est micro-service.
2. Les architectures micro-services vont résoudre tous mes problèmes.
3. Les applications monolithiques sont « has been ».
4. Les micro-services remplacent la SOA.
Une filiation avec la SOA ?
Qu’est-ce que
SOA ?
Capacité d’une application à exposer ses
fonctionnalités sous forme de services (web),
découvrables et consommables ?
Bus de service (ESB) centralisé dans lequel
beaucoup (trop) de règles métiers ont été codées
et qui est une étape indispensable à la
consommation/ exposition d’un service ?
Micro-services
»
Concrètement
A quoi cela ressemble ?
Architecture en couches
Architecture d’un micro-service
API
 Qui dit micro-service, dit API !
 2 API :
 API public pour communiquer avec le « monde extérieur »
 API privée dite admin pour administrer, paramétrer le service
 Deux techniques pour requêter un service :
 GetProfilesById
 GET http://myapi.looksfamiliar.com/profiles/user/id/99999
 GetProfilesByLocation
 GET http://myapi.looksfamiliar.com/profiles?location=Massachusetts
Un exemple ?
• Connaissez-vous une plateforme écrite sous forme de microservices ?
Comment y aller ?
Approche bottom-up
La principale
erreur est de
commencer
avec les micro-
services
Démarche de transition Top - Down
Source : Xebia NL
Démarche itérative
Site eCommerce
Catalogue
Tunnel Commande
Client
Commande
Démarche itérative
Site eCommerce
Catalogue
Tunnel Commande
Client
Commande
Les challenges
Tout n’est pas si simple….
Montée de version / Upgrade
Site eCommerce
Catalogue
Tunnel Commande
Client
Commande
V1
V1
V1
Montée de version / Upgrade
Site eCommerce
Catalogue
Tunnel Commande
Client
Commande
V1
V1
V2
Deploy V2
Montée de version / Upgrade
Site eCommerce
Catalogue
Tunnel Commande
Client
Commande
V2
V1
V2
Deploy V2
Upgrade V2
Montée de version / Upgrade
Site eCommerce
Catalogue
Tunnel Commande
Client
Commande
V2
V2
V2
Deploy V2
Solution : Gatekeper
Site eCommerce
Catalogue
Tunnel Commande
Client
Commande
/Products
/Products/Id
/Bulk_add
Déploiements
Service A
Service B
Service C – v1
v1
v1
Déploiements
Service A
Service B
Service C – v2
v1
v1
Deploy V2
Solution : Semantic Versioning
Service A
Service B
Service C – v1.2
v1
v1
Deploy V1.2
Pas de rupture côté interface
Solution : Semantic Versioning
Service A
Service B
Service C – v1.2
v1
v1
Deploy V2
Service C – v2
Solution : Semantic Versioning
Service A
Service B
Service C – v1.2
v1
v2
Deploy V2
Service C – v2
Solution : Semantic Versioning
Service A
Service B
Service C – v1.2
v2
v2
Deploy V2
Service C – v2
Montée en charge
Montée en charge
Site eCommerce
Catalogue
Tunnel Commande
Client
Commande
Solution : amortissement via queues
Solution : Queue / Asynchronisme
Site eCommerce
Catalogue
Tunnel Commande
Client
Commande
Worker
Configuration Management
Solution : Discovery Service
Solution : Discovery Service
Enfer du débugging
Enfer du débugging
Solution : Correlation ID
Solution : Correlation ID
1. Tagguer avec un ID tous les messages entrants
2. Le service enregistre l’ID
3. L’ID est transmis au service de logs
4. Tagguer toute nouvelle requête avec cet ID
Les bouchons (Mocks)
Les bouchons (Mocks)
Mock : le service fournit le bouchon
Mock : Le service possède un client
Multi-techno / Multi-plateform
En synthèse
Du monolithe aux micro-services
En ai-je
vraiment
besoin ?
Mon
organisation
est-elle
mature ?
Mon infra et
mes
pratiques
logicielles
sont-elles
matures ?
API
Service
Cache
DB
API
Service
Cache
DB
API
Service
Cache
DB
API Management
API
Service
Cache
DB
Service bus
Protocole AMQP
User Interface (ISIS Web 2)
Queues
Pub/SubSynchronous
Asynchronous
External Network
ISIS Open
Data
REST / JSON REST / JSON
SOAP / WCF REST / JSON
SignalR
Un exemple d’application
Quelques solutions
Infrastructure et plateforme
 Docker extensions pour les VM Linux
 Azure Container Service : simplifier la création /
configuration, la gestion de cluster de VM Azure pour
des applications containerisés.
 Apache Mesos ou Docker Swarm pour l’orchestration
des applications.
Cloud Services et App Services
Azure Service Fabric
 Plateforme distribuée pour
développer, packager, déployer,
hoster, gérer des micro-services pour
des applications à grande échelle.
 Fournit également un Framework
pour coder/packager les micro-
services (afin de profiter pleinement
des capacités offertes par la
plateforme).
 Services stateless / statefull.
 Multi-langage : ASP.NET, Node Js,
 Plateforme éprouvé car services Azure sont basés dessus.
States dans Azure Service Fabric
Conclusion
En ai-je
vraiment
besoin ?
Mon
organisation
est-elle
mature ?
Mon infra et
mes
pratiques
logicielles
sont-elles
matures ?

Cellenza microservices - tour d'horizon - v0.1