#DevoxxFR 1 Stéphane Lagraulet Olivier Revial Ippon Bordeaux Microservices IRL Ça marche chez un client, on vous dit comment!
#DevoxxFR 1
Stéphane LagrauletOlivier RevialIppon Bordeaux
Microservices IRLÇa marche chez un client,
on vous dit comment!
#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
#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
#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
#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
#DevoxxFR
Contexte technologique historique
6
Historiquement environnement full Microsoft:
.Net
SQL Server
Windows Server
#DevoxxFR
Contexte technologique actuel
7
#DevoxxFR
Pourquoi les microservices?
8
#DevoxxFR
Convergence de mouvements
9
● Agilité
● DevOps
● Complexité du SI
● Architecture Web
● Cloud
● Conteneurs
● Provisionning
#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
#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
#DevoxxFR
Des anti-patterns
● Nécessité ?
● Monolithe distribué
● Transactions distribuées
● Tables partagées - CQRS
● Découverte globale
● DRY
12
#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
#DevoxxFR
Le défi organisationnel
14
#DevoxxFR
Une première architecture de microservices
15
#DevoxxFR
Notre première boite à outils
16
● Découverte de services
● Surveillance
● Programmation distribuée
#DevoxxFR
Notre cas d’utilisation
17
#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
#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
#DevoxxFR
Problème : Multi tenancy (2)
20
#DevoxxFR
Tolérance aux pannes avec le circuit breaker
21
#DevoxxFR
Tolérance aux pannes avec le circuit breaker
22
Fermé
Ouvert
Semiouvert
Échecs rapides
Tentative defermeture
Déclenchementouverture
Échec ré-ouverture
Fermeture
#DevoxxFR
Tester avec Wiremock / Saboteur
23
#DevoxxFR
Continuous Delivery (1)
24
Releases
Config
ServeursSources
Versionning
Releases
#DevoxxFR
Aller plus loin avec Spring Cloud
et les librairies Netflix
25
#DevoxxFR
Enrichir notre boite à outils
26
● Découverte et exposition de services
● Surveillance dynamique des services
● Routage des requêtes
#DevoxxFR
Spring Cloud
27
#DevoxxFR
Evolution du cas d’utilisation
28
#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/…
#DevoxxFR
Multi tenancy avec spring cloud
30
#DevoxxFR
Live Demo…… no video backup
31
#DevoxxFR
Notre roadmap
Déploiement, conteneurs, provisionning, communication
32
#DevoxxFR
Continuous Delivery (2)
33
Releases
Config
ServeursSources
Versionning
Releases
#DevoxxFR
Spinnaker
34
#DevoxxFR
Déploiement
Docker Swarm / Docker Compose ?
Mesos / Marathon ?
Kubernetes / Rancher ?
35
#DevoxxFR
DiscoveryKeep Zookeeper?
Eureka ?
Consul ?
Etcd / CoreOs ?
36
#DevoxxFR
Communication
Plain Json ?
Protobuf ?
Avro ?
Thrift ?
37
#DevoxxFR
Merci !Des questions ?
github.com/orevial/devoxx-microservices
blog.ippon.fr
38