Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
@ContainerDay16 @jlrigau @tauffredou
Architecture microservices
hautement disponible au sein d’
un cluster Swarm
@ContainerDay16 @jlrigau @tauffredou
Jean-Louis RIGAU
@jlrigau
Continuous Delivery, DevOps and Docker
@ Xebia IT Architect...
@ContainerDay16 @jlrigau @tauffredou
Contexte
La startup Tromb'In souhaite révolutionner le marché des réseaux sociaux en
...
@ContainerDay16 @jlrigau @tauffredou
Trombinoscope
@ContainerDay16 @jlrigau @tauffredou
● Identity
○ Affiche une identité : nom + photo
○ Permet de voter
○ Génère un évèneme...
@ContainerDay16 @jlrigau @tauffredou
Architecture globale
Messaging Channel
Identity
Service
Discovery
Trombinoscope
Ident...
@ContainerDay16 @jlrigau @tauffredou
“Microservices”
● 1 identité = 1 service
● Composition de services
● Mécanisme de Ser...
@ContainerDay16 @jlrigau @tauffredou
● Mise en place d’un cluster Docker Swarm
○ 3 masters en quorum + 5 nodes
● Utilisati...
@ContainerDay16 @jlrigau @tauffredou
Schéma d’infrastructure
node #2 node #3 node #4 node #5
master #1 master #2 master #3...
@ContainerDay16 @jlrigau @tauffredou
Workflow de mise en oeuvre
Création de l’
infrastructure
Provisioning Déploiement
@ContainerDay16 @jlrigau @tauffredou
Création de l’
infrastructure
avec Terraform
@ContainerDay16 @jlrigau @tauffredou
Création de l’infrastructure
● Entièrement sur Amazon AWS
● Terraform pour automatise...
@ContainerDay16 @jlrigau @tauffredou
Provisioning
des instances
avec Ansible
@ContainerDay16 @jlrigau @tauffredou
Génération de l’inventaire
● Génération de l’inventaire pour Ansible
○ à partir des d...
@ContainerDay16 @jlrigau @tauffredou
Provisioning des instances
● Provisioning des instances avec Ansible
○ Installation d...
@ContainerDay16 @jlrigau @tauffredou
Déploiement
de l’application
avec Docker
Compose
@ContainerDay16 @jlrigau @tauffredou
Déploiement de l’application
● Compilation en utilisant un conteneur de build
● Créat...
@ContainerDay16 @jlrigau @tauffredou
Scalabilité de
l’application
avec Docker
Compose
@ContainerDay16 @jlrigau @tauffredou
Scalabilité ?
Service
Discovery
Trombinoscope
<register>
<discover>
interlock
Identit...
@ContainerDay16 @jlrigau @tauffredou
Scalabilité de l’application
● Ajout de nouvelles instances avec Docker Compose
$ doc...
@ContainerDay16 @jlrigau @tauffredou
Sources
https://github.com/xebia-france/xke-haswarm
@ContainerDay16 @jlrigau @tauffredou
Q&A
Próxima SlideShare
Cargando en…5
×

Paris Container Day 2016 : Architecture microservices hautement disponible au sein d’un cluster swarm (Xebia)

696 visualizaciones

Publicado el

Les conteneurs épousent la philosophie des architectures microservices. Nous vous présenterons un socle technique résilient et scalable pour distribuer des microservices sur une infrastructure s’appuyant sur Docker Swarm pour l’orchestration des conteneurs et Interlock avec HAProxy pour la gestion du Service Discovery, le tout accessible depuis le Cloud.
Nous déploierons au sein de cette infrastructure une application de trombinoscope développée en architecture microservices. Chaque individu présent au sein du trombinoscope sera représenté par un microservice spécifique, que nous pourrons déployer et faire scaler au sein du cluster. Avec autant de microservices, il est nécessaire de mesurer leur état, nous vous présenterons également les outils de supervision que nous avons mis en place au sein de la solution.

Par Jean-Louis Rigau (Software Engineer, Continuous Delivery, DevOps and Docker @Xebia) & Thomas Auffredou (Software Engineer @ Xebia)

Toutes les vidéos des conférences seront disponibles sur Xebia.tv

