Cellenza microservices - tour d'horizon - v0.1

Preview:

Citation preview

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 ?

Recommended