DÉVELOPPER AVEC DOCKER -...

46
DÉVELOPPER AVEC DOCKER Applications basées sur architecture en micro-services Cédric Villa DevelopR6 - 2 Juin 2016

Transcript of DÉVELOPPER AVEC DOCKER -...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• 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

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

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

• 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

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

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

• 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

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

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

• 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

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

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

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

• 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

• 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

• 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MERCI !(QUESTION ?)