Mot-clé - vulgarisation

Fil des billets

mardi 10 novembre 2015

centralisé, décentralisé, P2P, mais c'est quoi tout ça ?

Une petite mise au point technique, parce que je vois qu'il y a beaucoup de confusion sur les termes « centralisé » (encore lui ça va), « décentralisé », « distribué », « fédéré », « pair à pair », etc.

Il faut dire que la confusion est assez normale, il n'y a pas vraiment de définition de ces termes, et ce que les gens entendent en les employant dépend de leurs lectures, leur compréhension, et leur sensibilité.

Commençons par le plus simple : centralisé. Un système centralisé c'est un système où tout le monde dépend d'une même autorité, un serveur a priori dans le cas informatique. Bien qu'un système centralisé soit beaucoup plus simple à faire sur le plan technique (facile de trouver des gens ou des informations quand ils sont tous au même endroit), il peut avoir ses propres problèmes : montée en charge en particulier ; il est plus difficile d'absorber des données quand il n'y a qu'un centre de traitement, les tuyaux peuvent rapidement se trouver trop petits, etc.

Un système de communication centralisé pose de nombreux problèmes : il est évident qu'il est plus facile d'espionner, censurer ou modifier des données quand elles sont dépendantes d'un seul point. Même sans intention malicieuse, on a un point unique de défaillance (ce que les anglophones appellent « single point of failure »), c.-à-d. qu'une panne, une attaque, une catastrophe naturelle ou pas provoque l'arrêt du service voire la perte des archives.
Dans les cas les plus gros, on prend un hangar et on le remplit d'ordinateurs, ce sont les fameux centres de données ou « data centers ».

Là où ça se complique un peu, c'est qu'un système centralisé peut être physiquement en plusieurs endroits, ou utiliser des systèmes de répartition/répétition des données. Le principe est d'éviter l'engorgement ou les risques de pannes cités plus haut, mais même si ces machines sont séparées et communiquent entre elles à distance, elles sont a priori toujours sous la même autorité.


http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/centralised_simple.png


Passons maintenant aux systèmes décentralisés/distribués/fédérés. Certains vont pousser les haut-cris que je mette tout ça ensemble, parce qu'il n'y pas vraiment de définition et que chacun se fait plus ou moins la sienne.

« dé-centralisé » veut dire qui n'a pas de centre, ni plus ni moins. L'idée pour un système de communication, c'est que toute entité (individu, association, organisation, etc) puisse être une partie d'un réseau qui n'a pas d'autorité principale, et que ces autorités puissent parler entre elles.

On essaye ainsi d'éviter les problèmes de la centralisation, mais on se retrouve avec tout un tas de nouveaux problèmes, techniques pour la plupart : il est beaucoup plus difficile de retrouver des données ou des gens en plusieurs endroits, de se mettre d'accord sur la « langue » à utiliser pour communiquer (surtout quand on a des logiciels ou des versions d'un même logiciel différents), ou encore d'être sûr que la donnée qu'on a est à jour (est-ce que le message a été modifié ou supprimé ?).

« fédéré » est généralement employé pour parler de systèmes différents (noms de domaines différents par exemple, voire logiciels différents) qui peuvent communiquer entre eux. Un système décentralisé est fédéré par nature, sinon on a affaire à plusieurs systèmes centralisés indépendants. Disons que si on veut être pointilleux, on peut dire qu'un système décentralisé peut communiquer avec seulement certaines entités (je communique avec les serveurs de mon entreprise internationale, mais pas avec le reste du monde), et que la fédération implique l'idée que c'est ouvert à tous (ou presque, il y a souvent des gens qu'on ne veut pas, les spammeurs par exemple).

« distribué » ne devrait pas être employé pour les systèmes de communication. Le terme est normalement utilisé pour le calcul : si votre ordinateur a plusieurs processeurs, il distribue la charge de calcul entre eux, ou dans le cas de très grosses demandes (recherche par exemple), on peut demander à plusieurs machines distantes de faire chacun une partie d'une grosse opération mathématique. Dans ce cas, l'organisation de la répartition est souvent contrôlé par une même autorité (par exemple le laboratoire qui veut faire cette opération).
Par extension, le terme est aussi utilisé pour les systèmes de fichiers, et certains l'emploient pour les logiciels de communication, mais cela ne veut pas dire autre chose que décentralisé.


