Micro-services
Applications monolithiques
Toutes les fonctionnalités dans un seul process….
Le scalling se fait en répliquant l’application complèteSur 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 rapidementet 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 sesfonctionnalités sous forme de services (web),découvrables et consommables ?
Bus de service (ESB) centralisé dans lequelbeaucoup (trop) de règles métiers ont été codéeset qui est une étape indispensable à laconsommation/ exposition d’un service ?
Micro-services
»
ConcrètementA 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 challengesTout 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
V2Deploy V2
Montée de version / Upgrade
Site eCommerce
Catalogue
Tunnel Commande
Client
Commande
V2
V1
V2Deploy 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.2Pas 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
v2Deploy 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 entrants2. Le service enregistre l’ID3. L’ID est transmis au service de logs4. 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)
QueuesPub/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 pourdes applications containerisés.
Apache Mesos ou Docker Swarm pour l’orchestrationdes applications.
Cloud Services et App Services
Azure Service Fabric
Plateforme distribuée pourdévelopper, packager, déployer,hoster, gérer des micro-services pourdes applications à grande échelle.
Fournit également un Frameworkpour coder/packager les micro-services (afin de profiter pleinementdes capacités offertes par laplateforme).
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 ?