Dr. Rim Samia Kaabi
Les micro-services
Position du probl me:
architecture monolithique
06/12/2019
1
1
2
06/12/2019
Architecture monolithique
" Applications N-tiers.
"
" Chaque modification n cessite de red ployer la totalit de
IHM, core, acc s aux BDD.
l'application.
" Chaque modification n cessite de re-tester l'ensemble de
l'application.
" Difficile de garder au fil du temps une bonne structure
modulaire.
" Mise l'echelle couteuse.
" Manque de diversit technologique.
" Pas facile de changer un composant.
3
Architecture monolithique
Avantages
" Technologies homog nes
Types dobjets / composants adapt s aux besoins architecturaux
Stack mainstream -> facilement int grable
" Framework
Puissance, g n ricit , services annexes&
" D ploiement
Simple, outils int gr s dans la stack
" Coh sion de l quipe de d veloppement
4
2
Architecture monolithique
Inconv nients
" Technologies homog nes
Types dobjets / composants pas toujours adapt s aux besoins
m tier
Int gration de composants dans dautres technos difficile
Choix technologiques long terme
" Framework
Peut devenir charg quand la complexit de lapplication augmente
" D ploiement
N cessite larr t de toute lapplication
Peut prendre du temps quand lapplication grossit
" Couplage fort entre les quipes de d veloppement
Architecture monolithique
Inconv nients
" Scalabilit
Verticale
Lapplication a la responsabilit de s auto-scaler
Limit e aux ressources du serveur
Horizontale
N cessite de r instancier lOS et le framework
Gestion des ressources partag es lext rieur de
lapplication
5
6
06/12/2019
3
06/12/2019
Architecture orient e services
7
Architecture orient e services
Avantages
" Modularit , couplage faible
S paration des pr occupations (et des
d veloppements)
Libert des choix technologiques
Possibilit de red ployer composant par composant
Ind pendance des quipes de d v
" Interfaces de communication r seau
P rennit des standards
Distribution possible
8
4
Architecture orient e services
Inconv nients
" Complexit
Advertisement
Des m canismes de communications
Des architectures applicatives
" Plus adapt es
Aux environnements distribu s
Aux changes de services entre plusieurs applications
Changement de vitesse
9
10
06/12/2019
5
06/12/2019
Plus rapide et de meilleure qualit
Plus rapide et de meilleure qualit
11
12
6
06/12/2019
Micro-service?? Juste un buzz!!!
Int r t relatif par rapport
d'autres outils
13
14
7
06/12/2019
Architecture micro-services
15
Micro-service: origines
" L'expression Micro-Web-Services a t utilis e pour la toute premi re
fois lors d'une conf rence sur le cloud computing par le Dr. Peter Rodgers,
en 2005
" Le terme microservices a fait son apparition lors d'une conf rence
d'architectes de logiciels au printemps 2011.
" Le concept de microservices n'est pas nouveau:
" Google, Facebook et Amazon utilisent cette approche diff rents
degr s depuis plus de dix ans.
" Une simple recherche avec Google, par exemple, fait appel plus de
70 microservices avant d'afficher la page de r sultats.
" D'autres architectures capables de r soudre certains des probl mes
que les microservices: SOA (inconv nient est de ne pas pouvoir traiter
les communications asynchrones.
16
8
D finition dun micro-service
" Un type d'architecture logicielle dans laquelle les grosses applications sont
con ues partir de petites unit s autonomes qui interagissent via des API
ind pendantes du langage logiciel utilis .
" Chaque service a une port e limit e, se concentre sur une seule t che et
est totalement ind pendant.
" Cette configuration permet aux directeurs IT et aux d veloppeurs de
construire des syst mes modulaires.
" Sam Newman* d finit les micro-services comme des petits composants
sp cialis s dans l'ex cution parfaite d'une seule t che.
* Building Microservices
17
Micro-service: caract ristique
1. une mise en Suvre de syst mes distribu s
2. 1 application = 1 besoin fonctionnel
3. pas de partage de bases de donn es
4. communications exclusives par le r seau (HTTP ou
protocole d di si besoin)
5. chaque application peut faire les choix techniques adapt s
(langages, frameworks, ...)
6. chaque application poss de son cycle de vie
18
06/12/2019
9
06/12/2019
Micro-service: caract ristique
19
Micro-service: caract ristique
Subdivision en composants : Les micro-services sont des
unit s ind pendantes, facilement rempla ables et actualis es.
Ces unit s recourent des services, tels que des appels de
proc dure distance ou des demandes de service Web, pour
communiquer.
Fonctionnalit s d'entreprise : Le d veloppement d'applications
traditionnelles am ne souvent le personnel tre r parti par
exemple en quipe c t serveur et quipe base de
donn es .
Le d veloppement des micro-services est ax sur la
fonctionnalit d'entreprise, avec une responsabilit pour toute
Advertisement
une s rie de fonctions couvrant l'exp rience utilisateur et la
gestion
de projet.
20
10
Micro-service: caract ristique
Des produits plut t que des projets : Au lieu de se concentrer
sur un projet logiciel qui est livr une fois termin , les
microservices traitent les applications comme des produits dont
ils ont la responsabilit . Ils tablissent un dialogue continu visant
faire correspondre en permanence l'application la fonction
commerciale.
Connexions simples et points d'acc s intelligents : Les
applications microservices ont leur propre logique. Les
ressources souvent utilis es sont facilement mises en cache.
Gouvernance d centralis e : Des outils sont d velopp s et
partag s pour traiter les probl mes similaires ceux rencontr s
dans d'autres quipes.
Micro-service: caract ristique
21
22
06/12/2019
11
06/12/2019
Micro-service
LASTIQUE
Un Microservice doit pouvoir tre d ploy un nombre de
fois qui varie en fonction de la demande, et ce,
ind pendamment des autres services dans la m me
application (pas d'adresses r seau en dur (annuaires types
ZooKeeper, ..))
.
Pour la d couverte :
1. Load balancer (round robin, sticky sessions, etc)
2. DNS !
23
Micro-service
R SILENT
Un Microservice doit chouer sans affecter d'autres
services dans la m me application
Les noeuds doivent mettre en Suvre des m canismes de
r plication, consensus distribu , lection, etc.
24
12
Micro-service
API
Les Microservices doivent avoir une API stable, coh rente
et bien document e. https://openapis.org/
MINIMAL MAIS COMPLET
Un Microservice doit tre le plus petit possible mais pas
plus petit. Il doit offrir une fonction compl te avec des
d pendances minimales avec les autres services.
25
Micro-service
" Concepts
Domain-Driven Design -> Bounded context
" D coupage dun projet en groupements fonctionnels
" Isolation de ces groupements entre eux
" Chaque groupement est un mini-projet ind pendant
D veloppement
D ploiement
Services de support et de pilotage
Un microservice est un running bounded context
Dumb pipe, smart endpoint
" Le bus reste le plus simple possible (ne contient plus de
m tier)
" La logique de communication est dans les services et non
26
entre eux
06/12/2019
13
06/12/2019
Micro-service
" Une application = un assemblage de petits
services ind pendants
Chaque microservice r alise un processus m tier ou
une pr occupation transverse
" capability , unit fonctionnelle
" Ex : vente, CRM, comptabilit , front-end, GUI&
Techniquement, les services sont
" Programm s dans des langages h t rog nes
Advertisement
" Ex cut s dans des processus s par s
" Li s leurs propres supports de persistance
" D velopp s et d ploy s dans des projets distincts
27
Micro-service
La gestion centralis e de l'application est r duite au
minimum
Communication par m canismes l gers
" Op rateur | (pipe)
" REST
Les services peuvent utiliser des m canismes de stockage
diff rents
L intelligence de lapplication est r partie dans les services
et non dans un m dium de communication centralis (ESB)
28
14
Micro-service
Aspects humains: lorganisation entre les quipes
doit refl ter larchitecture du produit
Des quipes plus petites
agilit , autonomie, efficacit
Chaque quipe est responsable dun service
" Choix technologiques, conception, d ploiement,
maintenance
Avantages pour le produit
" Cycles de d veloppement courts
" D ploiements ind pendants
" Meilleure isolation des / tol rance aux bugs
29
Micro-service: avantages
" Agilit
Conception l chelle de la fonctionnalit
Isolation des fonctionnalit s
" L g ret
Permet de sabstraire de la couche OS (VM)
" Scalabilit
Verticale : permet de ne r pliquer que les services charg s
Horizontale : d port des services les plus charg s vers des nSuds
diff rents
30
06/12/2019
15
Micro-service: inconv nients
" Overhead
N cessite une communication orient e-message entre les
services (vs. appel de m thodes)
N cessite une surveillance du fonctionnement des services
(monitoring, tol rance aux pannes, pilotage)
Acc s aux ressources partag es
" Humain
N cessite que les quipes soient effectivement structur es
selon larchitecture du produit
" Vision / mise au point globale de lapplication
Pas triviale, peut n cessiter plusieurs it rations
31
Micro-service: pi ges
Granularit
" Jai regroup plusieurs services en un seul macro-service
" Chaque m thode de mon application est devenue un micro-
service
Architecture globale
" Il est tr s difficile de comprendre ce qui se passe entre mes
services
" La recherche dinformation dans les logs est trop longue
" Impossible de relancer ou ajouter rapidement des instances de
mes services
32
06/12/2019
16
06/12/2019
La motivation qui pousse utiliser les
Microservices
" Frustration de ne pas obtenir le r sultat souhait avec une
architecture monolithique.
" Arriv e sur le march d'outils permettant le d ploiement des
applications Microservices avec plus de facilit .
" Large adoption des solutions d'infrastructure en tant que
service (IaaS).
" Le passage des grosses soci t s du Web vers des
architectures compl tement Microservices.
Dans un avenir plus ou moins proche les applications
Advertisement
monolithiques ne serviront qu'au prototypage
33
SOA versus micro-services
" SOA supporte le WSDL, qui fixe les points d'acc s du service
de mani re tr s typ e les micro-services disposent de
connexions toutes simples et de points d'acc s intelligents.
" SOA n'a pas d' tat les micro-services en ont de nombreux
et utilisent des structures de POO qui rassemblent les
donn es et la logique.
34
17
Micro-service et DevOps
" Une approche DevOps est cruciale pour d terminer le cadre
d'utilisation des microservices.
" Le d veloppement des services est continu et leur
ajustement la vol e.
" Les quipes DevOps doivent assurer la mise en production
des composants actualis s, en travaillant troitement avec
les intervenants internes et les fournisseurs sur les mises
jour.
35
Diff rence des micro-services
selon les plateformes
Java
vite d'utiliser les fichiers Web Archive ou Enterprise Archive.
Les composants ne sont pas auto-d ploy s. Des conteneurs Docker ou
des Amazon Machine Images le sont la place.
PHP
Des microservices PHP de type REST sont d ploy s depuis d j
plusieurs ann es car ils sont :
Tr s flexibles au niveau de l'entreprise.
Facilement et rapidement test s.
Python
Il est simple de cr er un service Python servant de service Web front-end
pour les microservices dans d'autres langages tels qu'ASP ou PHP.
Un grand choix de frameworks performants, comme Flask ou Django, est
propos .
Il est important de bien comprendre l'API pour acc l rer le prototypage.
Possibilit d'utiliser Pypy, Cython, C++ ou Golang s'il faut plus de vitesse
ou d'efficacit .
36
06/12/2019
18
Diff rence des micro-services
selon les plateformes
Node.js
Node.js est un choix naturel pour les microservices, car c'est le langage des
applications Web modernes.
Parmi ses avantages :
S'appuie sur JavaScript et tire parti du puissant moteur open-source
V8 de Google.
Code machine optimis de fa on dynamique pendant l'ex cution.
Processus du serveur HTTP l gers.
E/S non bloquantes, pilot es par v nements.
Gestion des paquets de haute qualit .
Cr ation facile de paquets pour les d veloppeurs.
Haute volutivit par E/S asynchrones de bout en bout
37
Diff rence des micro-services
selon les plateformes
.NET
" Au d but des ann es 2000, .NET tait l'une des premi res
plateformes cr er des applications en tant que services l'aide du
protocole SOAP (Simple Object Access Protocol), dans un but
comparable celui
des microservices modernes.
" Aujourd'hui, l'un des avantages de .NET est sa forte pr sence en
entreprise.
" Deux exemples d'utilisation des microservices avec .NET :
D veloppement de service Web auto-h berg .NET avec Open
Web Interface for .NET (OWIN).
Il est ensuite possible de l'utiliser pour int grer des microservices.
Cr ation d'une entreprise sp cialis e dans les ressources
humaines d mat rialis es.
38
06/12/2019
19