microservices based application development with docker (french)

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

Upload: cedric-villa

Post on 13-Apr-2017

49 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Microservices based application development with Docker (French)

DÉVELOPPER AVEC DOCKER

Applications basées surarchitecture en micro-services

Cédric Villa - Twitter : @zestprod DevelopR6 - 2 Juin 2016

Page 2: Microservices based application development with Docker (French)

PRÉSENTATION

Page 3: Microservices based application development with Docker (French)

APPLICATION WEB

Page 4: Microservices based application development with Docker (French)

APPLICATION WEB

• Fonctionne partout (navigateur)

• Multi-support (bureau, mobile, tablette)

• Mature

Page 5: Microservices based application development with Docker (French)

DEVOPS

• Développement

• Exploitation

Page 6: Microservices based application development with Docker (French)

DEVOPS

Page 7: Microservices based application development with Docker (French)

DOCKER :PREMIERE IMPRESSION

“Bof”

Page 8: Microservices based application development with Docker (French)

DOCKER :PREMIERE IMPRESSION

• Encore un produit “révolutionnaire”

• Sur papier : ne remplace pas les technologies existantes(LXC, OpenVZ, Puppet, etc.)

Page 9: Microservices based application development with Docker (French)

DOCKER :SECONDE IMPRESSION

“Wow !”

Page 10: Microservices based application development with Docker (French)

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: Microservices based application development with Docker (French)

APPLICATION MONOLITIQUE

VSARCHITECTURE EN

MICRO-SERVICES

Page 12: Microservices based application development with Docker (French)

CHOIX D’UN LANGAGE

APPLICATION MONOLITIQUE

VSARCHITECTURE EN

MICRO-SERVICES

Page 13: Microservices based application development with Docker (French)

APPLICATION MONOLITHIQUE

• Choix d’un langage en commun

• “Polarise” l’équipe

• Investissement lourd

• Difficulté de “recruter”

• Limite les choix de bibliothèques

Page 14: Microservices based application development with Docker (French)

• 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: Microservices based application development with Docker (French)

MAINTENANCE

APPLICATION MONOLITIQUE

VSARCHITECTURE EN

MICRO-SERVICES

Page 16: Microservices based application development with Docker (French)

APPLICATION MONOLITHIQUE

• Pour un nouveau développeur

• Découragé par énorme historique

Page 17: Microservices based application development with Docker (French)

• 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: Microservices based application development with Docker (French)

COMMUNICATION

APPLICATION MONOLITIQUE

VSARCHITECTURE EN

MICRO-SERVICES

Page 19: Microservices based application development with Docker (French)

APPLICATION MONOLITHIQUE

• Beaucoup de travail pour coordonner tout le monde

• Plus le projet grossit, plus c’est difficile

Page 20: Microservices based application development with Docker (French)

• 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: Microservices based application development with Docker (French)

MISE À L’ÉCHELLE

APPLICATION MONOLITIQUE

VSARCHITECTURE EN

MICRO-SERVICES

Page 22: Microservices based application development with Docker (French)

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: Microservices based application development with Docker (French)

• Mise à l’échelle indépendante surchaque module

• Possibilité de renforcer uniquement les maillons faibles (bottlenecks)

• Processus simplifié et économique

ARCHITECTURE EN MICROSERVICES

Page 24: Microservices based application development with Docker (French)

OUTILS DOCKER

Page 25: Microservices based application development with Docker (French)

OUTILS DOCKER

• docker

• docker-compose

• docker-machine

• docker-swarm

Page 26: Microservices based application development with Docker (French)

ORCHESTRATION

Page 27: Microservices based application development with Docker (French)

• Processus indépendant

• Communication entre les modules

• Optimisation des performances

• Gestion des ressources

ORCHESTRATION

Page 28: Microservices based application development with Docker (French)

• Outils

• Docker-compose

• IDE multi-projets

ORCHESTRATION

Page 29: Microservices based application development with Docker (French)

• Compatible AGILE

ORCHESTRATION

Page 30: Microservices based application development with Docker (French)

TEST EN BOITE NOIR

• Test global• Simuler interactions

utilisateurs (scénarios)

Page 31: Microservices based application development with Docker (French)

MODULARITÉ

Page 32: Microservices based application development with Docker (French)

JEU D’ASSEMBLAGE

Page 33: Microservices based application development with Docker (French)

CARACTÉRISTIQUES D’UN CONTAINER

• Equivalent à une machine virtuelle

• Communique avec d’autre conteneurs

Page 34: Microservices based application development with Docker (French)

RECHERCHE DE COMPOSANTS EXISTANTS

Page 35: Microservices based application development with Docker (French)

RECHERCHE DE COMPOSANTS EXISTANTS

• Ne pas réinventer la roue

• Améliorer plutôt que dupliquer

Page 36: Microservices based application development with Docker (French)

DISTRIBUTION• Container autonome

• Environnement (OS, bibliothèques)

• Simplicité d’utilisation

• Un fichier de configuration

• Une interface pour les I/O

Page 37: Microservices based application development with Docker (French)

AVANTAGES

• Capitaliser sur développements

• Service à la communauté

• (et participation)

Page 38: Microservices based application development with Docker (French)

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: Microservices based application development with Docker (French)

CONSEILS

• KISS (keep it simple stupid)

• Convention over configuration

• Configuration peut-être une barrière

• Apporter de la valeur (simplicité, efficacité)

Page 40: Microservices based application development with Docker (French)

MISE EN PRODUCTION

Page 41: Microservices based application development with Docker (French)

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: Microservices based application development with Docker (French)

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: Microservices based application development with Docker (French)

PRINCIPES DE SÉCURITÉ

• Disponibilité

• Intégrité

• Confidentialité

Page 44: Microservices based application development with Docker (French)

PRINCIPES DE SÉCURITÉ

• Cacher les containers (firewall)

• N’autoriser que les communications nécessaires

• Frontend

• Communications privées entres containeurs

Page 45: Microservices based application development with Docker (French)

PRINCIPES DE SÉCURITÉ

• Garantir la disponibilité

• Surveillance

• Mécanisme d’auto-redémarrage

• restart: always dans docker-compose

Page 46: Microservices based application development with Docker (French)

MERCI !(QUESTION ?)