vendredi 16 octobre 2015

DOCKER et sa provenance


Docker en quelques mots

Docker est l’idée qui va définitivement changer la façon de développer et de livrer vos applications. En quelques mots, Docker est une solution qui permet de standardiser la façon dont une application est packagée, puis s’exécute, dans n’importe quel environnement.
De même que les conteneurs de bateaux font tous la même taille, ce qui permet de les empiler et de les déplacer quelque soit leur contenu, Docker propose un système simple de conteneur. Un conteneur, c’est donc une boîte dans laquelle vous allez exécuter de façon isolée, vos applications. Ces boîtes peuvent ensuite être exécutées sur une machine virtuelle, sur un serveur ou dans un environnement de production. L’intérêt de Docker est de standardiser l’enveloppe. Et le génie, c’est que les ressources sont isolées ET partagées. Un même serveur ou une même VM peut donc exécuter plusieurs conteneurs Docker, comme autant de serveurs isolés les uns des autres. Par rapport à de la virtualisation, il n’y a donc pas de coûts supplémentaires de ressources. Docker se place au dessus des VMs, et permet d’exécuter de façon isolée et standard vos applications.

Qui est derrière Docker

Cocorico, le projet est d’origine française. Solomon Hykes est passé par l’Epitech en 2006, et a créé dotCloud, un PaaS en 2010, avec d’autres anciens d’Epitech. Docker est un projet open-source, initialement développé pour dotCloud. Cependant en un an, le projet a connu un tel succès, que la société dotCloud s’est renommée Docker. Plus de 400 000 téléchargements, le projet a plus de 11 000 stars sur Github et c’est l’un des projets open-source dont on parle le plus en ce moment. La société a levé au total 26 millions de dollar. Basée maintenant à San Francisco, elle compte 4-5 personnes de l’Epitech, mentorées par des personnes de la Valley, comme Ben Golub, l’actuel CEO. Voir l’article de Marion Moreau sur Frenchweb.

Pourquoi faut-il s’y intéresser ?

Prenons un exemple concret. Aujourd’hui je travaille pour 2 clients. Pour le premier, je développe avec une base MySQL, du Java et un blog WordPress en PHP. Pour le deuxième, je fais du Scala avec Play2, une base Redis et une autre base MySQL. Lorsque je travaille sur ma machine de développeur, il faut donc que j’ai l’ensemble de ces environnements correctement installés. En plus, lorsque je ferai ma mise en production, il faut que ma cible de déploiement soit identique et à jour. Même version de MySQL et de PHP pour WordPress. Version 7 de Java pour le premier, et une autre version pour le deuxième…
Le souci ici c’est que la cohabitation de ces environnement est un problème sur ma machine de développement, qui ne doit pas impacter ma production. De plus, lorsque je livrerai, il faudrait que je package aussi et prépare l’installation de mes dépendances, avant même de livrer mon code. Et j’ai un scoop pour vous : la prod n’a plus à décider de votre environnement et des versions des logiciels utilisés. Vous allez voir qu’avec Docker, vous allez faire fermer le clapet du grand chef de la prod, qui par un beau matin pensait pouvoir décider de votre architecture, de vos logiciels et des applications à installer.