BreizhCamp 2018 #breizhcamp
Scaling CodeLabs
avec Swarm et Compose
Chroniques de formation :
Damien Duportal - Training Engineer@CloudBees - Twitter : @DamienDuportal
On est là pour :
● Un retour d’expérience
● Boire du champagne
● Des CodeLabs
● VM / Containeurs
workloads
On n’est PAS là pour :
● Une guerre d’outils :
○ Kubernetes vs. Swarm
○ AWS vs. Azure
● Du code (15 min !)
○ Tout est ici (GitHub):
http://bit.ly/2yoYG0v
Au menu
“Boire son propre champagne”
Apprentissage par l’expérimentation :
➔ Les expériences de savant fou ne sont JAMAIS une perte de temps
➔ Anti-procrastination : fournir quelque chose qui fonctionne puis répéter en
améliorant
“CodeLab” ? Kezako ?
➔ Élément d’une formation (expérience utilisateur !)
➔ Exercice pratique
➔ Environment isolé et dédié par personne
➔ Synonyme de “Workshop” ou “Hands on Lab”
CodeLab == Production
Contraintes :
➔ Réseau
➔ Champs de possibles
➔ “Problem Exist Between Chair And Keyboard” (PEBKAC) : Courbe d’apprentissage
➔ Sessions à durée fixe
Contenu du CodeLab
Formation Jenkins :
➔ Dépôt Git (Gitea - Go)
➔ Jenkins Master + Build Agents (JVMs)
➔ Web Command Line (TTYDs - Python)
➔ WebIDE (Codiad - PHP)
➔ Stockage des Artefacts (Artifactory - JVM)
➔ Registre Docker (Go)
Challenges - v1
➔ Définition explicite de la pile de services du CodeLab :
◆ Docker-compose
◆ “Définition as code”
➔ Portabilité :
◆ Docker (“blueprint”)
➔ Unité de travail efficace :
◆ Machine Virtuelle
Solution - v1
Consul Servers
AWS EC2 VM
Host OS: Ubuntu
Docker & Compose
CodeLab Service Stack
Consul
AWS EC2 VM
Host OS: Ubuntu
Docker & Compose
CodeLab Service Stack
Consul
AWS EC2 VM
Host OS: Ubuntu
Docker & Compose
CodeLab Service Stack
Consul
AWS EC2 VM
Host OS: Ubuntu
Docker & Compose
CodeLab Service Stack
Consul
AWS EC2 VM
Host OS: Ubuntu
Docker & Compose
CodeLab Service Stack
Consul
AWS EC2 VM
Host OS: Ubuntu
Docker & Compose
CodeLab Service Stack
Consul
SSH Bastion
Reverse Proxies
Register into
Consul
End User
Trainer
Deploys with
Terraform
Load-Balancer
Reconfigure with
Consul-Template
Rétrospective - v1
➔ Ça fonctionne !
➔ Facile pour démarrer
➔ Coût d’infrastructure (1 personne par VM)
➔ TTP (Time To Play)
◆ “Packer build “ vs. “Docker run”
➔ Un formateur ne devait pas avoir besoin d’un compte Amazon
◆ Couplage fort Infrastructure / Services
Vers l’orchestration native de containeurs
Solution - v2.1 : Infrastructure
SSH Bastion“Infra
Admin”
Deploys with
Terraform
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Manager (EC2 VM)
Swarm Manager (EC2 VM)
Swarm Manager (EC2 VM)
Solution - v2.1 : Services
SSH Bastion“Infra
Admin”
Deploys with
Docker
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Manager (EC2 VM)
Swarm Manager (EC2 VM)
Swarm Manager (EC2 VM)
Deploys with
Docker
Trainer
CodeLab Service Stack
Support Services
Support Services
Solution - v2.3 : Utilisateur
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Worker (EC2 VM)
Swarm Manager (EC2 VM)
Swarm Manager (EC2 VM)
Swarm Manager (EC2 VM)
CodeLab Service Stack
Support Services
Support Services
End User
Rétrospective - v1
➔ Ça fonctionne toujours !
➔ Déploiement facilité pour les formateurs
➔ Coût : divisé par 4
◆ 4 personnes par VM
➔ “TTP” : ~10 s au lieu of ~10 min
➔ Fardeau de maintenance : 5 outils au lieu de 8
Rétrospective - v1
➔ Écosystème des Conteneurs :
◆ Moins de code et d’outils à maintenir
➔ Motif de déploiement :
◆ Déployer N fois, PAS “scaler” horizontalement
➔ Monitoring / Métriques (Observabilité)
◆ Faux problème
➔ Gestion des ressources (Actionnabilité)
◆ De : 1 stack pour 1 VM
◆ Vers : N stacks pour N VMs
MERCI !

