Application web distribuée

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut,

Est ce qu'il y en a qui ont de l'expérience avec des technologies de p2p dans le navigateur ? Il y a des librairies comme https://webtorrent.io/ et http://pixelscommander.github.io/Viral.JS qui permettent de distribuer en pair à pair du contenu ou le code source de l'application.

Cas d'usage : je trouve l'idée très intéressante pour créer une application communautaire et décharger/réduire volontairement tout le travail d'adminsys et coûts de serveurs sur l'ensemble de la communauté, pour peu que les utilisateurs soient sensibilisés à ces problématique (ils sauront qu'ils doivent faire tourner l'application en arrière plan pour contribuer). Par exemple un site/réseau social de partage de photographies en bonne qualité. Quels seraient les risques et les problèmes d'un tel système selon vous ?

  1. Il faut imaginer que l'on a pas le contrôle sur les données (donc les codes sources) échangées entre pairs, cela peut amener plusieurs problèmes, mais aussi re réfléchir à la conception même de l'application. Par exemple on peut se dire qu'il faut une forme de certification du code source, donc une "source officielle" garantie par le serveur, les gens peuvent après choisir de ne pas utiliser le code source officiel. Puis au final on peut se dire que les codes sources ne sont que des données et que les clients exécutent le code qu'ils veulent.. Ce qui ne résout pas les problèmes de sécurité évidemment.
  2. Ensuite vient la question de savoir si on peut stocker des données privées entre les pairs ainsi que chaque pair (puisqu'il fait tourner le code qu'il a envie) peut choisir les contenus qu'il va stocker et transmettre aux autres pairs (l'ensemble des données peut peser trop lourd pour un seul pair), ainsi il peut notamment refuser de stocker & transmettre des informations chiffrées / qu'il n'arrive pas à lire / qui ne l'intéresse pas. Comment s'identifier et s'authentifier sur un tel réseau ?
  3. Autre question, comment identifier une donnée que l'on souhaite acquérir ? Un truc comme les liens magnet des torrents ?
  4. Après il y a des question techniques secondaires comme : créer des sessions, ne pas surcharger les utilisateurs mobile qui payent la bande passante, le fait qu'on ne peut pas stocker beaucoup si c'est lancé dans un navigateur (utiliser le localStorage ?), le fait que l'on peut créer une application desktop avec des outils comme Electron et donc disposer de plus de fonctionnalités et gestion des fichiers etc…

On peut aussi faire un compromis entre le fonctionnement classique serveur-client et le nouveau fonctionnement en p2p : par exemple c'est le serveur central qui distribue le code source, stocke les informations privées et authentifie les utilisateurs, et tout le reste est distribué parmi les clients (surtout les gros fichiers, les photographies haute résolution pour reprendre l'exemple plus haut).

Est ce que vous voyez d'autres problèmes, est ce que vous penser que ce genre de technologies a des cas d'usages concrets ?

Merci d'avance :) .

+2 -0
Staff

Quels seraient les risques et les problèmes d'un tel système selon vous ?

Ils sont connus et bien documentés.

  1. Il faut imaginer que l'on a pas le contrôle sur les données (donc les codes sources) échangées entre pairs, cela peut amener plusieurs problèmes, mais aussi re réfléchir à la conception même de l'application. Par exemple on peut se dire qu'il faut une forme de certification du code source, donc une "source officielle" garantie par le serveur, les gens peuvent après choisir de ne pas utiliser le code source officiel. Puis au final on peut se dire que les codes sources ne sont que des données et que les clients exécutent le code qu'ils veulent.. Ce qui ne résout pas les problèmes de sécurité évidemment.

L'idée d'un truc garanti par le serveur contrevient à l'idée de p2p.

  1. Ensuite vient la question de savoir si on peut stocker des données privées entre les pairs ainsi que chaque pair (puisqu'il fait tourner le code qu'il a envie) peut choisir les contenus qu'il va stocker et transmettre aux autres pairs (l'ensemble des données peut peser trop lourd pour un seul pair), ainsi il peut notamment refuser de stocker & transmettre des informations chiffrées / qu'il n'arrive pas à lire / qui ne l'intéresse pas. Comment s'identifier et s'authentifier sur un tel réseau ?

Là aussi, l'identification et l'authentification n'est pas un énorme problème.

  1. Autre question, comment identifier une donnée que l'on souhaite acquérir ? Un truc comme les liens magnet des torrents ?

Généralement par le biais d'un hash qui identifie uniquement un contenu ou les métadonnées d'un contenu (par exemple les hash des chunks de contenu).

  1. Après il y a des question techniques secondaires comme : créer des sessions, ne pas surcharger les utilisateurs mobile qui payent la bande passante, le fait qu'on ne peut pas stocker beaucoup si c'est lancé dans un navigateur (utiliser le localStorage ?), le fait que l'on peut créer une application desktop avec des outils comme Electron et donc disposer de plus de fonctionnalités et gestion des fichiers etc…

Electron n'est pas très pertinent dans ce contexte. Si tu utilises Electron, c'est pas du web. Tu peux aussi bien utiliser C++ avec Qt, Python avec GTK, ou n'importe quoi d'autre.

On peut aussi faire un compromis entre le fonctionnement classique serveur-client et le nouveau fonctionnement en p2p : par exemple c'est le serveur central qui distribue le code source, stocke les informations privées et authentifie les utilisateurs, et tout le reste est distribué parmi les clients (surtout les gros fichiers, les photographies haute résolution pour reprendre l'exemple plus haut).

Y'a pas grand avantage à mélanger les 2.

Est ce que vous voyez d'autres problèmes, est ce que vous penser que ce genre de technologies a des cas d'usages concrets ?

Je pense que oui, il y a des cas d'usages concrets.

Quelques pistes à explorer qui pourraient te guider dans ta réflexion, un peu en vrac :

  • IPFS
  • blockchain
  • CAP theorem

Je parle de JavaScript et d'autres trucs sur mon blog : https://draft.li/blog

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte