60
Micro-services

Cellenza microservices - tour d'horizon - v0.1

Embed Size (px)

Citation preview

Page 1: Cellenza   microservices - tour d'horizon - v0.1

Micro-services

Page 2: Cellenza   microservices - tour d'horizon - v0.1

Applications monolithiques

Toutes les fonctionnalités dans un seul process….

Le scalling se fait en répliquant l’application complèteSur plusieurs serveurs.

Page 3: Cellenza   microservices - tour d'horizon - v0.1

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

Page 4: Cellenza   microservices - tour d'horizon - v0.1

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.

Page 5: Cellenza   microservices - tour d'horizon - v0.1

Une définition des micro-services

Qu’est-ce qu’un microservice?

Page 6: Cellenza   microservices - tour d'horizon - v0.1

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

Page 7: Cellenza   microservices - tour d'horizon - v0.1

Organisé autour de business capabilities

UI specialist

Middleware

dba

Front

Page 8: Cellenza   microservices - tour d'horizon - v0.1

Organisé autour de business capabilities

Page 9: Cellenza   microservices - tour d'horizon - v0.1

Un principe de base fort

« You build it,

you deploy it,

you run it »

Page 10: Cellenza   microservices - tour d'horizon - v0.1

Data Management décentralisé

Front Front

Page 11: Cellenza   microservices - tour d'horizon - v0.1

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

Page 12: Cellenza   microservices - tour d'horizon - v0.1

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.

Page 13: Cellenza   microservices - tour d'horizon - v0.1

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

»

Page 14: Cellenza   microservices - tour d'horizon - v0.1

ConcrètementA quoi cela ressemble ?

Page 15: Cellenza   microservices - tour d'horizon - v0.1

Architecture en couches

Page 16: Cellenza   microservices - tour d'horizon - v0.1

Architecture d’un micro-service

Page 17: Cellenza   microservices - tour d'horizon - v0.1

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

Page 18: Cellenza   microservices - tour d'horizon - v0.1

Un exemple ?

• Connaissez-vous une plateforme écrite sous forme de microservices ?

Page 19: Cellenza   microservices - tour d'horizon - v0.1

Comment y aller ?

Page 20: Cellenza   microservices - tour d'horizon - v0.1

Approche bottom-up

La principale erreur est de commencer

avec les micro-services

Page 21: Cellenza   microservices - tour d'horizon - v0.1

Démarche de transition Top - Down

Source : Xebia NL

Page 22: Cellenza   microservices - tour d'horizon - v0.1

Démarche itérative

Site eCommerce

Catalogue

Tunnel Commande

Client

Commande

Page 23: Cellenza   microservices - tour d'horizon - v0.1

Démarche itérative

Site eCommerce

Catalogue

Tunnel Commande

Client

Commande

Page 24: Cellenza   microservices - tour d'horizon - v0.1

Les challengesTout n’est pas si simple….

Page 25: Cellenza   microservices - tour d'horizon - v0.1

Montée de version / Upgrade

Site eCommerce

Catalogue

Tunnel Commande

Client

Commande

V1

V1

V1

Page 26: Cellenza   microservices - tour d'horizon - v0.1

Montée de version / Upgrade

Site eCommerce

Catalogue

Tunnel Commande

Client

Commande

V1

V1

V2Deploy V2

Page 27: Cellenza   microservices - tour d'horizon - v0.1

Montée de version / Upgrade

Site eCommerce

Catalogue

Tunnel Commande

Client

Commande

V2

V1

V2Deploy V2

Upgrade V2

Page 28: Cellenza   microservices - tour d'horizon - v0.1

Montée de version / Upgrade

Site eCommerce

Catalogue

Tunnel Commande

Client

Commande

V2

V2

V2

Deploy V2

Page 29: Cellenza   microservices - tour d'horizon - v0.1

Solution : Gatekeper

Site eCommerce

Catalogue

Tunnel Commande

Client

Commande

/Products/Products/Id