Chroniques de formation : Scaling Code Labs avec Swarm et Compose

  • 1.
    BreizhCamp 2018 #breizhcamp ScalingCodeLabs avec Swarm et Compose Chroniques de formation : Damien Duportal - Training Engineer@CloudBees - Twitter : @DamienDuportal
  • 2.
    On est làpour : ● Un retour d’expérience ● Boire du champagne ● Des CodeLabs ● VM / Containeurs workloads On n’est PAS là pour : ● Une guerre d’outils : ○ Kubernetes vs. Swarm ○ AWS vs. Azure ● Du code (15 min !) ○ Tout est ici (GitHub): http://bit.ly/2yoYG0v Au menu
  • 3.
    “Boire son proprechampagne” Apprentissage par l’expérimentation : ➔ Les expériences de savant fou ne sont JAMAIS une perte de temps ➔ Anti-procrastination : fournir quelque chose qui fonctionne puis répéter en améliorant
  • 4.
    “CodeLab” ? Kezako? ➔ Élément d’une formation (expérience utilisateur !) ➔ Exercice pratique ➔ Environment isolé et dédié par personne ➔ Synonyme de “Workshop” ou “Hands on Lab”
  • 5.
    CodeLab == Production Contraintes: ➔ Réseau ➔ Champs de possibles ➔ “Problem Exist Between Chair And Keyboard” (PEBKAC) : Courbe d’apprentissage ➔ Sessions à durée fixe
  • 6.
    Contenu du CodeLab FormationJenkins : ➔ Dépôt Git (Gitea - Go) ➔ Jenkins Master + Build Agents (JVMs) ➔ Web Command Line (TTYDs - Python) ➔ WebIDE (Codiad - PHP) ➔ Stockage des Artefacts (Artifactory - JVM) ➔ Registre Docker (Go)
  • 7.
    Challenges - v1 ➔Définition explicite de la pile de services du CodeLab : ◆ Docker-compose ◆ “Définition as code” ➔ Portabilité : ◆ Docker (“blueprint”) ➔ Unité de travail efficace : ◆ Machine Virtuelle
  • 8.
    Solution - v1 ConsulServers AWS EC2 VM Host OS: Ubuntu Docker & Compose CodeLab Service Stack Consul AWS EC2 VM Host OS: Ubuntu Docker & Compose CodeLab Service Stack Consul AWS EC2 VM Host OS: Ubuntu Docker & Compose CodeLab Service Stack Consul AWS EC2 VM Host OS: Ubuntu Docker & Compose CodeLab Service Stack Consul AWS EC2 VM Host OS: Ubuntu Docker & Compose CodeLab Service Stack Consul AWS EC2 VM Host OS: Ubuntu Docker & Compose CodeLab Service Stack Consul SSH Bastion Reverse Proxies Register into Consul End User Trainer Deploys with Terraform Load-Balancer Reconfigure with Consul-Template
  • 9.
    Rétrospective - v1 ➔Ça fonctionne ! ➔ Facile pour démarrer ➔ Coût d’infrastructure (1 personne par VM) ➔ TTP (Time To Play) ◆ “Packer build “ vs. “Docker run” ➔ Un formateur ne devait pas avoir besoin d’un compte Amazon ◆ Couplage fort Infrastructure / Services
  • 10.
  • 11.
    Solution - v2.1: Infrastructure SSH Bastion“Infra Admin” Deploys with Terraform Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Manager (EC2 VM) Swarm Manager (EC2 VM) Swarm Manager (EC2 VM)
  • 12.
    Solution - v2.1: Services SSH Bastion“Infra Admin” Deploys with Docker Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Manager (EC2 VM) Swarm Manager (EC2 VM) Swarm Manager (EC2 VM) Deploys with Docker Trainer CodeLab Service Stack Support Services Support Services
  • 13.
    Solution - v2.3: Utilisateur Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Worker (EC2 VM) Swarm Manager (EC2 VM) Swarm Manager (EC2 VM) Swarm Manager (EC2 VM) CodeLab Service Stack Support Services Support Services End User
  • 14.
    Rétrospective - v1 ➔Ça fonctionne toujours ! ➔ Déploiement facilité pour les formateurs ➔ Coût : divisé par 4 ◆ 4 personnes par VM ➔ “TTP” : ~10 s au lieu of ~10 min ➔ Fardeau de maintenance : 5 outils au lieu de 8
  • 15.
    Rétrospective - v1 ➔Écosystème des Conteneurs : ◆ Moins de code et d’outils à maintenir ➔ Motif de déploiement : ◆ Déployer N fois, PAS “scaler” horizontalement ➔ Monitoring / Métriques (Observabilité) ◆ Faux problème ➔ Gestion des ressources (Actionnabilité) ◆ De : 1 stack pour 1 VM ◆ Vers : N stacks pour N VMs
  • 16.