class: center, middle # Docker, AWS et Microservices  --- # Agenda 1. Introduction 2. Speakers 3. Docker 4. Microservices 5. AWS - EC2 Container Service 6. Conclusions --- class: center, middle # 1. Introduction --- # 2. Speakers ## Souhail Hanfi - AWS Expert - Software and System Architect - [@venomax666](https://twitter.com/venomax666) ## Yann Coleu - DevOps Expert - Golang and Docker  - [@YannColeu](https://twitter.com/YannColeu) --- class: center, middle # 3. Docker --- # 3. Docker ## C'est quoi un conteneur? - Un processus système, un simple fork - Confiné grâce au noyau - Un conteneur peut avoir accès à: - Un système de fichier - Réseau - CPU - Mémoire - Ca ressemble à une VM, ça à l'odeur d'une VM... Ce n'est **PAS** une VM ! --- # 3. Docker ## Différence conteneur vs VM  --- # 3. Docker ## Concepts de confinement et sécurité Dans le noyau Linux, il y a quelques concepts de confinement: - Les **namespaces** donnent **accès** aux ressources - Les **CGroups restreignent** la consommation de ces dernières - SELinux et AppArmor définissent une politique de sécurité d'accès des processus - [Bane](https://github.com/jfrazelle/bane) - Seccomp limite les appels noyaux --- # 3. Docker ## Systèmes de fichier - Un conteneur vient avec son filesystem (Image) - Système de fichiers en oignons (AUFS, BTRFS, [OverlayFS](https://docs.docker.com/engine/userguide/storagedriver/overlayfs-driver/))  --- # 3. Docker ## Docker engine, docker clients - Le Docker engine est un démon qui gère les conteneurs locaux et l'enviromment d'exécution - Controlé uniquement via une API REST - Les clients peuvent donc prendre plusieurs formes: - CLI - UI - WebUI - Orchestrateur de cluster Docker (Swarm, Kubernetes, AWS ECS) --- # 3. Docker ## Avantages Tous ces concepts autour de Docker apportent des avantages certains: - Processus donc "boot instantané" - OnionFS donc Gain de place + boot instantané pour les nouveaux conteneurs - Plate-forme centralisée de partage d'images Docker: [Hub](https://hub.docker.com/) - Services déjà packagés (Mongo, Redis, Apache, Owncloud) - Sécurité possible (mais pas par défaut) - Gestion du réseau automatique ## Dev  Ops --- # 3. Docker ## Ecosystème officiel - Compose ```yaml web: build: . ports: - "5000:5000" links: - redis redis: image: redis ``` --- # 3. Docker ## Ecosystème officiel - Docker-machine ```bash $ docker-machine create --driver amazonec2 \ --amazonec2-access-key AKI******* \ --amazonec2-secret-key 8T93C********* \ --amazonec2-vpc-id vpc-****** aws01 ``` --- # 3. Docker ## Ecosystème officiel - Swarm ```bash $ docker run swarm create fe0cc96a72cf04dba8c1c4aa79536ec3 $ docker-machine create \ -d virtualbox \ --swarm \ --swarm-master \ --swarm-discovery token://fe0cc96a72cf04dba8c1c4aa79536ec3 \ swarm-master $ eval $(docker-machine env --swarm swarm-master) $ docker ps ``` --- class: center, middle # 4. Microservices --- # 4. Microservices ## Définition - Chaque composant est un service - Un service est la représentation au sens métier - Gestion des données décentralisée --- # 4. Microservices ## Avantages - Plusieurs petites équipes (two pizzas rule) - Responsabilisation des équipes - Gouvernance décentralisée - Code plus facile à maintenir - Mise à jour facilitée, plus fréquente - Scalibilité plus précise - Chaque service à sa stack technique propre --- # 4. Microservices ## Inconvénients - "Casser" l'application en services n'est pas simple - La sécurité doit être globale - Latences réseau --- # 4. Microservices ## Technologies - Service discovery (consul, etcd) - LoadBalancing (haproxy, fabio) - Containers (docker) - Orchestrator (ECS, Kubernetes, Swarm) --- # 4. Microservices ## Nouvelle vision de l'infrastructure ####1653 Go de RAM, 416 CPU  --- class: center, middle # 5. AWS - EC2 Container Service ## Demo --- class: center, middle # 6. Conclusions --- class: center, middle # Licence  Neoxia, 2015