http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/decentralised_simple.png


Enfin, il y a le terme P2P ou « pair à pair » (« peer to peer » en anglais). En fait une connexion pair à pair n'est rien d'autre qu'une connexion directe entre 2 ordinateurs, mais on l'associe souvent aux technologies plus ou moins apparentées qui ont commencé à apparaître à la fin des années 90/au début des années 2000 et qui servaient (et servent toujours) principalement à partager des fichiers.

Après Napster (lancé mi 1999) qui était un bête système centralisé qui mettait en relation des machines pour une connexion directe, il y a eu beaucoup d'essais et d'évolutions pour trouver un système qui permet de se passer de serveurs, l'idée étant principalement de permettre au réseau de fonctionner même si on lui coupe l'accès à une partie de lui-même.

Je vous passe toutes les techniques qui sont utilisées : c'est un domaine très pointu, très intéressant, et qui demanderait facilement un livre pour être expliqué. Ça part des systèmes de répartition par propagation de proche en proche à la Usenet, jusqu'aux récentes chaînes de blocs (blockchain), en passant par les tables de hachage distribuée (Distributed Hash Table), etc.

Ce qui fait principalement la différence entre un système « décentralisé » et « entièrement P2P », c'est la place du serveur. Un serveur, dans les grandes lignes, c'est ce qui permet à votre logiciel (le « client ») de contacter d'autres clients via d'autres serveurs. Il est là pour tout un tas de raisons : identifier les gens, donner les bonnes données aux bonnes personnes, garder
les fichiers à donner à un client actuellement hors ligne quand il sera disponible, etc.
Si on supprime le serveur, inévitablement c'est votre client (ou un autre) qui va devoir se charger de ce travail, ce qui aura un impact sur votre bande passante, la charge de travail pour votre processeur (et donc la durée de vie de votre batterie le cas échéant), et compliquera la tâche de votre logiciel (plus difficile de savoir à qui parler et à qui faire confiance quand on n'a pas de serveur comme référence).

http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/fully_P2P_simple.png

Pour transformer un système décentralisé avec serveurs en système entièrement P2P (c.-à-d. sans serveur), je vais vous donner une recette : vous mettez un seul client sur votre serveur, et vous mettez le serveur et le client sur la même machine.
Bien sûr si vous voulez être vraiment indépendant, il va falloir supprimer le besoin de points de références, et en particulier le système de noms de domaine ou « Domain Name System ». C'est ce qui associe le nom de votre serveur (par exemple « libervia.org ») à l'adresse « IP » qui permet de vous retrouver sur Internet. Il va falloir aussi être capable de retrouver les données ou les gens un peu partout, et là on se retrouve avec les technologies intéressantes mais complexes évoquées plus haut (« D.H.T. », « Blockchain », « SuperPeer », etc).
 

Et XMPP dans tout ça ?

Je vais quand même parler un peu de XMPP. XMPP est un système dit « hybride », c'est à dire qu'il fonctionne normalement sur un modèle client/serveur, mais il peut faire du P2P à la demande (pour transférer un fichier ou faire de la visioconférence par exemple).
Il est même possible de fonctionner sans serveur sur un réseau local (comme expliqué ici), et il peut parfaitement devenir à terme un système entièrement P2P comme expliqué dans le paragraphe précédent.

Ceci dit, même si l'approche entièrement P2P est séduisante, je pense que l'architecture décentralisée sur un modèle client/serveur est un compromis bien plus efficace : elle limite le travail de votre client, permet une meilleure optimisation du trafic ou du calcul, et facilite l'échange asynchrone (quand deux personnes ne sont pas connectées en même temps). Bref, c'est tout sauf un modèle du passé comme on peut le lire parfois, et bien qu'il y ait plusieurs recherches et options intéressantes pour des systèmes entièrement P2P, il ne faudrait pas jeter le bébé avec l'eau du bain.

jeudi 14 septembre 2006

Ma vision du Libre