/Bulk_add

Page 30: Cellenza   microservices - tour d'horizon - v0.1

Déploiements

Service A

Service B

Service C – v1

v1

v1

Page 31: Cellenza   microservices - tour d'horizon - v0.1

Déploiements

Service A

Service B

Service C – v2

v1

v1

Deploy V2

Page 32: Cellenza   microservices - tour d'horizon - v0.1

Solution : Semantic Versioning

Service A

Service B

Service C – v1.2

v1

v1

Deploy V1.2Pas de rupture côté interface

Page 33: Cellenza   microservices - tour d'horizon - v0.1

Solution : Semantic Versioning

Service A

Service B

Service C – v1.2

v1

v1

Deploy V2

Service C – v2

Page 34: Cellenza   microservices - tour d'horizon - v0.1

Solution : Semantic Versioning

Service A

Service B

Service C – v1.2

v1

v2Deploy V2

Service C – v2

Page 35: Cellenza   microservices - tour d'horizon - v0.1

Solution : Semantic Versioning

Service A

Service B

Service C – v1.2

v2

v2

Deploy V2

Service C – v2

Page 36: Cellenza   microservices - tour d'horizon - v0.1

Montée en charge

Page 37: Cellenza   microservices - tour d'horizon - v0.1

Montée en charge

Site eCommerce

Catalogue

Tunnel Commande

Client

Commande

Page 38: Cellenza   microservices - tour d'horizon - v0.1

Solution : amortissement via queues

Page 39: Cellenza   microservices - tour d'horizon - v0.1

Solution : Queue / Asynchronisme

Site eCommerce

Catalogue

Tunnel Commande

Client

Commande

Worker

Page 40: Cellenza   microservices - tour d'horizon - v0.1

Configuration Management

Page 41: Cellenza   microservices - tour d'horizon - v0.1

Solution : Discovery Service

Page 42: Cellenza   microservices - tour d'horizon - v0.1

Solution : Discovery Service

Page 43: Cellenza   microservices - tour d'horizon - v0.1

Enfer du débugging

Page 44: Cellenza   microservices - tour d'horizon - v0.1

Enfer du débugging

Page 45: Cellenza   microservices - tour d'horizon - v0.1

Solution : Correlation ID

Page 46: Cellenza   microservices - tour d'horizon - v0.1

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

Page 47: Cellenza   microservices - tour d'horizon - v0.1

Les bouchons (Mocks)

Page 48: Cellenza   microservices - tour d'horizon - v0.1

Les bouchons (Mocks)

Page 49: Cellenza   microservices - tour d'horizon - v0.1

Mock : le service fournit le bouchon

Page 50: Cellenza   microservices - tour d'horizon - v0.1

Mock : Le service possède un client

Page 51: Cellenza   microservices - tour d'horizon - v0.1

Multi-techno / Multi-plateform

Page 52: Cellenza   microservices - tour d'horizon - v0.1

En synthèse

Page 53: Cellenza   microservices - tour d'horizon - v0.1

Du monolithe aux micro-services

En ai-je vraiment besoin ?

Mon organisation

est-elle mature ?

Mon infra et mes

pratiques logicielles sont-elles matures ?

Page 54: Cellenza   microservices - tour d'horizon - v0.1

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

Page 55: Cellenza   microservices - tour d'horizon - v0.1

Quelques solutions

Page 56: Cellenza   microservices - tour d'horizon - v0.1

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.

Page 57: Cellenza   microservices - tour d'horizon - v0.1

Cloud Services et App Services

Page 58: Cellenza   microservices - tour d'horizon - v0.1

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.

Page 59: Cellenza   microservices - tour d'horizon - v0.1

States dans Azure Service Fabric

Page 60: Cellenza   microservices - tour d'horizon - v0.1

Conclusion

En ai-je vraiment besoin ?

Mon organisation

est-elle mature ?

Mon infra et mes

pratiques logicielles sont-elles matures ?