Paris Innovation & New tech - Meetup #1 - Microservices

15
Microservices Vue d’ensemble

Transcript of Paris Innovation & New tech - Meetup #1 - Microservices

Page 1: Paris Innovation & New tech - Meetup #1 - Microservices

MicroservicesVue d’ensemble

Page 2: Paris Innovation & New tech - Meetup #1 - Microservices

Speaker

https://github.com/migibert

https://galaxy.ansible.com/migibert

https://twitter.com/migibert

Page 3: Paris Innovation & New tech - Meetup #1 - Microservices

Architectures de référence - synchrone• Les services communiquent entre eux en REST

• Problématiques :• Comment connaître l’adresse des services dont l’on dépend au runtime ?• Que se passe-t-il si un service ne répond plus ou trop lentement ?• Comment informer le load balancer de la disponibilité de nouveaux services ?• Comment les services connaissent ils l’emplacement de sa (ses) base(s) ?

UI

Service

ServiceService

Service

Service

Page 4: Paris Innovation & New tech - Meetup #1 - Microservices

Architectures de référence - asynchrone• Les services communiquent entre eux via un bus de messages

• Problématiques :• Comment connaître l’adresse du bus au runtime ?• Gérer la haute disponibilité et la sécurité du bus• Comment gérer le versioning des services et le routage des messages ?

UI

Service

ServiceService

Service

Service

Bus

Page 5: Paris Innovation & New tech - Meetup #1 - Microservices

Architectures de référence - hybride• Les services communiquent entre eux via REST et un bus de

messages• Opérations peu coûteuses réalisées par appels directs (synchrones)• Opérations coûteuses réalisées par appels indirects (asynchrones)

UI

Service

ServiceService

Service

Service

Bus

Page 6: Paris Innovation & New tech - Meetup #1 - Microservices

ConceptsGarder l’intelligence aux extrémités

BPM / ESB / EAIRevenir aux fondamentaux du web et éviter l’intelligence dans les couches de transportUtiliser des services de plus haut niveau pour gérer l’orchestration

Design for failureMonolithe peu sujet à la panne mais quand elle survient…Focaliser sur la résilience du systèmeNouveaux outils, nouvelles pratiques, nouvelle culture

Scaler grâce au modèle de processusServeur d’applications / 1 machine par serviceUn service = un processusLa plateforme doit être capable de gérer intelligemment les ressources

Page 7: Paris Innovation & New tech - Meetup #1 - Microservices

Ce qui changeLes services sont plus petits mais (beaucoup) plus nombreux

• Industrialisation du cycle de développement (CI / CD)• Ils évoluent plus vite, le versioning est indispensable (cohabitation)• Tester des concepts devient plus aisé (A/B testing)

Le système devient plus distribué• Une gestion intelligente des ressources est indispensable• Les défaillances sont inévitables et les latences sont partout (encore plus à l’ère

du cloud)• Le monitoring réactif devient une nécessité

Le système devient dynamique• Des services naissent et meurent en permanence• Il faut être capable de modifier le comportement des applications au runtime• On ne peut pas se passer de logs agrégés car les services sont éphémères

Page 8: Paris Innovation & New tech - Meetup #1 - Microservices

Design for failure – Du produit à la plateforme• L’environnement devient mouvant

• Les services doivent être capables de s’y adapter automatiquement• La plateforme doit gérer le scaling / l’autoscaling• Les services ajoutés à la volée doivent être monitorés• Les logs des services supprimés / tombés doivent rester disponibles• Les performances doivent être mesurées en permanence (APM)• De nouveaux enjeux de testing:

• Les tests fonctionnels assurent que le service est rendu au client• Les tests de résilience assurent que les services sont tolérants à la panne

Page 9: Paris Innovation & New tech - Meetup #1 - Microservices

Design for failure – de nouveaux patterns• De nouveaux patterns pour gérer la tolérance aux pannes

• Healthchecking : Publier son état de santé• Graceful degradation : Offrir un mode dégradé• Circuit breaker : Limiter les échecs en cascade• Toggle feature : Gérer l’activation des fonctionnalités

• De nouveaux patterns de déploiement (Zero Downtime)• Blue Green deployment : Duplication de l’environnement• Dark Launching : Déploiement de fonctionnalités non terminées (mais

désactivées)• Canary Release : Ajout d’un nouveau service à côté des anciens pour analyser

son comportement en situation réelle

Page 10: Paris Innovation & New tech - Meetup #1 - Microservices

De nouveaux outils - Configuration store

ServerConfiguration

storeConfigurationService

ServerConfigurationService

ServerService

ServerService

Configuration store

Server

Service

Server

Service

Agent

Agent

Page 11: Paris Innovation & New tech - Meetup #1 - Microservices

De nouveaux outils - Service Discovery

UDDI

Server Server Service Discovery

Service Service

Server Server

Service Service

Configuration store

REST DNS

REST

Page 12: Paris Innovation & New tech - Meetup #1 - Microservices

De nouveaux outils - Load Balancing

Load Balancer

VM VM

Service DiscoveryService Service

Load Balancer

VM VM

Service Service

Configuration daemon

Configuration store

REST REST DNS

Page 13: Paris Innovation & New tech - Meetup #1 - Microservices

De nouveaux outils – API Gateway

Service Discovery

VM

Configuration store

REST REST DNS

API Gateway

Service Service

VM

Service Service

VMServiceService

VMServiceService

AuthenticationSecurity Traffic control

Monitoring

Page 14: Paris Innovation & New tech - Meetup #1 - Microservices

Questions

Page 15: Paris Innovation & New tech - Meetup #1 - Microservices

BonusService scaling : PaaS, Marathon, Kubernetes, Swarm, NomadService Discovery : Consul, Eureka, SkyDNS, SmartStackConfiguration Store : etcd, zookeeper, consulConfiguration daemon : consul-template, confdMessage Bus: RabbitMQ, ZeroMQ, KafkaAPI Gateway: Zuul, Tyk, Kong, Nginx plusMonitoring:

Log management: Elastic Search, Logstach, Fluentd, Kibana, SplunkMetric management: Telegraf, Collectd, InfluxDB, OpenTSDB, Graphite, Grafana