Avant toute chose, je tiens à préciser que je parle de "ma" vision du Libre non par prétention, mais parce qu'il doit y avoir autant d'interprétations du mouvement que d'acteurs. Aussi merci d'en tenir compte en lisant la suite de ce texte. Si vous n'avez jamais entendu parlé du Libre, essayez de lire le texte intégralement même si ça peut paraître indigeste: c'est un mouvement majeur de notre époque qu'il est important de connaître.

Mais commençons par le commencement, le Libre c'est quoi ?

Le Libre est un courant de pensée récent qui vise à permettre la libre diffusion des oeuvres. Par libre diffusion, on entend 4 libertés fondamentales: liberté d'utiliser, liberté de diffuser, liberté d'étudier et liberté de modifier. Ce mouvement, parti de l'informatique et du logiciel libre, a pris une ampleur impressionnante, dopée par l'explosion d'Internet, et touche désormais à quasiment tous les domaines artistiques (et pas seulement). Il s'agit purement et simplement d'une véritable révolution idéologique et économique, qui est bien partie pour modifier le système occidental actuel en profondeur. Des mots un peu forts ? Laissez moi vous présenter les deux exemples les plus parlants à l'heure actuelle: le logiciel et la musique.

Le logiciel libre

Le logiciel libre est un logiciel qui se base sur les 4 libertés fondamentales suivantes:

  • Liberté 0 : La liberté d'exécuter le programme, pour tous les usages.
  • Liberté 1 : La liberté d'étudier le fonctionnement du programme.
  • Liberté 2 : La liberté de redistribuer des copies.
  • Liberté 3 : La liberté d'améliorer le programme et de publier ses améliorations.

En d'autres termes, il garantit une utilisation complète sans limitation, il autorise la copie; peut être adapté à des besoins spécifiques, ou peut être analysé.
Le logiciel peut être vu comme un outil, une technologie, une connaissance.
Un des principes fondamentaux du Libre est le partage de la connaissance. Outre la beauté philosophique, ce partage a de nombreux avantages, en voici quelques uns:

