IaaS collaboratif avec Docker

Encadrants : Pierre-Yves Gibello (Linagora), Vincent Zurczak (Linagora), Didier Donsez

Etudiants : RICM5

Docker est un logiciel libre qui automatise le déploiement d'applications Linux dans des conteneurs logiciels. Il offre une solution légère pour la virtualisation de machines d'exécution Linux, en comparaison des machines virtuelles systèmes comme Xen, VMVare, Hyper-V.

Le Big Data Analytics est un des principaux moteurs de la croissance des grandes sociétés informatiques. Les technologies Big Data comme Apache Hadoop, Apache Spark révolutionne la "Business Intelligence" en permettant de synthétiser en temps réel des énormes quantités d'information en utilisant des milliers de machines virtuelles Xen, VMVare, Hyper-V des providers Cloud comme AWS, Azure, Google, ...

L'objectif de ce projet est de permettre à un groupe d'utilisateurs (membres) de mettre en commun les machines de bureau et portables pour effectuer les calculs big data des quelques utilisateurs. Pour cela, la solution doit reposer sur Docker afin de virtualiser les machines des utilisateurs et contrôler l'usage des ressources de chaque machine.

Voici quelques scénarios auxquels il conviendra de réfléchir :

Chaque membre du IaaS accorde du temps de calcul à d'autres sur son matériel.


 * Chacun peut proposer de mettre sa machine à disposition.
 * La seule contrainte est d'avoir installé Docker sur sa machine.
 * Comment le faire concrètement ? Site / Annuaire...
 * Surcouche à Docker ?


 * Même si ma machine est utilisée par quelqu'un d'autre, je dois pouvoir l'éteindre, tant pis pour ceux qui s'en servent.
 * Quelle incidence si on considère une pile big data ?
 * Relance des jobs ? Adaptation des jobs ?
 * Algo BigData (map / reduce) adapté ? Attention au choix de la pile. Quelles sont celles qui sont scalables à chaud ?


 * Comment gérer la configuration réseau ?
 * J'ai un conteneur Docker sur une machine A, disons à Lyon. J'en ai un autre qui tourne sur une machine B, disons à Marseille. Comment garantir que les conteneurs peuvent communiquer entre eux si l'application distribuée le requiert ?
 * Si je n'ai pas besoin d'être expert pour partager ma machine, je ne devrais pas l'être pour configurer un fire-wall. Et en tant que possesseur de la machine, je ne veux pas ouvrir tous les ports de ma machine.


 * Un autre cas d'usage est celui de l'utilisation d'instances ponctuelle (Spot instances) qui peuvent à tout moment être récupérées par le fournisseur Cloud.


 * Pour vos tests, vous pourrez utiliser le benchmark MapReduce performance and dependability benchmarking suite

=Liens=
 * Using Docker with Roboconf
 * Amit Sangroya, Damian Serrano, Sara Bouchenak. Benchmarking Dependability of MapReduce Systems. In Proc. of the 31st IEEE Int. Symp. on Reliable Distributed Systems (SRDS). Oct 2012. (.pdf)
 * Optimal bidding in spot instance market (lien)