Publicado en: Tecnología
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Paris Container Day 2016 : Architecture microservices hautement disponible au sein d’un cluster swarm (Xebia)

  1. 1. @ContainerDay16 @jlrigau @tauffredou Architecture microservices hautement disponible au sein d’ un cluster Swarm
  2. 2. @ContainerDay16 @jlrigau @tauffredou Jean-Louis RIGAU @jlrigau Continuous Delivery, DevOps and Docker @ Xebia IT Architects Thomas AUFFREDOU @tauffredou Continuous Delivery, DevOps and Docker @ Xebia IT Architects
  3. 3. @ContainerDay16 @jlrigau @tauffredou Contexte La startup Tromb'In souhaite révolutionner le marché des réseaux sociaux en proposant une application de trombinoscope offrant une fonctionnalité de vote innovante. Elle a fait le choix de développer son application en s’appuyant sur une architecture microservices et de gérer l’ensemble de son infrastructure sur Amazon AWS. Elle a entendu parler de Docker et souhaite mettre en place une solution d’ orchestration de conteneurs résiliente et scalable pour déployer son application.
  4. 4. @ContainerDay16 @jlrigau @tauffredou Trombinoscope
  5. 5. @ContainerDay16 @jlrigau @tauffredou ● Identity ○ Affiche une identité : nom + photo ○ Permet de voter ○ Génère un évènement à chaque vote ● Messaging Channel ○ Redis en Publish/Subscribe ● Service Discovery ○ Liste l’ensemble des applications Identity ● Trombinoscope ○ Liste l’ensemble des identités ○ Affiche le nombre de votes (Hit/Sec) Une application, plusieurs services
  6. 6. @ContainerDay16 @jlrigau @tauffredou Architecture globale Messaging Channel Identity Service Discovery Trombinoscope Identity Identity Identity Identity Identity <publish> <register> <subscribe> <discover>
  7. 7. @ContainerDay16 @jlrigau @tauffredou “Microservices” ● 1 identité = 1 service ● Composition de services ● Mécanisme de Service Discovery ● Architecture orientée évènements ● Paradigme de message Publish/Subscribe
  8. 8. @ContainerDay16 @jlrigau @tauffredou ● Mise en place d’un cluster Docker Swarm ○ 3 masters en quorum + 5 nodes ● Utilisation de Consul comme KV-Store ○ Configuration du cluster + Overlay Network ● Service discovery avec Interlock avec Nginx ○ Exposition de l’ensemble des services ● Load Balancing avec Amazon ELB ○ masters sur le port 3375 ○ nodes sur le port 80 ● Gestion des DNS avec Route 53 ○ admin ○ *.service Choix d’infrastructure
  9. 9. @ContainerDay16 @jlrigau @tauffredou Schéma d’infrastructure node #2 node #3 node #4 node #5 master #1 master #2 master #3 Docker Engine Docker Engine Docker Engine node #1 Docker Engine Inter lock Docker Engine Inter lock Docker Engine Inter lock Docker Engine Inter lock Docker Engine Inter lock Elastic Load Balancing Elastic Load Balancing Amazon Route 53 Amazon Route 53 80:80 *.service 3375:3375 admin Masters Nodes
  10. 10. @ContainerDay16 @jlrigau @tauffredou Workflow de mise en oeuvre Création de l’ infrastructure Provisioning Déploiement
  11. 11. @ContainerDay16 @jlrigau @tauffredou Création de l’ infrastructure avec Terraform
  12. 12. @ContainerDay16 @jlrigau @tauffredou Création de l’infrastructure ● Entièrement sur Amazon AWS ● Terraform pour automatiser la création de l’infrastructure ○ Instances Amazon EC2 ○ Security Groups ○ Elastic Load Balancing ○ Règles Route 53 ● Nombre d’instances configurable $ make launch-infra
  13. 13. @ContainerDay16 @jlrigau @tauffredou Provisioning des instances avec Ansible
  14. 14. @ContainerDay16 @jlrigau @tauffredou Génération de l’inventaire ● Génération de l’inventaire pour Ansible ○ à partir des données de Terraform ○ script en javascript pour la conversion $ make terraform-to-ansible
  15. 15. @ContainerDay16 @jlrigau @tauffredou Provisioning des instances ● Provisioning des instances avec Ansible ○ Installation de docker ○ Configuration du cluster ○ Déploiement de conteneurs de base $ make configure
  16. 16. @ContainerDay16 @jlrigau @tauffredou Déploiement de l’application avec Docker Compose
  17. 17. @ContainerDay16 @jlrigau @tauffredou Déploiement de l’application ● Compilation en utilisant un conteneur de build ● Création des images applicatives ● Stockage des images sur le Docker Hub ● Déploiement avec Docker Compose $ docker-compose up -d
  18. 18. @ContainerDay16 @jlrigau @tauffredou Scalabilité de l’application avec Docker Compose
  19. 19. @ContainerDay16 @jlrigau @tauffredou Scalabilité ? Service Discovery Trombinoscope <register> <discover> interlock Identity Identity Identity 80:80 *.service 3375:3375 admin
  20. 20. @ContainerDay16 @jlrigau @tauffredou Scalabilité de l’application ● Ajout de nouvelles instances avec Docker Compose $ docker-compose scale jlrigau=3 tauffredou=3
  21. 21. @ContainerDay16 @jlrigau @tauffredou Sources https://github.com/xebia-france/xke-haswarm
  22. 22. @ContainerDay16 @jlrigau @tauffredou Q&A

×