XebiConFr 15 - Le challenge des microservices

Post on 21-Jan-2018

1.095 views 0 download

Transcript of XebiConFr 15 - Le challenge des microservices

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