Qu’est-ce qu’une architecture distribuée? Alors que le terme n’a pas été défini de manière officielle ni par la NIST (National Institute of Standards and Technology) ni par l’AFNOR (Association française de normalisation), nous nous sommes engagés à explorer quel est le vrai sens de ce terme.
Définie par Wikipedia comme toute architecture dont les ressources ne se trouvent pas au même endroit ou sur la même machine, le concept d’architecture distribuée (ou informatique distribuée) s’oppose habituellement à celui d’architecture centralisée représentée par les architectures traditionnelles client-serveur.
Or, une analyse plus approfondie nous a mené à penser qu’il existe plusieurs types architectures distribuées qui se distinguent selon leur nature et leur fonctions.
Il s’agit tout d’abord de distinguer entre les architectures distribuées au niveau de leur infrastructure technique – implémentée dans une optique distribuée (tel est le cas du Pair à Pair ou du Cloud Computing) et les architectures distribuées au niveau de leur contenus – produits ou développés dans une approche distribuée (tel est le cas de la plupart des plateformes de production collaboratives à la Wikipédia). Pour des raisons de clarté et de simplicité, nous avons décidé, dans le cadre de notre recherche, de nous concentrer uniquement sur les architectures distribuées au niveau de l’infrastructure.
Il s’agit ensuite d’analyser le niveau de centralisation de ces architectures – qui peuvent se situer sur un continuum entre centralisation totale – avec une gouvernance de type hiérarchique où les ressources sont contrôlées et gérées par une entité centrale (tel est le cas du Cloud Computing) et décentralisation totale – avec une gouvernance de type égalitaire où les ressources sont contrôlées et gérées par un système symétrique de pairs (tel est le cas de la plupart des réseaux P2P). Sans vouloir prendre de position immédiate – afin de ne devoir exclure a priori aucune de ces architectures de la portée de notre recherche – nous avons décidé d’analyser les enjeux sociaux-économiques, juridiques et techniques posées par chacune de ces architectures, afin de déterminer si, et comment, elles se différencient les unes par rapport aux autres.
Cloud Computing
Dans le scénario traditionnel client-serveur, les fichiers sont stockés dans un serveur central, d’où ils peuvent être téléchargés et importés par un client. Certains dispositifs sont donc chargés de fournir les données que d’autres dispositifs utilisent. Au premier abord, le Cloud Computing ressemble à un environnement traditionnel d’hébergement où un serveur central existe dans le Cloud (i.e. dans un datacenter) comme une ou plusieurs instances de serveur. En réalité, cependant, le modèle de Cloud Computing est beaucoup plus sophistiqué.
Défini par la NIST comme un service à la demande, qui comporte une mutualisation mesurable de ressources informatiques (en terme de consommation), rapidement élastiques (à selon d’une variation des besoins) et accessibles sur l’ensemble d’un réseau, lorsque l’on parle de Cloud Computing, on ne parle pas d’une technologie nouvelle, mais plutot d’une nouvelle façon de présenter des technologies qui existaient auparavant.
Le Cloud Computing, c’est tout simplement un nouveau modèle économique : une nouvelle façon de livrer des ressources informatiques (physiques ou virtuelles) fournies en tant que service. Le Cloud Computing représente ainsi une véritable révolution qui consiste en une nouvelle forme d’ « informatique à la demande » (utility computing).
Il existe, toujours selon la NIST, trois différentes catégories de services Cloud Computing:
-
Infrastructure as a Service (IaaS), pour la fourniture d’infrastructures de calcul et de stockage en ligne ;
-
Platform as a Service (PaaS), pour la fourniture de plateformes de développement en ligne dans un environnement contrôlé ;
-
Software as a Service (SaaS), pour la fourniture d’applications accessibles en ligne, sans avoir besoin d’installer aucun logiciel.
Ces ressources informatiques sont externalisées sur des serveurs distants, où elles seront ensuite partagées et mutualisées à l’intérieur de machines virtuelles afin de pouvoir être successivement exploitées à n’importe quel moment et sur n’importe quel ordinateur ou appareil numérique – le tout, suivant des systèmes complexes d’infogérance qui reposent sur des mécanismes d’isolement logiques pour séparer et protéger les données des différents clients.
Une caractéristique essentielle des services de Cloud Computing est l’implication de différents acteurs qui entrent en jeu pour fournir un service aux clients:
1. Les opérateurs du Cloud Computing qui fournissent des ressources aux prestataire de services ;
2. Les prestataires de services (ou Cloud brokers) qui s’appuient sur une ou plusieurs plateformes de Cloud Computing pour fournir un service aux utilisateurs finaux ;
3. Les utilisateurs finaux qui utilisent effectivement les services fournis par les prestataires de services hébergés sur des plateformes de Cloud Computing.
En termes d’enjeux, bien qu’offrant une série d’avantages aux utilisateurs du réseau, le Cloud Computing comporte cependant des risques importants dans la mesure où les ressources informatiques sont désormais détenues par des grandes entreprises qui opèrent dans une optique de marché orientée vers la maximisation des profits. Le paysage numérique se transforme ainsi en un réseau de plus en plus centralisé, où la production et la diffusion d’information sont réglementées par un très petit nombre de grandes entreprises. Alors que les ressources se déplacent vers des systèmes centralisés avec une énorme puissance de traitement et de stockage des données, les dispositifs des utilisateurs se transforment eux en de simples « terminaux » de moins en moins performants. Cela comporte des implications importantes pour les utilisateurs du réseau, qui perdent non seulement le contrôle sur leur propres données, mais aussi la possibilité de déterminer la façon dont celles-ci seront utilisées par eux-mêmes ou par d’autres.
Pair à Pair
Les technologies pair à pair se distinguent fortement du modèle traditionnel client-serveur, caracterisés par un serveur qui fournir des ressources aux clients qui les consomment. Par opposition, dans un système pair à pair (P2P), les pairs sont à la fois consommateur et le fournisseur de ressources.
Les réseaux P2P rassemblent et relient entre elles les ressources des utilisateurs connectés au réseau de façon à créer une infrastructure dynamique et performante sans aucun investissement de nature financière ou autre. Les pairs participant au réseau mettent une partie de leurs ressources à la disposition des autres pairs connectés au réseau, qui vont gérer le partage et la redistribution de ces ressources. Étant donné que ces pairs sont tous égaux entre eux, ils participent tous de la même manière au réseau : tous ont une responsabilité égale dans le traitement des données sans aucune distinction de type client / serveur.
Comme dans le cas du Cloud Computing, les dispositifs P2P mettent en place une architecture virtuelle et distribuée qui subsiste au-dessus (et indépendamment) des réseaux physiques. Plusieurs couches de virtualisation sont utilisées pour faciliter les tâches de découvertes et d’indexation des ressources (i.e. pour identifier les autres pairs connectés et pour déterminer l’emplacement des fichiers). Une fois l’emplacement des ressources identifiés, les contenus sont souvent échangés directement sur le protocole Internet sous-jacent du réseau. Les systèmes de P2P anonymes mettent en œuvre des couches supplémentaires de routage (e.g. onion routing) de manière à occulter la véritable source de ces ressources.
Néanmoins, en opposition avec le Cloud Computing où les applications sont accessibles en ligne, pour pouvoir accéder aux réseaux P2P, les utilisateurs doivent installer une application qui utilise un protocole commun de réseau afin de s’intégrer dans un réseau de pairs distribué. C’est ainsi que les utilisateurs peuvent accéder aux ressources du réseau, tout en maintenant le contrôle des fichiers et des applications installés sur leurs propres dispositifs. Dans la mesure où ils détiennent le contrôle sur l’infrastructure et les moyens de communication, ainsi que sur les contenus qui en résultent, les membres d’un réseau pair à pair sont moins susceptibles de se faire exploiter par les grands fournisseurs de services Internet. Enfin, en vue de leurs architectures décentralisées, ces systèmes facilitent le partage d’informations, tout en rendant la censure et la surveillance très difficile.
Architectures distribuées
En dépit de leurs différences substantielles, ces deux types d’architectures distribuées présentent des problématiques juridiques communes, notamment en ce qui concerne:
(1) La sécurité
(2) Le droit à la vie privée et la confidentialité des données
(3) La police des communications et des contenus (droits d’auteur et autres lois assimilées)
(4) L’identification et la responsabilisation des acteurs
(5) La question de la transnationalité.
Étant donné notre désir d’étudier ces questions plus en détails, nous avons décidé de nous concentrer plus en détail sur les architectures distribuées qui sont les plus susceptibles de soulever ce genre de problématiques.
C’est ainsi que nous sommes arrivés à rédiger notre propre définition d’architecture distribuée – comme se référant à toute architecture qui ne possède pas de noeud central, dont les ressources sont réparties au sein d’un réseau, au travers duquel elles communiquent et interagissent.