Microservices IRL - Devoxx-fr 2016

38
#DevoxxFR 1 Stéphane Lagraulet Olivier Revial Ippon Bordeaux Microservices IRL Ça marche chez un client, on vous dit comment!

Transcript of Microservices IRL - Devoxx-fr 2016

Page 1: Microservices IRL - Devoxx-fr 2016

#DevoxxFR 1

Stéphane LagrauletOlivier RevialIppon Bordeaux

Microservices IRLÇa marche chez un client,

on vous dit comment!

Page 2: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Vous allez voir...● Notre contexte client

● Pourquoi les micro services pour notre client ?

● Les challenges à relever

● Nos premiers choix techniques

● Notre architecture actuelle

● Notre roadmap

2

Page 3: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Qui sommes nous?

3

Stéphane Lagraulet● Architecte SI● Chez Ippon depuis 2013● Code en Java depuis 2000● @stephlag

Olivier Revial● Développeur● Chez Ippon depuis 2013● Code en Java depuis le berceau● @pommedouze

Page 4: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Ippon Technologies

4

● 220 ingénieurs en France, aux USA et bientôt en Australie○ Paris, Nantes, Bordeaux○ Richmond (Virginie), Washington (DC)

● Expertise○ Digital, Big Data, Cloud○ Java, Agilité, DevOps

● Projets open source○ Tatami○ JHipster (3!)

● @ippontech, @ipponusa

Page 5: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Le projet

5

● Component Team en charge du moteur de recherche d’un site de e-commerce

● Architecture de microservices pour alimenter, interroger et superviser les composants du moteur

● Projet multi-plateformes et multilingue (multi-tenants)

● Démarrage début 2015, déploiement s’étendant maintenant à d’autres équipes

Page 6: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Contexte technologique historique

6

Historiquement environnement full Microsoft:

.Net

SQL Server

Windows Server

Page 7: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Contexte technologique actuel

7

Page 8: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Pourquoi les microservices?

8

Page 9: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Convergence de mouvements

9

● Agilité

● DevOps

● Complexité du SI

● Architecture Web

● Cloud

● Conteneurs

● Provisionning

Page 10: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Une définition

“Les microservices sont définis comme une architecture de services faiblement couplés

avec des contextes fonctionnels définis.”

Adrian Cockroft

10

Page 11: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Challenges à relever

11

● Organisation

● Découverte de services

● Surveillance

● Programmation distribuée

● Gestion des pannes

● Stratégie de test

● Versionning, compatibilité

● Déploiement en continu

Page 12: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Des anti-patterns

● Nécessité ?

● Monolithe distribué

● Transactions distribuées

● Tables partagées - CQRS

● Découverte globale

● DRY

12

Page 13: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Loi de conway

“ Toute organisation qui construit un système... produira inévitablement une architecture dont

la structure est une copie de la structure de communication de cette organisation.“

Melvin Conway - 1968

13

Page 14: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Le défi organisationnel

14

Page 15: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Une première architecture de microservices

15

Page 16: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Notre première boite à outils

16

● Découverte de services

● Surveillance

● Programmation distribuée

Page 17: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Notre cas d’utilisation

17

Page 18: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Discovery avec Zookeeper

● Réserver des ressources dédiées

● Isoler les instances pour les microservices

● Bien utiliser le mécanisme de Curator (ServiceInstance)

● Marquer les instances “Down”

● Système CP

● Doit être surveillé

● Bien nettoyer les logs (zkCleanup)

18

Page 19: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Problème : Multi tenancy (1)Tenant-specific :/discovery/tenants/

/be-fr/ /kpi-service/... /loader-service/...

/be-nl/ /kpi-service/... /loader-service/…

Multi-tenant :/discovery/notenant/monitoring-agent/...

19

Page 20: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Problème : Multi tenancy (2)

20

Page 21: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Tolérance aux pannes avec le circuit breaker

21

Page 22: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Tolérance aux pannes avec le circuit breaker

22

Fermé

Ouvert

Semiouvert

Échecs rapides

Tentative defermeture

Déclenchementouverture

Échec ré-ouverture

Fermeture

Page 23: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Tester avec Wiremock / Saboteur

23

Page 24: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Continuous Delivery (1)

24

Releases

Config

ServeursSources

Versionning

Releases

Page 25: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Aller plus loin avec Spring Cloud

et les librairies Netflix

25

Page 26: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Enrichir notre boite à outils

26

● Découverte et exposition de services

● Surveillance dynamique des services

● Routage des requêtes

Page 27: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Spring Cloud

27

Page 28: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Evolution du cas d’utilisation

28

Page 29: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Multi tenancy avec spring cloud

29

Tenant-specific (specified in zk connect-string):/fr/services/discovery/

/services-gateway/... /kpi-service/... /loader-service/...

/be/services/discovery/ /services-gateway/...

/kpi-service/... /loader-service/…

Page 30: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Multi tenancy avec spring cloud

30

Page 31: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Live Demo…… no video backup

31

Page 32: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Notre roadmap

Déploiement, conteneurs, provisionning, communication

32

Page 33: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Continuous Delivery (2)

33

Releases

Config

ServeursSources

Versionning

Releases

Page 34: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Spinnaker

34

Page 35: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Déploiement

Docker Swarm / Docker Compose ?

Mesos / Marathon ?

Kubernetes / Rancher ?

35

Page 36: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

DiscoveryKeep Zookeeper?

Eureka ?

Consul ?

Etcd / CoreOs ?

36

Page 37: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Communication

Plain Json ?

Protobuf ?

Avro ?

Thrift ?

37

Page 38: Microservices IRL - Devoxx-fr 2016

#DevoxxFR

Merci !Des questions ?

github.com/orevial/devoxx-microservices

blog.ippon.fr

38