Les challenges des microservices
#XebiConFr@njozwiak
#XebiConFr
Speaker
@njozwiak
2
#XebiConFr
Les challenges des microservices
3
#XebiConFr
Agenda
• Définition des microservices
• Pourquoi les microservices ?
• Les challenges organisationnels et techniques
• Comment mettre en place les microservices ?
4
#XebiConFr
Définition
5
#XebiConFr
In computing, microservices is a software architecture style in which complex applications are composed of small,
independent processes communicating with each other using language-agnostic APIs.These services are small, highly decoupled and focus on doing a small task, facilitating a
modular approach to system-building.
Définition Wikipédia
6
#XebiConFr
service-oriented architecture composed of loosely coupled elements that have bounded contexts
Définition Adrian Cockcroft
7
#XebiConFr
Pourquoi les microservices ?
8
#XebiConFr
• Besoins IT augmentent
• Clients exigeants
• Plus rapide que la concurrence
Pourquoi les microservices ?
9
#XebiConFr
• Application monolithique complexe
• Maturité des technologies
• Langages et bases de données
10
Pourquoi les microservices ?
#XebiConFr
• 57 millions de membres
• 1 milliards d’évènements / jour
• Cycles de déploiements longs
• Besoin d’évoluer rapidement
11
Pourquoi les microservices ?
#XebiConFr
Les challenges organisationnels
12
#XebiConFr
Loi de Conway
« Organizations which design systems areconstrained to produce systems which arecopies of the communication structures of
these organizations. »13
#XebiConFr
Communication
14
#XebiConFr
Compétences
15
#XebiConFr
Équipes
Dev Team
Product Manager
Ops Team
QA Team
16
#XebiConFr
Developer
Product Manager
Équipes
17
#XebiConFr
Culture
18
#XebiConFr
Agilité
19
#XebiConFr
Les challenges techniques
20
#XebiConFr
Les challenges techniques
Microservices
Automatiser
Monitorer
12 facteurs app
Tolérer et isoler les pannes
Découverte de service
21
#XebiConFr22
#XebiConFr
Les challenges techniques
Microservices
Automatiser
Monitorer
12 facteurs app
Tolérer et isoler les pannes
Découverte de service
23
#XebiConFr
Automatiser
1 mois 3 mois 12 mois
24
#XebiConFr
Automatiser
25
#XebiConFr
Automatiser
26
#XebiConFr
Les challenges techniques
Microservices
Automatiser
Monitorer
12 facteurs app
Tolérer et isoler les pannes
Découverte de service
27
#XebiConFr
Tolérer et isoler les pannes
App
App client App commande App facture
Requests
App client App commande App factureX28
#XebiConFr
Tolérer et isoler les pannes
Client Commande Facture
App
Requests
Circuit breaker
29
#XebiConFr
Tolérer et isoler les pannes
30
#XebiConFr
Tolérer et isoler les pannes
31
#XebiConFr
Les challenges techniques
Microservices
Automatiser
Monitorer
12 facteurs app
Tolérer et isoler les pannes
Découverte de service
32
#XebiConFr
Découverte de services
Client Commande Facture
App
Quels hosts ?
33
#XebiConFr
Découverte de services
Catalogue de services
Client
Commande
Facture
Eureka
34
#XebiConFr
Découverte de services
35
Mesos master
Mesos slave / Marathon Mesos slave / Marathon
commande client
commande facture
client
Http post
#XebiConFr
Découverte de services
{ "id": "provisioning", "instances": 1, "cpus": 2.0, "mem": 512, "ports":[9000], "container": { "type": "DOCKER", "docker": { "image": "project/web 0crec10a90724f791caaf95cbc62ea61abbd6376", "network": "BRIDGE", "portMappings": [ { "containerPort": 9000, "servicePort": 9000, "hostPort": 0, "protocol": "tcp" } ] } } }
36
#XebiConFr
Découverte de services
37
#XebiConFr
Les challenges techniques
Microservices
Automatiser
Monitorer
12 facteurs app
Tolérer et isoler les pannes
Découverte de service
38
#XebiConFr
Monitoring
• Trafic
• Aggréger les logs
• Id unique
39
#XebiConFr
Monitoring
40
#XebiConFr
Monitoring
41
#XebiConFr
Comment mettre en place les microservices ?
42
#XebiConFr
Stratégies
43
RESTAPI
#XebiConFr
Stratégies
44
#XebiConFr
Stratégies
Identifier un pilote Première release Deuxième release N release
45
#XebiConFr
Première release
46
#XebiConFr
Première release
App
Requests
App client App commande App facture
47
#XebiConFr
Première release
Client Commande Facture
App
Requests
48
#XebiConFr
Première release
Contrats
49
#XebiConFr
Première release
50
#XebiConFr
Datacenter
Des mois Des
Virtuel et Container
Des
Première release
51
#XebiConFr
Première release
52
#XebiConFr
Première release
53
#XebiConFr
En résumé
• Intégration continue
• Favoriser les tests par contrats
• Contrôler les dépendances
• Livrer en production
• Monitorer et analyser
54
#XebiConFr
Deuxième release
Client Commande Facture
App
Requests
55
#XebiConFr
Deuxième release
Client Commande Facture
App
Requests
CommandeCommandeClient
56
#XebiConFr
Deuxième release
« No direct database access is allowed from outside the service, and there’s no data sharing among the services »
Werner Vogels, CTO et Vice président de amazon.com
57
#XebiConFr
Deuxième release
Client Commande Facture
App
Requests
58
#XebiConFr
Deuxième release
59
#XebiConFr
En résumé
• Savoir quand créer un nouveau service
• Définir le degré d’isolation
• Réduire la barrière d’entrée
• Construire ce que vous pouvez supporter
60
#XebiConFr
N release
Commande Facture
App
Client Client Commande Facture
61
#XebiConFr
Tester l’infrastructure
62
#XebiConFr
Gestion des mises à jour
63
#XebiConFr
En résumé
• Scaler votre architecture
• Tester votre infrastructure
• Stratégie de mises à jour
64
#XebiConFr
Conclusion
65
#XebiConFr
Questions ?
66
#XebiConFr
Références
• http://fr.slideshare.net/InfoQ/migrating-to-microservices • http://fr.slideshare.net/InfoQ/scalable-microservices-at-netflix-challenges-
and-tools-of-the-trade • http://fr.slideshare.net/ThoughtWorks/delivering-with-microservices-how-to-
iterate-towards-sophistication
67