CloudAsDrive

CloudAsDrive est une application développée dans le but de simplifier l'utilisation des espaces de stockage en ligne de type Cloud, tels que Google Drive, Dropbox ou Hubic, en permettant d'accéder aux données de la même manière que si elles se trouvaient sur une clef USB.

Ce projet a été initié par 3 étudiants, Geoffrey Clauzier, Alexandre Rabérin et moi-même, et est réalisé en C++11.


Le projet en détails

Le principe de base de fonctionnement de CloudAsDrive s'oppose au classique système de synchronisation des données avec lequel une copie des données est conservée localement sur l'ordinateur. Ceci présente plusieurs avantages:
- la possibilité d'utiliser un cloud avec un espace de stockage important (plusieurs To), sans "consommer" le même espace de stockage sur le disque dur local de son ordinateur.
- de manière similaire, cela permet de s'affranchir de l'étape préliminaire de synchronisation qui peut être (très) longue. Par exemple, synchroniser 100Go avec la fibre à 100Mb/s (ce que tout le monde n'a pas) prend 2h15 en théorie (généralement plus long en pratique).
- suite au point précédent, il est possible de configurer et d'utiliser son/ses cloud(s) pour un usage ponctuel sur une machine très facilement et très rapidement.
- l'interface de configuration est simple et est unique pour tout les clouds supportés.
- l'application est multiplateforme (Linux, Mac OS X et Windows).

Le projet se compose de deux parties: une interface graphique réalisée avec Qt5, qui permet la configuration de l'application et des clouds; et une application en arrière-plan s'occupant de la partie fonctionnelle, c'est-à-dire faire en sorte que l'utilisateur puisse utiliser les fichiers de ces clouds en se basant sur les configurations faites depuis le GUI.
Cette seconde partie représente la plus grosse partie du projet. Elle gère notamment la communication avec les APIs des clouds (les APIs variant d'un cloud à l'autre), un système de cache visant à minimiser au maximum les temps d'attente pour l'utilisateur final, et la mise en place d'un système de fichiers pour intégrer entièrement le cloud au système. La mise place de ce système de fichiers, si elle reste simple sous Linux et Mac OS X grâce à FUSE, nécessite le développement complet d'un pilote sous Windows, ceci rendant le support de cet OS beaucoup plus complexe.

Pour mener à bien ce projet, nous avons mis en place un environnement de développement qui inclus des tests unitaires (réalisés à l'aide de Google Test), une intégration continue (avec Jenkins), ainsi que le classique et incontournable gestionnaire de versions (Git).


Intérêt du projet

Cloud As Drive est pour moi un projet très formateur. Il m'a permis de participer au développement d'un projet d'une taille importante (en Septembre 2015, le projet compte plus de 16000 lignes de code), de travailler en équipe sur le long cours et même de gérer une (petite) équipe.

Sur le plan technique, le projet a été pour moi la première mise en place et utilisation concrète d'une intégration continue et de tests unitaires.
J'ai eu à utiliser le multithreading, qui est un des points clefs pour garder de bonnes performances sur cette application; et j'ai aussi développé un pilote pour Windows dont la réalisation est très technique et nécessite une grande rigueur.