L’infrastructure et les écosystèmes le long de la pyramide de Feynman [2] : les infrastructures massivement distribuées
par Jean-Luc Dormoy
A partir du moment où l’Internet et le web tendaient à être universels, on s’est dit que l’on pouvait s’en servir comme d’une plate-forme d’exécution de services. Pour ce faire, il s’agit de créer une infrastructure au-dessus de l’Internet ou du web tout entiers, mais une infrastructure purement logicielle, qui s’exécute et réutilise les matériels existants et connectés. On construit donc par logiciel des systèmes distribués… au-dessus de systèmes distribués. On retrouve le schéma de répétition fractale de l’universalité de l’infrastructure.
On a souvent du mal à s’imaginer une infrastructure « immatérielle ». Elle consiste en programmes installés sur toutes les ressources de calcul mobilisées dans l’infrastructure qui s’exécutent aux moments opportuns ou en permanence, le plus souvent en concurrence avec les programmes et tâches déjà présents. Ces programmes sont normalement installés de façon volontaire par les propriétaires de ces ressources de calcul, qui doivent d’ailleurs configurer les paramètres de leurs systèmes de sécurité et donner les autorisations nécessaires pour participer à l’infrastructure – sans remettre en cause le niveau de sécurité, les performances ou la fiabilité de leur système.
Plusieurs propositions ont été faites, avec plus ou moins de succès dans la réalisation de leurs objectifs techniques et économiques, et dans leur adoption. Nous décrivons les plus importantes.
Le web
Le web est aujourd’hui universel, et confondu dans la plupart des esprits avec l’Internet. Pourtant, alors que l’Internet a vu ses premiers paquets circuler en 1972 (projet ARPANET démarré en 1969), le web est venu bien après, en 1989.
Le web est une infrastructure logicielle distribuée au-dessus de l’Internet. L’objectif de son créateur, Tim Berners-Lee, travaillant alors au CERN à Genève, était de rendre disponible de nombreuses ressources documentaires ayant des formats multiples et stockées sur des ordinateurs aux infrastructures hétérogènes. On s’en est servi depuis à beaucoup d’autres choses.
Techniquement, le web repose sur un protocole, c’est-à-dire un langage commun parlé par de nombreuses machines, http[1]. En pratique, des serveurs web sont des programmes installés sur toutes les machines censées comprendre le http, exécutés en permanence, et chargés du dialogue. Le plus célèbre et le plus utilisé est Apache[2], diffusé en open source. A ce protocole est associé un langage de description de documents hypertextes, html, qui permet de composer les pages web. Un hypertexte est un document comprenant du texte formaté, des documents multimédia (son, vidéo, photos, etc.) et des hyperliens, c’est-à-dire une action programmée permettant en cliquant dessus de se diriger vers une autre page web dont le nom est indiqué par le lien ou d’exécuter une tâche complexe. html a connu plus versions, et vient à l’origine d’un langage beaucoup complet et complexe, sgml. Lorsque le web est devenu un phénomène de masse, un organisme s’est constitué pour organiser ses évolutions, le W3C, ou World Wide Web Consortium.
Depuis, de nombreux nouveaux langages ont été ajoutés au web. L’un des plus importants est xml.
Les acteurs du web ont en effet constaté que, si html avait été une simplification très utile de sgml, on avait aussi beaucoup perdu; le nouveau langage proposé, xml, a l’objectif de devenir le langage de description et d’échange de données et d’actions sur le web. En réalité, xml est à la fois un langage pour échanger des données, et aussi pour définir des langages spécialisés pour échanger des données – xml avec des langages auxiliaires comme rdf est donc aussi ce que l’on appelle un métalangage… On a ainsi des langages spécialisés comme MathML, pour échanger des énoncés mathématiques, SVG pour des données graphiques, RSS pour de la syndication de contenu, etc.
En outre, des langages de programmation ont été proposés pour écrire des actions programmées complexes, par exemple associées aux pointeurs hypertextes d’un document html. PHP, ou aujourd’hui Ruby on Rails en font partie. Mais le plus célèbre est sans aucun doute Java. Java est un langage de programmation dit à objets, qui a la particularité de pouvoir être compilé vers une machine virtuelle. Cela permet ainsi de transporter des petites applications Java, les applets, entre machines sur l’Internet, et de les exécuter sur n’importe quelle machine disposant d’une machine virtuelle – le plus souvent associée au browser web. On peut donc exécuter du Java indépendamment et malgré l’hétérogénéité des systèmes d’exploitation, middleware, etc.
Java a été massivement adopté, et n’a comme concurrent que l’environnement .NET de Microsoft, qui a d’ailleurs défini un langage concurrent, C#. Il est utilisé aujourd’hui bien au-delà des applets Java, d’ailleurs remplacées par des systèmes plus sophistiqués et puissants.
Pour permettre l’interaction de l’utilisateur avec le web, on a mis au point des navigateurs génériques. Le premier navigateur largement répandu a été Mosaic en 1993. A partir de 1995 Netscape Navigator devient dominant, créé par Marc Andreessen. 1995 est également la date de sortie de Internet Explorer de Microsoft, qui effectue ainsi un virage stratégique après avoir superbement ignoré l’Internet. Commence alors une guerre des navigateurs, où par exemple Microsoft devra séparer Internet Explorer de Windows par décision de justice dans l’Union Européenne. Cela ne l’empêche pas de devenir le navigateur dominant, domination cependant remise en cause à partir de 2005 par Mozilla Firefox, un successeur de Netscape édité en logiciel libre. La guerre se renouvelle avec les Safari sur Apple, et Chrome de Google. La conquête de la « fenêtre sur le web » que constitue le navigateur, et à travers elle de l’utilisateur et de sa cervelle, constitue l’enjeu, afin d’influencer son attention vers ses propres services web. La guerre se déplace et se poursuit sur les plates-formes mobiles.
Web services
L’existence désormais universelle du web a conduit à s’en servir comme base d’une plate-forme d’exécution globale encore plus générale, les web services. Le langage de données hypertextuelles xml[3] sert à échanger les données et le protocole http à localiser et procéder aux appels de composants logiciels présents quelque part sur le web[4]. On appelle ainsi un web service comme on appellerait un sous-programme dans un programme, mais en le désignant par une URL, de la forme http://…
En outre, les services web spécifient comment on peut déclarer, décrire et retrouver les services disponibles. Un langage à nouveau basé sur xml a ainsi été créé pour décrire les services web, WSDL[5], ainsi que des annuaires pour permettre à un service web d’en retrouver un autre par ses caractéristiques, UDDI[6]. Nous ne pousserons pas plus loin la description, qui comprend d’autres standards et acronymes.
Tout cela constitue un système extrêmement puissant qui masque toutes les idiosyncrasies de l’infrastructure sur laquelle ils s’exécutent.
Les web services sont actuellement repris dans des contextes étendant le web, notamment vers le web des objets. Ou si l’on veut, le web est en passe d’être étendu aux multiples objets digitaux ou digitalisés qui le « rejoignent ». On parle aussi d’Internet des Objets, ce qui montre que même pour les scientifiques et ingénieurs, l’Internet et le web sont des infrastructures se confondant en pratique.
Partage de connectivité, téléphonie sur IP
D’autres idées de partage de service par une communauté sont apparues, notamment le partage d’une connectivité de base. Ce sont par exemple les systèmes qui consistent à ouvrir votre borne WiFi personnelle, et donc votre accès à l’Internet, à tout membre de cette communauté. En échange, vous pourrez vous-mêmes accéder aux bornes de la communauté si vous êtes en déplacement. Bien sûr cela exige l’établissement de systèmes de sécurité ad hoc, et un certain respect de règles de bon comportement, évitant par exemple lorsqu’on est invité de consommer la plus grande partie de la bande passante de votre hôte.
D’autres systèmes semblables ont pour objet le partage de services simples comme la téléphonie par voix sur IP (IP telephony), par exemple le système de la société espagnole Fon, rachetée par Google.
Le service Skype a beaucoup plus de succès, qui permet de téléphoner ou visiophoner gratuitement. Skype peut se substituer au téléphone fixe ou mobile dès qu’une connexion Internet est disponible. Son succès dans le monde est moins flagrant en France, où la voix sur IP a été généralisée par les offres Triple Play.
Messagerie électronique et instantanée
La messagerie électronique (email) est une des premières grandes applications de l’Internet – en réalité il a existé avant même l’Internet, en 1965, et a servi à la mise au point de l’Internet. Inutile de dire ce qu’est le courrier électronique aujourd’hui. Son acheminement repose sur des protocoles spécifiques, SMTP, POP et IMAP.
La messagerie instantanée, ou chat, est également ancienne, elle était incluse dans le système d’exploitation Unix, développé à partir de 1969 – commande talk. Mais le véritable chat tel qu’on le connaît aujourd’hui, avec présence, gestion des contacts, etc., naît en 1996 avec ICQ de la société israélienne Mirabilis, rachetée en 1998 par AOL Time Warner. Puis Yahoo! Et Microsoft entrent dans la danse avec leurs Yahoo! et MSN Messenger. Un standard ouvert sera défini en 2004 par l’IETF, Jabber, basé sur le protocole XMPP.
Grid computing
Une autre tentative pour construire une infrastructure massivement distribuée est le Grid Computing. Le grid computing est un peu l’inverse des fermes de serveurs, où l’on regroupe dans un même endroit un grand nombre de serveurs semblables. L’idée de base est que les ressources matérielles sont sous-utilisées, et que tous ces « cycles[7] » disponibles pourraient être collectés et mis à disposition pour des services utiles si l’infrastructure ad hoc existait. Le modèle économique est donc d’éviter d’acheter du matériel en utilisant mieux celui qui est disponible.
Cette idée a reçu quelques réalisations opérationnelles spectaculaires, mais limitées à des services ayant une structure très spécifique. C’est le cas notamment des communautés de mise à disposition de PC pour des calculs ayant un intérêt « sociétal ». Le plus célèbre est SETI@Home, qui poursuit les buts du programme SETI lancé en 1961 par le regretté Carl Sagan, le grand astronome américain, et qui consiste à étudier des signaux captés par le radiotélescope d’Arecibo pour y trouver des signes d’intelligence extraterrestre. Ces signaux sont facilement découpables en « petits » morceaux susceptibles d’être analysés par un programme exécutable sur un PC de petite taille mais gourmand en temps de calcul. Chaque membre de la communauté SETI@Home télécharge donc un système prenant peu de place et capable de déclencher le calcul d’analyse lorsque le PC n’est pas utilisé. Lorsque le calcul est terminé après quelques heures, il se connecte automatiquement au serveur de SETI@Home en Californie, envoie le résultat de son analyse, et télécharge un nouveau morceau de signal à analyser. Bien sûr cela exige que vous laissiez votre PC allumé, la note d’électricité correspondante représentant une contribution financière indirecte au programme. Des statistiques par pays des plus grands contributeurs sont publiées, ce qui vous permet de vous distinguer. Le succès serait que l’on découvre des extraterrestres, et que cela se passe sur votre PC !
Le même type de système a été utilisé pour des recherches concernant les maladies génétiques dans des opérations du type Téléthon.
Ces systèmes sont opérationnels, mais on voit qu’ils exigent que le service d’analyse soit « petit » en volume, même s’il est long en temps d’exécution, et que l’on puisse découper les données en « petits » morceaux indépendants. Or les problèmes intéressants de ce type sont plutôt l’exception que la règle : c’est pourquoi ces systèmes n’ont pas démodé ni même écorné l’intérêt des superordinateurs, qui sont faits eux pour traiter des tâches exécutées en parallèle mais fortement couplées par les données auxquelles elles doivent accéder. Une condition technique fondamentale de la performance de tels programmes est en effet la latence, c’est-à-dire le temps qu’il faut à une donnée pour voyager de la mémoire vers un processeur ou inversement, ou à un message pour voyager entre processeurs. Les performances sont telles aujourd’hui qu’il est nécessaire que les composants du système soient reliés par des réseaux à performance bien plus élevée que l’Internet, et soient en outre physiquement proches, car la lumière ou les électrons qui transmettent les informations sont sinon trop lents ! Un Grid computing généralisé sur l’Internet pour des programmes massivement parallèles constitue donc une chimère.
L’idée du Grid Computing a néanmoins été testée dans des contextes un peu plus généraux, notamment pour ce qui concerne l’accès via l’Internet à des ensembles massifs de données. Le projet phare a été celui du CERN à Genève, qui a ainsi préparé une infrastructure de Datagrid pour permettre à la communauté scientifique mondiale d’accéder librement aux résultats des expériences du LHC. Une autre déclinaison a été la mutualisation de superordinateurs entre grands instituts. Si votre superordinateur est surchargé à un moment donné et si celui de votre partenaire a des ressources libres, vous pourrez l’utiliser. Il est néanmoins à noter que les problèmes d’idiosyncrasie de tels systèmes de pointe très spécialisés constituent une difficulté majeure à la réalisation de tels systèmes.
Enfin, de nombreux projets de recherche ont tenté de construire des infrastructures de grille plus générales, au sens où elles seraient capables d’accéder à des ressources en calcul, stockage, bande passante disponibles, exposées par un système ad hoc, et traversant les frontières d’organisations sécurisées. Une telle ambition n’a pas reçu à ce jour de réponse satisfaisante, même si des éléments intéressants et aux retombées positives existent.
Pair à pair
Les fameux systèmes « pair à pair » – peer to peer en anglais – servant au partage de fichiers entre machines, et accessoirement la cible des vendeurs de contenu (musique, vidéo), sont à ranger dans les systèmes distribués à grande échelle. L’avènement du format mp3[8] pour la musique a « lancé » ces systèmes et a disons-le fortement motivé l’adoption par le public de l’accès à l’Internet « haut débit » (ADSL ou câble).
Le système pair-à-pair comprend un système d’indexation qui permet aux participants de connaître les fichiers disponibles, et d’y accéder. Ces systèmes d’information peuvent être centralisés sur des serveurs spécialisés et identifiables sur le web, ou être eux-mêmes distribués sur les machines des participants. Comme les fichiers multimédias ainsi partagés ne sont pas toujours libres de droit, à la fois les utilisateurs et les promoteurs de ces systèmes se mettent hors la loi; or il est facile d’identifier et de poursuivre l’exploitant de serveurs connus, les systèmes centralisés comme Napster ont donc été rapidement condamnés – à la fois juridiquement, et au sens où ils ont disparu pour ces utilisations. Ces difficultés ont néanmoins été contournées, et le téléchargement pair-à-pair continue.
Il est devenu difficile d’identifier et de poursuivre les échanges illégaux; à cette fin la représentation nationale a adopté en France les lois HADOPI. Mais il existe d’ores et déjà des parades, utilisant par exemple le cryptage.
[1] Oui, le « http » que vous indiquez avant le nom du site auquel vous souhaitez accéder à partir de votre navigateur – browser en anglais.
[2] Prononcer A-pa-tchi, dont le nom est issu d’un jeu de mots avec patch, qui en anglais signifie « rustine » (logicielle), car les processus de développements open source basés sur des contributions progressives des programmeurs volontaires faisaient dire initialement « Ah ! Des rustines » (Ah! Patches!).
[3] xml est une version plus scientifique et systématisée de html, standardisée par le W3C, qui est un consortium en charge de standards du web. xml et html descendent tous deux de l’ancêtre des langages hypertetexte sgml, cf. le chapitre sur la gestion des contenus.
[4] Plus précisément, on a défini un nouveau protocole, SOAP, pour permettre aux composants d’échanger données et messages.
[5] Web Service Description Language, Langage de Description des Services Web.
[6] Universal Description Discovery and Integration.
[7] On parle de « cycle » en se référant aux cycles d’un processeur, où chaque étape élémentaire du fonctionnement de celui-ci est cadencée par une horloge unique qui donne le « top » pour tous les circuits de la puce. La fréquence de cette horloge est une des caractéristiques de la puissance de calcul brute du processeur, qui constitue encore à ce jour un argument marketing (puce à 500 MHz ou Mégahertz, 1, 2 ou 3 GHz ou Gigahertz). Il est à noter que sur les architectures à venir comportant de nombreux processeurs sur une puce unique, il y aura plusieurs horloges non synchronisées, une par processeur ou grappe de processeurs.
[8] mp3 est un format de compression de la musique inventé en commun par le Fraunhofer IIS – Institut für Integrierte Schaltungen – d’Erlangen et la société française Thomson. Il a été popularisé non seulement par les systèmes pair-à-pair mais aussi par l’IPod d’Apple.
Moore’s Law and the Future of [Technology] Economy de Jean-Luc Dormoy est mis à disposition selon les termes de la licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Partage à l’Identique 3.0 non transposé.
Basé(e) sur une oeuvre à mooreslawblog.com.