D'un point de vue technique, le logiciel libre est

  • plus sûr (le logiciel pouvant être étudié, n'importe qui capable de le comprendre peut corriger ses erreurs)
  • plus réactif (de par son ouverture, les erreurs sont corrigées plus vite, les nouvelles fonctionnalités sont implémentées plus rapidement)

D'un point de vue théorique, si une infinité de développeurs travaille sur un logiciel pendant une durée infinie, le logiciel tend vers la perfection. Ce qui sous entend que tôt ou tard, le logiciel libre égalera puis dépassera un équivalent propriétaire en termes de fonctionnalités, de stabilité et d'efficacité.

Par expérience, on s'aperçoit également que les logiciels libres ont tendance à

  • respecter davantage les standards (plus grande accessibilité  notamment aux personnes handicapées)
  • proposer plus d'innovations (moins de dépendance vis à vis des risques économiques et du marché)

Le modèle du logiciel libre a donc de nombreux avantages, mais il modifie en profondeur les méthodes de diffusion traditionnelles.

Economiquement, la question actuellement en suspend est "comment gagner sa vie avec le logiciel libre ?" . La première réponse est celle des services autour du logiciel: le support technique, les manuels papier, les adaptations peuvent se monnayer. D'autre part, de (très) grandes entreprises y ont vu un moyen de s'imposer sur des marchés sous monopoles ou quasi-monopoles: Sun avec Open Office, IBM avec Eclipse par exemple.

Une autre solution est le mécénat: un développeur travaille sur son projet, et vit à l'aide de dons. Malheureusement en pratique, c'est rarement suffisant pour vivre de ses oeuvres. Cependant, certains projets populaires font régulièrement des campagnes massives de dons, qui peuvent s'avérer très efficaces (Wikipédia par exemple).

Il y a également des solutions hybrides: ainsi ID Software, célèbre développeur de jeux vidéo dont les grands classiques que sont Doom et Quake, publie ses oeuvres sous licence libre après leur exploitation commerciale (à noter que dans ce cas le Libre ne permet pas de gagner sa vie).

Enfin, tout un marché se créé autour de ce nouveau mode de diffusion: un développeur peut gagner sa vie en adaptant des logiciels libres aux besoins spécifiques d'une entreprise ou d'un particulier; et d'autres systèmes économiques sont certainement envisageables.
Il faut garder à l'esprit que de grandes entreprises dont le système économique se base sur les logiciels libres se sont créées et fonctionnent depuis plusieurs années.

Pourquoi tout ceci est si important ? Aujourd'hui, l'informatique est devenu tout simplement indispensable dans tous les domaines de la société, elle devient un maillon central de notre vie. Un des enjeux majeurs du Libre est d'éviter de laisser ce maillon entre les mains de quelques grandes sociétés, et d'emprisonner des connaissances dans des stratégies économiques: le Libre permet de rendre le contrôle des connaissances au peuple. D'autre part, le Libre a un aspect philosophie mais également économique, et son implantation, que l'on peut désormais qualifier de réussie, au sein du système économique actuel assure la propagation de sa philosophie.

Le Libre et la musique

Sans repasser par une description complète, la musique Libre s'apparente au logiciel libre par les libertés offertes (écouter, modifier, diffuser, étudier). Bien que la musique libre soit arrivée plus tardivement, elle est un élément très important du mouvement car la musique a souvent, si ce n'est toujours, accompagné l'Homme dans ses (r)évolutions, elle est un moyen d'expression majeur et un témoin de son époque. Pour simplifier le schéma classique actuel, la musique est traditionnellement composée et interprétée par un groupe, puis envoyée à un éditeur, si l'éditeur estime que la musique peut marcher commercialement, il décide de la diffuser. Commence alors une campagne publicitaire, que l'on peut aisément qualifier de matraquage, le morceau est diffusé massivement par les médias afin que le consommateur l'achète. Quelques grands éditeurs contrôlent la majorité du marché: ce sont les majors du disque.
La diffusion de la musique est donc dépendantes de critères commerciaux et non artistiques: ce sont les majors qui décident qui écoute quoi. On se retrouve avec une culture dirigée, uniformisée, monnayée.
D'autre part, les technologies actuelles permettent de contrôler la diffusion des musiques: combien de fois vous l'écoutez, où vous l'écoutez, combien de fois et à qui vous pouvez la prêter ou la copier. Faux ? Faites des recherches sur les DRM et voyez de vos propres yeux. Peut être pensez vous que ce genre de protection pourra toujours se contourner ? Outre le fait que ce n'est pas nécessairement vrai, il est idéologiquement inacceptable (et dangereux) de devoir passer par là.
La musique libre, au contraire, permet à chacun de diffuser ses propres morceaux (avec l'aide précieuse d'Internet), de les faire écouter ou les copier à ses amis, elle permet une créativité bien plus importante. Bref elle donne à la musique et à la culture ce qui leur manquait: le respect.

Actuellement, la musique se trouve au centre d'un important débat: avec les méthodes de diffusions d'aujourd'hui, notamment les logiciels de partage, les majors cherchent à reprendre le contrôle des musiques via des moyens techniques ou légaux, en bafouant totalement les libertés les plus élémentaires du consommateur. L'industrie est en train de changer radicalement, les éditeurs perdent de leur pouvoir tandis que le client, qui devient plus qu'un simple consommateur, en gagne. Il est clair que beaucoup d'artistes sont actuellement  dépassés par les évènements, ou ne se rendent tout simplement pas compte des enjeux. Pourtant, ils vont tôt ou tard tous devoir prendre une décision.

Enfin le mouvement du Libre a entraîné d'autres progrès: l'exemple le plus célèbre (et une révolution à elle toute seule) est la Wikipédia. Cette encyclopédie Libre répond à un des plus anciens rêves de l'Homme; une gigantesque base de connaissances qui touche à tous les sujets, que l'ont peut librement consulter, modifier et diffuser.

Le Libre est donc un mouvement d'une importance croissante, qui, non content d'avoir trouvé sa place dans l'informatique, s'étend à d'autres domaines (musique, cinéma, encyclopédie, littérature, etc). Il revoit en profondeur les modes de pensée actuels liés à la propriété intellectuelle, et se situe dans une logique de partage. Contrairement à la plupart des autres grands courants de pensée: le mouvement Libre a l'avantage de s'imposer économiquement, et de fonctionner.