dÉvelopper avec docker -...
TRANSCRIPT
![Page 1: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/1.jpg)
DÉVELOPPER AVEC DOCKER
Applications basées surarchitecture en micro-services
Cédric Villa DevelopR6 - 2 Juin 2016
![Page 2: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/2.jpg)
PRÉSENTATION
![Page 3: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/3.jpg)
APPLICATION WEB
![Page 4: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/4.jpg)
APPLICATION WEB
• Fonctionne partout (navigateur)
• Multi-support (bureau, mobile, tablette)
• Mature
![Page 5: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/5.jpg)
DEVOPS
• Développement
• Exploitation
![Page 6: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/6.jpg)
DEVOPS
![Page 7: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/7.jpg)
DOCKER :PREMIERE IMPRESSION
“Bof”
![Page 8: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/8.jpg)
DOCKER :PREMIERE IMPRESSION
• Encore un produit “révolutionnaire”
• Sur papier : ne remplace pas les technologies existantes(LXC, OpenVZ, Puppet, etc.)
![Page 9: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/9.jpg)
DOCKER :SECONDE IMPRESSION
“Wow !”
![Page 10: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/10.jpg)
DOCKER :SECONDE IMPRESSION
• Extrêmement simpleà utiliser
• Technologie plus poussée que celles testées(copy-on-write)
• Communauté / abondance de modules utilisables “clés en main”
![Page 11: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/11.jpg)
APPLICATION MONOLITIQUE
VSARCHITECTURE EN MICRO-SERVICES
![Page 12: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/12.jpg)
CHOIX D’UN LANGAGE
APPLICATION MONOLITIQUE
VSARCHITECTURE EN MICRO-SERVICES
![Page 13: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/13.jpg)
APPLICATION MONOLITHIQUE
• Choix d’un langage en commun
• “Polarise” l’équipe
• Investissement lourd
• Difficulté de “recruter”
• Limite les choix de bibliothèques
![Page 14: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/14.jpg)
• Chaque module peut avoir son langage
• Le meilleur langage de programmation ?Celui que vous connaissez le mieux.
• Bénéficier de l’experience detous les membres du projet.
• Disposer de toutes les bibliothèques
ARCHITECTURE EN MICROSERVICES
![Page 15: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/15.jpg)
MAINTENANCE
APPLICATION MONOLITIQUE
VSARCHITECTURE EN MICRO-SERVICES
![Page 16: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/16.jpg)
APPLICATION MONOLITHIQUE
• Pour un nouveau développeur
• Découragé par énorme historique
![Page 17: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/17.jpg)
• Le nouveau développeur
• Ne connait l’historique détaillé que de sa partie
• Peut connaitre l’environnement global dans les grandes lignes
ARCHITECTURE EN MICROSERVICES
![Page 18: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/18.jpg)
COMMUNICATION
APPLICATION MONOLITIQUE
VSARCHITECTURE EN MICRO-SERVICES
![Page 19: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/19.jpg)
APPLICATION MONOLITHIQUE
• Beaucoup de travail pour coordonner tout le monde
• Plus le projet grossit, plus c’est difficile
![Page 20: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/20.jpg)
• Chaque module peut être développé indépendamment par une petite équipe (limiter les canaux de communications)
• Responsabilité sur le bon fonctionnement du module
ARCHITECTURE EN MICROSERVICES
![Page 21: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/21.jpg)
MISE À L’ÉCHELLE
APPLICATION MONOLITIQUE
VSARCHITECTURE EN MICRO-SERVICES
![Page 22: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/22.jpg)
APPLICATION MONOLITHIQUE
• Mise à l’échelle sur une seule dimension
• Soit un plus gros serveur
• Soit plusieurs applications derrière un load balancer
• La performance de l’application est une chaine composés de maillons
• Il est plus difficile de renforcer les maillons faibles dans une application monolithique
![Page 23: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/23.jpg)
• Mise à l’échelle indépendante surchaque module
• Possibilité de renforcer uniquement les maillons faibles (bottlenecks)
• Processus simplifié et économique
ARCHITECTURE EN MICROSERVICES
![Page 24: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/24.jpg)
OUTILS DOCKER
![Page 25: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/25.jpg)
OUTILS DOCKER
• docker
• docker-compose
• docker-machine
• docker-swarm
![Page 26: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/26.jpg)
ORCHESTRATION
![Page 27: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/27.jpg)
• Processus indépendant
• Communication entre les modules
• Optimisation des performances
• Gestion des ressources
ORCHESTRATION
![Page 28: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/28.jpg)
• Outils
• Docker-compose
• IDE multi-projets
ORCHESTRATION
![Page 29: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/29.jpg)
• Compatible AGILE
ORCHESTRATION
![Page 30: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/30.jpg)
TEST EN BOITE NOIR
• Test global• Simuler interactions
utilisateurs (scénarios)
![Page 31: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/31.jpg)
MODULARITÉ
![Page 32: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/32.jpg)
JEU D’ASSEMBLAGE
![Page 33: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/33.jpg)
CARACTÉRISTIQUES D’UN CONTAINER
• Equivalent à une machine virtuelle
• Communique avec d’autre conteneurs
![Page 34: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/34.jpg)
RECHERCHE DE COMPOSANTS EXISTANTS
![Page 35: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/35.jpg)
RECHERCHE DE COMPOSANTS EXISTANTS
• Ne pas réinventer la roue
• Améliorer plutôt que dupliquer
![Page 36: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/36.jpg)
DISTRIBUTION• Container autonome
• Environnement (OS, bibliothèques)
• Simplicité d’utilisation
• Un fichier de configuration
• Une interface pour les I/O
![Page 37: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/37.jpg)
AVANTAGES
• Capitaliser sur développements
• Service à la communauté
• (et participation)
![Page 38: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/38.jpg)
DIFFICULTÉ
• Difficile à faire la promotion d’un module
• Doit vraiment apporter une grande valeur
• On part de “0” (sauf si on adapte un produit populaire)
![Page 39: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/39.jpg)
CONSEILS
• KISS (keep it simple stupid)
• Convention over configuration
• Configuration peut-être une barrière
• Apporter de la valeur (simplicité, efficacité)
![Page 40: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/40.jpg)
MISE EN PRODUCTION
![Page 41: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/41.jpg)
INTERFACE AVEC MACHINE DE PRODUCTION
• docker-machine
$ docker-machine ls NAME ACTIVE DRIVER STATE URL app-qualif generic Running tcp://XXX.XXX.XXX.XXX:2376 app-prod generic Running tcp://XXX.XXX.XXX.XXX:2376 default virtualbox Saved dev virtualbox Stopped
$ docker-machine create \ --driver generic \ --generic-ip-address=203.0.113.81 \ --generic-ssh-key ~/.ssh/id_rsa \ vm
![Page 42: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/42.jpg)
DÉPLOIEMENT EN PRODUCTION
• Environnement de production
• Fichier docker-compose.prod.yml
• Fichiers d’environnement (attention, contient des mots de passes et données sensible, ne pas versionner)
![Page 43: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/43.jpg)
PRINCIPES DE SÉCURITÉ
• Disponibilité
• Intégrité
• Confidentialité
![Page 44: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/44.jpg)
PRINCIPES DE SÉCURITÉ
• Cacher les containers (firewall)
• N’autoriser que les communications nécessaires
• Frontend
• Communications privées entres containeurs
![Page 45: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/45.jpg)
PRINCIPES DE SÉCURITÉ
• Garantir la disponibilité
• Surveillance
• Mécanisme d’auto-redémarrage
• restart: always dans docker-compose
![Page 46: DÉVELOPPER AVEC DOCKER - developr6.dr6.cnrs.frdevelopr6.dr6.cnrs.fr/_media/manifestations/009-docker/developr6... · DÉVELOPPER AVEC DOCKER Applications basées sur architecture](https://reader030.vdocuments.mx/reader030/viewer/2022021809/5c09b12109d3f29a3a8baed0/html5/thumbnails/46.jpg)
MERCI !(QUESTION ?)