Après avoir passé du temps sur Nuxeo Desktop Synchronization (Drive) et avant de passer au projet Cloud, j’ai eu l’occasion de travailler sur un autre projet qui les rassemble tous les deux : Nuxeo Edge Cache. Voyons en détail de quoi il s’agit.

Alors que Drive vous permet de synchroniser les documents d’un serveur Nuxeo vers votre ordinateur, Nuxeo Cloud vous permet de stocker vos documents dans le Cloud sans vous soucier du fonctionnement ou de l’ampleur de la solution.

Imaginez une situation dans laquelle vous utilisez ces deux solutions et des centaines d’utilisateurs téléchargent la dernière publicité publiée par votre équipe marketing. Votre connexion Internet risque d’être fortement ralentie et c’est forcément quelque chose que vous souhaitez éviter ! C’est à ce moment-là que Nuxeo Edge Cache s’avère utile. Il permet d’éviter de télécharger le même fichier de façon répétée lorsque plusieurs utilisateurs veulent y accéder.

Architecture

Nuxeo EdgeCache

Votre serveur Nuxeo principal est dans le Cloud et vous installez un serveur local pour mettre les fichiers binaires en cache. C’est assez semblable à une instance AWS CloudFront, sauf que celle-ci est exécutée directement sur votre réseau local pour ne plus utiliser de bande passante.

Lorsque vous liez un Edge Cache, vous définissez également un TTL. Donc si Edge Cache n’envoie aucun signe de vie au serveur Nuxeo dans cet intervalle, Edge Cache est considéré comme étant hors ligne.

Sécurité

Bien sûr, le but n’est pas que votre administrateur Nuxeo Edge Cache puisse accéder à tous les documents. Edge Cache télécharge et stocke donc les fichiers après leur chiffrement par le serveur. Il ne les déchiffre qu’avec un token transmis par l’utilisateur lors de l’accès à Edge Cache. Ce token est généré par le serveur Nuxeo et contient le secret pour déchiffrer le fichier.

Nous utilisons un chiffrement AES-256 avec une clé salée générée pour chaque fichier binaire du serveur Nuxeo, inconnue du serveur Edge Cache. Le token envoyé vers le serveur Edge Cache via une redirection HTTP est généré par le serveur Nuxeo et contient la clé de chiffrement cible des fichiers binaires. Le token est lui-même chiffré avec une clé salée commune partagée entre le serveur Nuxeo et le serveur Edge Cache.

Séquence de téléchargement

Nuxeo EdgeCache

Etapes :
1. L’utilisateur demande un fichier binaire au serveur Nuxeo.
2. Le serveur Nuxeo vérifie si un Edge Cache est enregistré sur cette IP.
3. Le serveur Nuxeo redirige l’Edge Cache enregistré sur cette IP.
4. Edge Cache reçoit la demande de direction avec le token.
5. Edge Cache extrait la clé de chiffrement à partir du token.
6. Si Edge Cache a stocké le fichier binaire et l’a déchiffré avec la clé, celui-ci est envoyé à l’utilisateur. Dans le cas contraire, Edge Cache télécharge le fichier binaire chiffré à partir du serveur Nuxeo et le stocke tout en le déchiffrant et en l’envoyant à l’utilisateur.

À quoi ça ressemble

Edge Cache reprend une grande partie de l’architecture de Nuxeo Drive et vous allez vite reconnaître les écrans HTML5/Webkit. Tout comme Nuxeo Drive, Nuxeo Edge Cache peut mettre plusieurs serveurs Nuxeo en cache.

Nuxeo EdgeCache Settings

Nuxeo EdgeCache Advanced Settings

Ce qui peut être configuré

IP publiques ou multiples IP : vous pouvez configurer une gamme d’IP ou une liste d’IP servies par Edge Cache. Le serveur Nuxeo utilisera la liste de ces gammes ou adresses pour les rediriger vers le serveur Edge Cache correspondant.

DNS ou IP Edge Cache : vous pouvez configurer l’URL de redirection pour une IP ou le DNS interne de votre serveur Edge Cache.

Taille maximum du cache : vous pouvez limiter la taille du cache qu’un serveur Edge Cache peut conserver.

TTL Edge Cache : vous pouvez définir le nombre de secondes nécessaires au passage hors ligne du serveur Edge Cache en l’absence de contact avec le serveur Nuxeo.

Et la suite ?

Nuxeo Edge Cache sera disponible d’ici la fin de l’année sur Mac, Windows et Linux. Une version Docker sera également publiée pour que vous puissiez le déployer sur différents types de hardware.