CloudAsDrive

Sommaire :

  1. Introduction
  2. Présentation Générale
  3. CloudAsDrive Daemon
  4. CloudAsDrive GUI
  5. Le projet en images
  6. Mes tâches dans le projet
  7. Intérêts et évolutions du projet

Introduction

Ce projet débuté en Novembre 2014, est encore en cours de développement. Initié par une équipe 3 personnes qui sont les suivantes : Clauzier Geoffrey, Guillaume Pascal et moi même. Il est réalisé en C++ (norme 2011). Nous utilisons aussi les bibliothèques FUSE et POCO. Les environnements de développement utilisés sont QtCreator et Visual Studio. De plus le projet possède un cmake multiplateforme et fait l’objet d’une intégration continue ainsi que de tests unitaires (via Google Test).

 

Pour structurer et faciliter notre travail au cours du projet, nous avons utilisé le gestionnaire de version Git, notre dépôt étant hébergé sur Bitbucket. Tout ceci permettant d’avoir un contrôle des sources, et une meilleure organisation pour le projet.

 

flèche haut

Présentation Générale

CloudAsDrive (CAD), est une application multi-plateforme permettant de faciliter l’utilisation des clouds pour les rendre aussi accessible qu’un périphérique USB. Elle permet donc d’intégrer votre espace de stockage distant tel que Google Drive ou HubiC à votre système de fichiers.

 

CAD s’oppose au traditionnel système de synchronisation (tel que l’application officielle de Dropbox par exemple), en effet il n’y a pas de doublons de données entre votre ordinateur et vos clouds.

CAD permet ainsi de s’affranchir de l’étape de synchronisation, qui cela dit peut s’avérer (très) longue. A titre d’exemple, lors de l’installation d’une application de synchronisation de données, un dossier est créé, toutes les données synchronisées sont alors téléchargées et sont alors présentes sur le disque. Pour un cloud contenant 100Go avec une connexion fibre à 100Mb/s (ce qui n’est pas le cas pour une grande majorité d’entre nous). Il faudrait alors approximativement 2h15 en théorie pour achever la synchronisation (cependant plus long en pratique).

 

On distingue donc plusieurs avantages a utiliser CAD :

  • Utilisation d’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.
  • Pas de synchronisation et donc possibilité d’un usage ponctuel sur une machine rapidement et facilement.
  • Application multi-plateforme (Linux, Mac OS X et Windows).
  • Interface de configuration des clouds simple et unifiée.

flèche haut

CloudAsDrive Daemon

Cette application est le centre du projet. Elle est exécutée en arrière plan. Elle se charge de la partie fonctionnelle, c’est à dire de la communication avec les APIs des clouds pour que l’utilisateur puisse interagir avec ses fichiers qui sont stockés sur ceux-ci.
Chaque cloud ayant sa propre API, cela explique pourquoi le support des clouds ne peut se faire que un à un.

 

Un des points fondamental de l’application est son système de cache. Son but est de minimiser le plus possible l’attente de l’utilisateur final quant à l’accès à ses fichiers. Celui-ci gère intelligemment le stockage pour réduire au maximum sa taille et s’adapte aux besoins de l’utilisateur.

 

CAD se charge aussi de mettre en place un système de fichiers correspondant au cloud pour que celui-ci soit directement intégré au système de l’utilisateur final. Pour cela, nous utilisons la bibliothèque FUSE qui permet de faire cela de manière relativement simple sur Linux et Mac OS X. En revanche le support de Windows est beaucoup plus complexe, en effet il requiert le développement complet d’un pilote.
flèche haut

CloudAsDrive GUI

Cette application est l’interface graphique que l’utilisateur utilise pour configurer ses clouds et interagir avec ceux-ci. Elle est réalisé à l’aide du framework Qt 5.

 

Cette interface est facile d’utilisation et unique, c’est à dire qu’elle sert à la configuration de tous les clouds quelque soit leur type (HubiC, Google Drive, etc..). En fonction du type elle s’adapte pour demander les informations nécessaires au bon fonctionnement du cloud en question.

Dans un second temps, elle se charge de la communication avec le daemon CAD, pour lui indiquer les changements effectués par l’utilisateur.
flèche haut

Le projet en images

Ci-dessous quelques screenshots de l’application CAD et CAD GUI en cours de fonctionnement :

CAD avant montage du cloud

Avant le montage d’un cloud

CAD après le montage du cloud

Après le montage d’un cloud

Aucun espace disque sur l’ordinateur n’est nécessaire.

 

CAD en cours de fonctionnement

CAD en cours de fonctionnement

Création d'un nouveau fichier depuis l'ordinateur

Création d’un nouveau fichier depuis l’ordinateur

Après la création du fichier

Après la création du fichier

flèche haut

Mes tâches dans le projet

Mon travail sur le projet s’est concentré sur les points suivants :

  • Travail sur le support du cloud HubiC.
  • Gestion de la parallélisation des tâches du système de fichiers pour que celui-ci reste performant et multi tâches.
  • Développement complet de l’application utilisateur CAD GUI.
  • Gestion complète des communications réseaux entre l’application utilisateur et le daemon CAD.

flèche haut

Intérêts et évolutions du projet

CloudAsDrive est pour moi un projet très important, car c’est le premier véritable projet d’envergure auquel je participe activement au développement. Le projet ne cesse d’évoluer en s’améliorant et comptait déjà plus de 16000 lignes de code en Septembre 2015. Il m’a permis d’aborder un domaine et des outils dont je n’avais pas encore connaissance. Et surtout de travailler en équipe sur le long terme.

 

Aujourd’hui CAD supporte complètement 2 clouds différents qui sont HubiC et Google Drive, toutefois au fur et à mesure du développement d’autre se verront ajouter à cette liste. Le prochain sera très certainement Dropbox.

 

Le logiciel est encore en cours de développement et d’autres fonctionnalités sont aussi en cours de discussion et validation.
flèche haut

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Le temps imparti est dépassé. Merci de recharger le CAPTCHA.

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>