Successfully reported this slideshow.
@xebiconfr #xebiconfr
Choisissez votre style avec
Docker & Amazon Web Services
Alexis Kinsella / Gérôme Egron
@xebiconfr
@xebiconfr #xebiconfr
Usage du Cloud chez Xebia
2
@xebiconfr #xebiconfr
Usage de Docker
3
@xebiconfr #xebiconfr
Docker pour :
Le développement
L’usine logicielle
L’infrastructure
Quels usages ?
4
@xebiconfr #xebiconfr
Docker pour le développeur
5
@xebiconfr #xebiconfr
POCer facilement
Éviter les installations manuelles et
laborieuses
Clusteriser simplement
Utiliser p...
@xebiconfr #xebiconfr
Fournir des mocks de services développés par
d’autres équipes
Mocks
7
@xebiconfr #xebiconfr
Docker pour l’usine logicielle
8
@xebiconfr #xebiconfr 9
Docker Docker-compose
Développeur
git push
ECR
@xebiconfr #xebiconfr
Docker pour l’infrastructure
10
@xebiconfr #xebiconfr
Le mode artisanal
11
@xebiconfr #xebiconfr
Gestion directe des instances
Responsabilités du provisioning & du
monitoring
Instances EC2
12
@xebiconfr #xebiconfr
Utiliser l’AMI Amazon Linux officielle 2016.09
ou,
Installer manuellement Docker
2 Solutions
13
@xebiconfr #xebiconfr
Pet vs Cattle
14
@xebiconfr #xebiconfr
Le mode industriel
15
@xebiconfr #xebiconfr
Automatiser les déploiements
Uniformiser les déploiements
Optimiser l’usage des ressources
Pour répo...
@xebiconfr #xebiconfr
Utiliser Docker
avec des
Orchestrateurs
Une solution ?
17
@xebiconfr #xebiconfr
1ère solution - Distributions spécialisées
18
@xebiconfr #xebiconfr
2ème solution - Les outils d’orchestration
Nomad KubernetesMesos / Marathon / ZooKeeper
19
@xebiconfr #xebiconfr
3ème solution - Docker for AWS
Basé sur CloudFormation
Nœuds de type manager et worker
S’appuie sur ...
@xebiconfr #xebiconfr
Le setup de ces solutions est à votre charge !
Problème
21
@xebiconfr #xebiconfr
Elastic Beanstalk avec Docker
Elastic Container Service
4ème solution - Les services AWS
22
@xebiconfr #xebiconfr
Elastic Beanstalk
23
@xebiconfr #xebiconfr
Historiquement utilisé avec des stacks
préconfigurées Node.js ou Java
Succès historique sur nos proj...
@xebiconfr #xebiconfr
Mono application
25
@xebiconfr #xebiconfr
Mono & Multi container
2 Modes
26
@xebiconfr #xebiconfr
Plusieurs options de déploiement :
● Dockerfile
● Dockerrun.aws.json
● Un Bundle de déploiement
Mono...
@xebiconfr #xebiconfr
Authentification
Référence de l’image à déployer
Configuration complémentaire:
● Ports
● Volumes
● L...
@xebiconfr #xebiconfr
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "janedoe/image",
"Update": "true"
},
"Ports": [
{...
@xebiconfr #xebiconfr
Supporte le déploiement d’applications multi-container
Utilise Elastic Container Service
Se charge d...
@xebiconfr #xebiconfr
app1.elasticbeanstalk.com:80
app2.elasticbeanstalk.com:80
Instance 1 Instance 2
80
9000
Auto Scaling...
@xebiconfr #xebiconfr
Le format v2 supporte des instances multi-containers
Les images doivent être pré-construites
Dockerr...
@xebiconfr #xebiconfr
AMI optimisée pour ECS
Agent ECS pré-installé
Multi Container
33
@xebiconfr #xebiconfr
Blue-Green Deployment
Multi Environment Management
Rolling Update
Easy Rollback
Pourquoi utiliser El...
@xebiconfr #xebiconfr
Un mot sur CloudFormation
35
@xebiconfr #xebiconfr
Fichiers de configuration au format JSON
Rendre répétable la création de vos infrastructures
Garder ...
@xebiconfr #xebiconfr
Elastic Container Service
37
@xebiconfr #xebiconfr
Gérer soi-même un cluster est une tâche
complexe
38
@xebiconfr #xebiconfr
Load-Balancing
Auto-Scaling
CloudWatch
Elastic Container Registry
Cloud Formation ...
Intégration av...
@xebiconfr #xebiconfr
Intégration End-to-End
Stockage sécurisé des images
Accès fiables aux images
Elastic Container Regis...
@xebiconfr #xebiconfr
Régions AWS & Disponibilité d’ECS
41
@xebiconfr #xebiconfr
Clusters, Task Definitions, Services
Elastic Container Service
42
@xebiconfr #xebiconfr
Pas de Cluster / Orchestrateur à faire fonctionner
Contrôle & Monitoring via des API et la console
S...
@xebiconfr #xebiconfr
C’est avant tout un pool de ressources
Clusters
44
@xebiconfr #xebiconfr
Unités de travail
Regroupent des containers liés
Tournent sur des instances
Tasks
45
@xebiconfr #xebiconfr
Adapté pour les tâches à durée de vie longue
Load balance le trafic entre les instances
Rétablit les...
@xebiconfr #xebiconfr
Métriques enregistrées chaque minute pour une durée de
2 semaines
Métriques: CPUReservation, MemoryR...
@xebiconfr #xebiconfr
CloudFormation pour lier les services entre eux
Route53 avec une zone privée
Outils tiers de service...
@xebiconfr #xebiconfr
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Application
router, e.g.
nginx
Route 53 ...
@xebiconfr #xebiconfr
Scheduler par tâches
- Exécute les tâches une unique fois
- Lancement de jobs batchés (Jusqu’à 10)
-...
@xebiconfr #xebiconfr
Support des Elastic Load Balancing
Permet d’associer un port de l’ELB avec un port d’un
container (C...
@xebiconfr #xebiconfr
Lors de la mise à jour des tâches, il est possible de jouer avec
les paramètres de minimumHealthyPer...
@xebiconfr #xebiconfr
Rolling Update - Jobs à durée de vie longue (min: 50%, max: 100%)
#ContainerdayFR
Instance 1 Instanc...
@xebiconfr #xebiconfr
Rolling Update - Jobs à durée de vie longue (min: 100%, max: 200%)
Instance 1 Instance 2 Instance 3 ...
@xebiconfr #xebiconfr
Définir 2 services
Chaque service est associé
à un ELB
Chaque service est associé
à une même entrée ...
@xebiconfr #xebiconfr
Elastic Search Cluster
Container 1 Container 2
Container 3
ECS Instance
Container 4
Container 1 Cont...
@xebiconfr #xebiconfr
Container 1 Container 2
Container 3
ECS Instance
Container 4
Container 1 Container 2
Container 3
ECS...
@xebiconfr #xebiconfr
Cloud Hybride
58
@xebiconfr #xebiconfr
Direct Connect
VPN
Virtual Private Cloud
Intégrer un DataCenter avec AWS
59
@xebiconfr #xebiconfr
Conclusion
60
@xebiconfr #xebiconfr
#ContainerdayFR
EC2
Beanstalk
ECS
Une solution pour chaque besoin
61
@xebiconfr #xebiconfr
Questions
62
Prochain SlideShare
Chargement dans…5
×

XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Alexis Kinsella, CTO de Xebia et Gérome Egron, Développeur chez Xebia

248 vues

Publié le

La mode est aux conteneurs. Mais tout le monde n'est pas capable de transformer radicalement son DataCenter pour accueillir ces nouvelles unités de déploiement. Dès lors, le cloud est une alternative plus que valide. Mais il existe de nombreuses façons de déployer son conteneur dans les nuages ! À travers un retour d'expérience basé sur AWS, nous balayerons ces différents patterns, du plus indépendant de l'infrastructure sous jacente, au plus intriqué avec les services managés AWS.

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Alexis Kinsella, CTO de Xebia et Gérome Egron, Développeur chez Xebia

  1. 1. @xebiconfr #xebiconfr Choisissez votre style avec Docker & Amazon Web Services Alexis Kinsella / Gérôme Egron @xebiconfr
  2. 2. @xebiconfr #xebiconfr Usage du Cloud chez Xebia 2
  3. 3. @xebiconfr #xebiconfr Usage de Docker 3
  4. 4. @xebiconfr #xebiconfr Docker pour : Le développement L’usine logicielle L’infrastructure Quels usages ? 4
  5. 5. @xebiconfr #xebiconfr Docker pour le développeur 5
  6. 6. @xebiconfr #xebiconfr POCer facilement Éviter les installations manuelles et laborieuses Clusteriser simplement Utiliser plusieurs versions d’un outil 6
  7. 7. @xebiconfr #xebiconfr Fournir des mocks de services développés par d’autres équipes Mocks 7
  8. 8. @xebiconfr #xebiconfr Docker pour l’usine logicielle 8
  9. 9. @xebiconfr #xebiconfr 9 Docker Docker-compose Développeur git push ECR
  10. 10. @xebiconfr #xebiconfr Docker pour l’infrastructure 10
  11. 11. @xebiconfr #xebiconfr Le mode artisanal 11
  12. 12. @xebiconfr #xebiconfr Gestion directe des instances Responsabilités du provisioning & du monitoring Instances EC2 12
  13. 13. @xebiconfr #xebiconfr Utiliser l’AMI Amazon Linux officielle 2016.09 ou, Installer manuellement Docker 2 Solutions 13
  14. 14. @xebiconfr #xebiconfr Pet vs Cattle 14
  15. 15. @xebiconfr #xebiconfr Le mode industriel 15
  16. 16. @xebiconfr #xebiconfr Automatiser les déploiements Uniformiser les déploiements Optimiser l’usage des ressources Pour répondre à des besoins modernes : 16
  17. 17. @xebiconfr #xebiconfr Utiliser Docker avec des Orchestrateurs Une solution ? 17
  18. 18. @xebiconfr #xebiconfr 1ère solution - Distributions spécialisées 18
  19. 19. @xebiconfr #xebiconfr 2ème solution - Les outils d’orchestration Nomad KubernetesMesos / Marathon / ZooKeeper 19
  20. 20. @xebiconfr #xebiconfr 3ème solution - Docker for AWS Basé sur CloudFormation Nœuds de type manager et worker S’appuie sur les services AWS pour fonctionner AMI Customisées 20
  21. 21. @xebiconfr #xebiconfr Le setup de ces solutions est à votre charge ! Problème 21
  22. 22. @xebiconfr #xebiconfr Elastic Beanstalk avec Docker Elastic Container Service 4ème solution - Les services AWS 22
  23. 23. @xebiconfr #xebiconfr Elastic Beanstalk 23
  24. 24. @xebiconfr #xebiconfr Historiquement utilisé avec des stacks préconfigurées Node.js ou Java Succès historique sur nos projets Utilisation de Jenkins et l’Elastic Beanstalk Command Line Interface (EB CLI) pour construire & déployer les livrables 24
  25. 25. @xebiconfr #xebiconfr Mono application 25
  26. 26. @xebiconfr #xebiconfr Mono & Multi container 2 Modes 26
  27. 27. @xebiconfr #xebiconfr Plusieurs options de déploiement : ● Dockerfile ● Dockerrun.aws.json ● Un Bundle de déploiement Mono Container 27
  28. 28. @xebiconfr #xebiconfr Authentification Référence de l’image à déployer Configuration complémentaire: ● Ports ● Volumes ● Logging Dockerrun.aws.json 28
  29. 29. @xebiconfr #xebiconfr { "AWSEBDockerrunVersion": "1", "Image": { "Name": "janedoe/image", "Update": "true" }, "Ports": [ { "ContainerPort": "1234" } ], "Volumes": [ { "HostDirectory": "/var/app/mydb", "ContainerDirectory": "/etc/mysql" } ], "Logging": "/var/log/nginx" } Dockerrun.aws.json 29
  30. 30. @xebiconfr #xebiconfr Supporte le déploiement d’applications multi-container Utilise Elastic Container Service Se charge de la gestion du cluster ECS, des définitions de tâches et des exécutions Multi Container 30
  31. 31. @xebiconfr #xebiconfr app1.elasticbeanstalk.com:80 app2.elasticbeanstalk.com:80 Instance 1 Instance 2 80 9000 Auto Scaling Group / ECS Cluster Elastic Beanstalk Environment Task 1-1 Task 1-2 Container 1 Container 2 Container 3 Container 1 Container 2 Container 3 31
  32. 32. @xebiconfr #xebiconfr Le format v2 supporte des instances multi-containers Les images doivent être pré-construites Dockerrun.aws.json v2 32
  33. 33. @xebiconfr #xebiconfr AMI optimisée pour ECS Agent ECS pré-installé Multi Container 33
  34. 34. @xebiconfr #xebiconfr Blue-Green Deployment Multi Environment Management Rolling Update Easy Rollback Pourquoi utiliser Elastic Beanstalk avec Docker ? 34
  35. 35. @xebiconfr #xebiconfr Un mot sur CloudFormation 35
  36. 36. @xebiconfr #xebiconfr Fichiers de configuration au format JSON Rendre répétable la création de vos infrastructures Garder les définitions dans un gestionnaire de source Donner la capacité de tester les déploiements Pourquoi utiliser CloudFormation ? 36
  37. 37. @xebiconfr #xebiconfr Elastic Container Service 37
  38. 38. @xebiconfr #xebiconfr Gérer soi-même un cluster est une tâche complexe 38
  39. 39. @xebiconfr #xebiconfr Load-Balancing Auto-Scaling CloudWatch Elastic Container Registry Cloud Formation ... Intégration avec les services AWS 39
  40. 40. @xebiconfr #xebiconfr Intégration End-to-End Stockage sécurisé des images Accès fiables aux images Elastic Container Registry 40
  41. 41. @xebiconfr #xebiconfr Régions AWS & Disponibilité d’ECS 41
  42. 42. @xebiconfr #xebiconfr Clusters, Task Definitions, Services Elastic Container Service 42
  43. 43. @xebiconfr #xebiconfr Pas de Cluster / Orchestrateur à faire fonctionner Contrôle & Monitoring via des API et la console Scaling Avantages 43
  44. 44. @xebiconfr #xebiconfr C’est avant tout un pool de ressources Clusters 44
  45. 45. @xebiconfr #xebiconfr Unités de travail Regroupent des containers liés Tournent sur des instances Tasks 45
  46. 46. @xebiconfr #xebiconfr Adapté pour les tâches à durée de vie longue Load balance le trafic entre les instances Rétablit les instances défaillantes Services 46
  47. 47. @xebiconfr #xebiconfr Métriques enregistrées chaque minute pour une durée de 2 semaines Métriques: CPUReservation, MemoryReservation, CPUUtilization, MemoryUtilization Dimensions: ClusterName, ServiceName Possibilité d’envoyer des métriques customisées Métriques & Cloud Watch 47
  48. 48. @xebiconfr #xebiconfr CloudFormation pour lier les services entre eux Route53 avec une zone privée Outils tiers de service discovery (Consul, Etcd) Service Discovery 48
  49. 49. @xebiconfr #xebiconfr Task Task Task Task Task Task Task Task Task Task Task Task Application router, e.g. nginx Route 53 private zone, e.g. example.com ECS Service Internal ELB with CNAME, e.g. api.example.com Service Discovery avec Route53 49
  50. 50. @xebiconfr #xebiconfr Scheduler par tâches - Exécute les tâches une unique fois - Lancement de jobs batchés (Jusqu’à 10) - Permet de lancer les jobs en random (RunTask) ou placés (StartTask) Scheduler de services - Gestion de la santé des tâches (Relance les tâches au besoin) - Scale Up & Scale Down - Availability Zone awareness Schedulers ECS 50
  51. 51. @xebiconfr #xebiconfr Support des Elastic Load Balancing Permet d’associer un port de l’ELB avec un port d’un container (Classic & Dynamic port mapping) Si un healthcheck de Load Balancer est en erreur, la tâche est killée puis redémarrée Services ECS 51
  52. 52. @xebiconfr #xebiconfr Lors de la mise à jour des tâches, il est possible de jouer avec les paramètres de minimumHealthyPercent et maximumPercent pour assurer des déploiements sans coupure Rolling Update - Jobs à durée de vie longue 52
  53. 53. @xebiconfr #xebiconfr Rolling Update - Jobs à durée de vie longue (min: 50%, max: 100%) #ContainerdayFR Instance 1 Instance 2 Instance 3 Instance 4Step 1 Task 2Task 1 Task 4Task 3 Instance 1 Instance 2 Instance 3 Instance 4Step 2 Task 2Task 1 Task 4Task 3 Instance 1 Instance 2 Instance 3 Instance 4Step 3 Task 4Task 3Task 2Task 1 53
  54. 54. @xebiconfr #xebiconfr Rolling Update - Jobs à durée de vie longue (min: 100%, max: 200%) Instance 1 Instance 2 Instance 3 Instance 4Step 1 Task 2Task 1 Task 4Task 3 Instance 5 Instance 6 Instance 7 Instance 8 Instance 1 Instance 2 Instance 3 Instance 4Step 2 Task 2Task 1 Task 4Task 3 Instance 5 Instance 6 Instance 7 Instance 8 Task 6Task 5 Task 8Task 7 Instance 1 Instance 2 Instance 3 Instance 4Step 3 Instance 5 Instance 6 Instance 7 Instance 8 Task 8Task 7Task 6Task 5 Intéressant si le nombre d’instances ne peut être réduit 54
  55. 55. @xebiconfr #xebiconfr Définir 2 services Chaque service est associé à un ELB Chaque service est associé à une même entrée Route53 avec une policy par poids (Primaire: 100%, Secondaire: 0%) Switcher les poids pour changer le routage DNS d’un service à l’autre Task Task Task Route 53 record set with weighted routing policy Blue-Green Deployments Task Task Task 55
  56. 56. @xebiconfr #xebiconfr Elastic Search Cluster Container 1 Container 2 Container 3 ECS Instance Container 4 Container 1 Container 2 Container 3 ECS Instance Container 4 Gelf Plugin Logstash Gestion des logs avec ELK 56
  57. 57. @xebiconfr #xebiconfr Container 1 Container 2 Container 3 ECS Instance Container 4 Container 1 Container 2 Container 3 ECS Instance Container 4 AWS Log Driver Gestion des logs CloudWatch Logs 57
  58. 58. @xebiconfr #xebiconfr Cloud Hybride 58
  59. 59. @xebiconfr #xebiconfr Direct Connect VPN Virtual Private Cloud Intégrer un DataCenter avec AWS 59
  60. 60. @xebiconfr #xebiconfr Conclusion 60
  61. 61. @xebiconfr #xebiconfr #ContainerdayFR EC2 Beanstalk ECS Une solution pour chaque besoin 61
  62. 62. @xebiconfr #xebiconfr Questions 62

×