XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Alexis Kinsella, CTO de...

62
@xebiconfr #xebiconfr Choisissez votre style avec Docker & Amazon Web Services Alexis Kinsella / Gérôme Egron @xebiconfr

Transcript of XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Alexis Kinsella, CTO de...

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

@xebiconfr #xebiconfr

Choisissez votre style avec Docker & Amazon Web ServicesAlexis Kinsella / Gérôme Egron

@xebiconfr

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

@xebiconfr #xebiconfr

Usage du Cloud chez Xebia

2

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

@xebiconfr #xebiconfr

Usage de Docker

3

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

@xebiconfr #xebiconfr

Docker pour :

Le développement

L’usine logicielle

L’infrastructure

Quels usages ?

4

Page 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

@xebiconfr #xebiconfr

Docker pour le développeur

5

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

@xebiconfr #xebiconfr

POCer facilement

Éviter les installations manuelles et laborieuses

Clusteriser simplement

Utiliser plusieurs versions d’un outil

6

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

@xebiconfr #xebiconfr

Fournir des mocks de services développés par d’autres équipes

Mocks

7

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

@xebiconfr #xebiconfr

Docker pour l’usine logicielle

8

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

@xebiconfr #xebiconfr 9

Docker Docker-compose

Développeur

git push

ECR

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

@xebiconfr #xebiconfr

Docker pour l’infrastructure

10

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

@xebiconfr #xebiconfr

Le mode artisanal

11

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

@xebiconfr #xebiconfr

Gestion directe des instances

Responsabilités du provisioning & du monitoring

Instances EC2

12

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

@xebiconfr #xebiconfr

Utiliser l’AMI Amazon Linux officielle 2016.09

ou,

Installer manuellement Docker

2 Solutions

13

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

@xebiconfr #xebiconfr

Pet vs Cattle

14

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

@xebiconfr #xebiconfr

Le mode industriel

15

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

@xebiconfr #xebiconfr

Automatiser les déploiements

Uniformiser les déploiements

Optimiser l’usage des ressources

Pour répondre à des besoins modernes :

16

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

@xebiconfr #xebiconfr

Utiliser Dockeravec des

Orchestrateurs

Une solution ?

17

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

@xebiconfr #xebiconfr

1ère solution - Distributions spécialisées

18

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

@xebiconfr #xebiconfr

2ème solution - Les outils d’orchestration

Nomad KubernetesMesos / Marathon / ZooKeeper

19

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

@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

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

@xebiconfr #xebiconfr

Le setup de ces solutions est à votre charge !

Problème

21

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

@xebiconfr #xebiconfr

Elastic Beanstalk avec Docker

Elastic Container Service

4ème solution - Les services AWS

22

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

@xebiconfr #xebiconfr

Elastic Beanstalk

23

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

@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

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

@xebiconfr #xebiconfr

Mono application

25

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

@xebiconfr #xebiconfr

Mono & Multi container

2 Modes

26

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

@xebiconfr #xebiconfr

Plusieurs options de déploiement :

● Dockerfile ● Dockerrun.aws.json● Un Bundle de déploiement

Mono Container

27

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

@xebiconfr #xebiconfr

Authentification

Référence de l’image à déployer

Configuration complémentaire:

● Ports● Volumes● Logging

Dockerrun.aws.json

28

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

@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

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

@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

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

@xebiconfr #xebiconfr

app1.elasticbeanstalk.com:80

app2.elasticbeanstalk.com:80Instance 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

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

@xebiconfr #xebiconfr

Le format v2 supporte des instances multi-containers

Les images doivent être pré-construites

Dockerrun.aws.json v2

32

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

@xebiconfr #xebiconfr

AMI optimisée pour ECS

Agent ECS pré-installé

Multi Container

33

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

@xebiconfr #xebiconfr

Blue-Green Deployment

Multi Environment Management

Rolling Update

Easy Rollback

Pourquoi utiliser Elastic Beanstalk avec Docker ?

34

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

@xebiconfr #xebiconfr

Un mot sur CloudFormation

35

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

@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

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

@xebiconfr #xebiconfr

Elastic Container Service

37

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

@xebiconfr #xebiconfr

Gérer soi-même un cluster est une tâche complexe

38

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

@xebiconfr #xebiconfr

Load-Balancing

Auto-Scaling

CloudWatch

Elastic Container Registry

Cloud Formation ...

Intégration avec les services AWS

39

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

@xebiconfr #xebiconfr

Intégration End-to-End

Stockage sécurisé des images

Accès fiables aux images

Elastic Container Registry

40

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

@xebiconfr #xebiconfr

Régions AWS & Disponibilité d’ECS

41

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

@xebiconfr #xebiconfr

Clusters, Task Definitions, Services

Elastic Container Service

42

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

@xebiconfr #xebiconfr

Pas de Cluster / Orchestrateur à faire fonctionner

Contrôle & Monitoring via des API et la console

Scaling

Avantages

43

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

@xebiconfr #xebiconfr

C’est avant tout un pool de ressources

Clusters

44

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

@xebiconfr #xebiconfr

Unités de travail

Regroupent des containers liés

Tournent sur des instances

Tasks

45

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

@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

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

@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

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

@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

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

@xebiconfr #xebiconfr

TaskTask

TaskTask

TaskTask

TaskTask

Task

TaskTask

Task

Application router, e.g.

nginxRoute 53 private

zone, e.g. example.com

ECS Service

Internal ELB withCNAME, e.g.

api.example.com

Service Discovery avec Route53

49

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

@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

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

@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

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

@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

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

@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

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

@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éduit54

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

@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

TaskTask

Task

Route 53 record set

with weighted routing policy

Blue-Green Deployments

TaskTask

Task

55

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

@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

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

@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

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

@xebiconfr #xebiconfr

Cloud Hybride

58

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

@xebiconfr #xebiconfr

Direct Connect

VPN

Virtual Private Cloud

Intégrer un DataCenter avec AWS

59

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

@xebiconfr #xebiconfr

Conclusion

60

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

@xebiconfr #xebiconfr#ContainerdayFR

EC2

Beanstalk

ECS

Une solution pour chaque besoin

61

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

@xebiconfr #xebiconfr

Questions

62