@willylambert
Human Talks Angers - mars 2015
…
HTML / JS / JSON
C++
.html
.png
.js
.css
…
HTML / JS / JSON
C++
.html
.png
.js
.css
jasmine
selenium
Grunt
.min.js
.min.cssBower
gcc C++
Dev #1, #2
BOWER
GRUNT
JASMINE
SELENIUM
OutilsLibs Js & Css
Serveurs
C++ Gcc
CoinOR, jsonCpp, …
Dev #3 Dev #4
Test Prod
Dev #1, #2
BOWER
GRUNT
JASMINE
SELENIUM
OutilsLibs Js & Css
Serveurs
C++ Gcc
CoinOR, jsonCpp, …
Dev #3 Dev #4
Test Prod
Approche n°1
Reproduire localement
l’environnement de production
Approche n°2
Développer en « live » sur un
serveur de développement
One VM to rule them all
Approche n°3
D’une approche monolithique
Serveur Web
Serveur Base de Données
Compilateur
Générateur PDF
Gestionnaire de Librairies
Grunt
Tests unitaires
Tests d’intégration
OS Hôte
Machine Virtuelle
• Serveur Web
• Base de données
• Outil de génération PDF
• Compilateur
• Frameworks de tests unitaires
• Tests d’intégration
• Build
• Gestionnaire de librairies (Bower, NPM)
D’une approche monolithique
Serveur Web
Serveur Base de Données
Compilateur
Générateur PDF
Gestionnaire de Librairies
Grunt
Tests unitaires
Tests d’intégration
OS Hôte
Production Développement
...vers les micro-services
BOWER
GRUNT
JASMINE
SELENIUM
OutilsLibs Js & Css
Serveurs
C++ Gcc
CoinOR, jsonCpp, …
BOWER
GRUNT
JASMINE
SELENIUM
OutilsLibs Js & Css
Serveurs
C++ Gcc
CoinOR, jsonCpp, …
Apache + PHP
Postgres
Bower
Grunt
Jasmine (Karma)
Selenium (Protractor)
Gcc + lib c++
Hôte
Kernel
Fichiers
1 conteneur = Un fichier texte.
Une image de base
Des paquets logiciels
D’autres paquets
Modification de la configuration
1 conteneur = Un service.
Un environnement = X conteneurs
BOWER
GRUNT
JASMINE
SELENIUM
OutilsLibs Js & Css
Serveurs
C++ Gcc
CoinOR, jsonCpp, …
#$> git clone https://...
#$> docker-compose up
Bilan
• En production depuis 40 jours
• 1 à 2 releases par semaine
• Dev => Test => Prod
• Hébergement
• Open Source
+ -
• Développement sous Windows
• Manque de Bonnes Pratiques
Développeur
Sys Admin
@willylambert
Merci !

Docker.