Le Dis­tri­bu­ted computing (en français « calcul distribué ») a su se rendre in­dis­pen­sable dans la vie et le monde du travail nu­mé­riques. Lorsque vous allez sur Internet pour effectuer une recherche, vous utilisez le Dis­tri­bu­ted computing. Les ar­chi­tec­tures de système dis­tri­buées sont également présentes dans de nombreux domaines d’activités et four­nis­sent d’in­nom­brables services si elles disposent d’une capacité de calcul et de trai­te­ment suf­fi­sante. Nous vous ex­pli­quons le fonc­tion­ne­ment de ce processus et vous pré­sen­tons les ar­chi­tec­tures de système utilisées ainsi que les domaines d’ap­pli­ca­tions. Dans cet article, nous abor­de­rons également les avantages du calcul distribué.

Qu’est-ce que le Dis­tri­bu­ted computing ?

Le terme « Dis­tri­bu­ted computing » désigne une in­fras­truc­ture numérique dans laquelle une grappe d’or­di­na­teurs réalise les tâches de calcul entrantes. Malgré une sé­pa­ra­tion physique, ces or­di­na­teurs autonomes col­la­bo­rent étroi­te­ment dans le cadre d’un processus de partage du travail. Le matériel utilisé est se­con­daire pour le processus. Outre des or­di­na­teurs et des postes de travail par­ti­cu­liè­re­ment per­for­mants issus du secteur pro­fes­sion­nel, il est également possible d’intégrer des mini-or­di­na­teurs et des PC de bureau de par­ti­cu­liers.

Du fait de leur sé­pa­ra­tion physique, les matériels dis­tri­bués ne peuvent pas utiliser une mémoire commune. Les or­di­na­teurs concernés échangent donc les messages et les données (par ex. les résultats de calcul) via un réseau. La com­mu­ni­ca­tion in­ter­ma­chines est effectuée lo­ca­le­ment via un Intranet (par ex. dans un centre de calcul) ou glo­ba­le­ment via Internet. Le transport des messages est par exemple assuré par des pro­to­coles internet tels que TCP/IP et UDP.

Dans le cadre du principe de trans­pa­rence, le Dis­tri­bu­ted computing s’efforce de se présenter comme une unité fonc­tion­nelle vis-à-vis de l’extérieur et de sim­pli­fier le plus possible l’uti­li­sa­tion de la tech­no­lo­gie. Les uti­li­sa­teurs démarrant par exemple une recherche de produit dans la base de données d’une boutique en ligne per­çoi­vent l’ex­pé­rience d’achat comme un processus uniforme et n’ont pas à se préoc­cu­per de l’ar­chi­tec­ture modulaire de l’in­fras­truc­ture utilisée.

Fi­na­le­ment, le Dis­tri­bu­ted computing est la com­bi­nai­son d’une ré­par­ti­tion des tâches et d’une in­te­rac­tion coor­don­née. L’objectif est de concevoir une gestion des tâches aussi efficace que possible et de trouver des solutions pratiques et flexibles.

Comment fonc­tionne le Dis­tri­bu­ted computing ?

Dans le Dis­tri­bu­ted computing, le point de départ d’un calcul est une stratégie de ré­so­lu­tion des problèmes par­ti­cu­lière. Chaque problème in­di­vi­duel est divisé en sous-parties et chaque sous-partie est traitée par une unité de calcul. La mise en œuvre opé­ra­tion­nelle est assurée par des ap­pli­ca­tions dis­tri­buées (Dis­tri­bu­ted ap­pli­ca­tions) exécutées sur toutes les machines de la grappe d’or­di­na­teurs.

Les ap­pli­ca­tions dis­tri­buées utilisent souvent une ar­chi­tec­ture client-serveur. Le client et le serveur se divisent le travail et couvrent certaines fonctions d’ap­pli­ca­tion avec les logiciels installés sur le client ou le serveur. Une recherche de produit selon le schéma suivant : Le client agit comme une instance de saisie et une interface uti­li­sa­teur qui reçoit la requête de l’uti­li­sa­teur et est con­di­tion­née de façon à pouvoir la trans­mettre au serveur. Le serveur distant assure ensuite la partie prin­ci­pale de la fonc­tion­na­lité de recherche et recherche dans une base de données. Le résultat de cette recherche est con­di­tionné côté serveur afin d’être renvoyé au client et lui est com­mu­ni­qué via le réseau. À la fin du processus, le résultat est affiché sur l’écran de l’uti­li­sa­teur.

Les processus dis­tri­bués intègrent souvent des services de midd­le­ware (in­ter­gi­ciel). En sa qualité de couche lo­gi­cielle spé­ci­fique, le midd­le­ware définit le modèle d’in­te­rac­tion (logique) entre les par­te­naires et assure la médiation ainsi qu’une in­té­gra­tion optimale dans le système distribué. Des in­ter­faces et des services comblant les vides entre les dif­fé­rentes ap­pli­ca­tions ainsi que per­met­tant et sur­veil­lant la com­mu­ni­ca­tion (par exemple par des con­trô­leurs de com­mu­ni­ca­tion) sont ainsi mis à dis­po­si­tion. Pour un dé­rou­le­ment opé­ra­tion­nel, le midd­le­ware met par exemple à dis­po­si­tion une procédure éprouvée de com­mu­ni­ca­tion in­ter­pro­ces­sus entre plusieurs appareils à l’aide du Remote Procedure Call (RPC). Cette procédure est notamment utilisée fré­quem­ment dans les ar­chi­tec­tures client-serveur pour les re­cherches de produit réalisées en in­ter­ro­geant une base de données.

Cette fonction d’in­té­gra­tion œuvrant en faveur du principe de trans­pa­rence peut également être perçue comme une tâche de tra­duc­tion. Les systèmes d’ap­pli­ca­tion et les plates-formes tech­ni­que­ment hé­té­ro­gènes – qui n’ont pas, en temps normal, la capacité de com­mu­ni­quer ensemble – parlent ainsi une même langue et peuvent col­la­bo­rer de façon pro­duc­tive grâce à un midd­le­ware. Outre l’in­te­rac­tion multi-appareils et mul­ti­pla­te­formes, le midd­le­ware prend également en charge d’autres tâches comme la gestion des données. Il gère aussi l’accès des ap­pli­ca­tions partagées aux fonctions et processus des systèmes d’ex­ploi­ta­tion dis­po­nibles lo­ca­le­ment sur les or­di­na­teurs connectés.

Quels types de Dis­tri­bu­ted computing existe-t-il ?

Le Dis­tri­bu­ted computing est un phénomène aux multiples facettes avec des in­fras­truc­tures en partie très dif­fé­rentes. Il est donc difficile de cerner toutes les variantes de Dis­tri­bu­ted computing. Cependant, on attribue le plus souvent trois sous-secteurs à ce sous-domaine de l’in­for­ma­tique :

  • le cloud computing
  • le grid computing
  • le cluster computing

Dans le cloud computing, le calcul distribué est utilisé afin de mettre des in­fras­truc­tures et des plates-formes rentables et très évo­lu­tives à dis­po­si­tion des clients. Les four­nis­seurs de cloud mettent gé­né­ra­le­ment à dis­po­si­tion leurs capacités sous la forme de services hébergés ac­ces­sibles via Internet. En pratique, dif­fé­rents modèles de services sont parvenus à s’imposer :

  • Software as a Service (SaaS) : dans le cas d’un SaaS, le client utilise les ap­pli­ca­tions d’un four­nis­seur de cloud ainsi que l’in­fras­truc­ture cor­res­pon­dante (par ex. des serveurs, une mémoire en ligne, des capacités de calcul). Les ap­pli­ca­tions sont ac­ces­sibles sur dif­fé­rents appareils via une « Thin Client Interface » (par exemple une ap­pli­ca­tion Web basée sur un na­vi­ga­teur). L’entretien et l’ad­mi­nis­tra­tion de l’in­fras­truc­ture dé­lo­ca­li­sée sont assurés par le four­nis­seur de cloud.
  • Platform as a Service (PaaS) : dans le cas d’une PaaS un en­vi­ron­ne­ment basé sur le cloud est mis à dis­po­si­tion par exemple pour dé­ve­lop­per des ap­pli­ca­tions Web. Le client dispose d’un contrôle sur les ap­pli­ca­tions mises à dis­po­si­tion et peut procéder à des réglages spé­ci­fiques à l’uti­li­sa­teur. Le four­nis­seur de cloud se charge de l’in­fras­truc­ture technique né­ces­saire au Dis­tri­bu­ted computing.
  • In­fras­truc­ture as a Service (IaaS) : dans le cas d’une IaaS, le four­nis­seur de cloud met à dis­po­si­tion une in­fras­truc­ture technique à laquelle les uti­li­sa­teurs peuvent accéder via des réseaux privés ou publics. L’in­fras­truc­ture mise à dis­po­si­tion inclut notamment des com­po­sants tels que des serveurs, des capacités de calcul et des capacités réseau, des appareils de com­mu­ni­ca­tion comme un routeur, des switches ou des pare-feu, de l’espace de stockage ainsi que des systèmes pour l’archivage et la sé­cu­ri­sa­tion des données. De son côté, le client dispose d’un contrôle sur les systèmes d’ex­ploi­ta­tion et les ap­pli­ca­tions mises à dis­po­si­tion.

Du point de vue de la con­cep­tion, le grid computing ressemble à un su­pe­ror­di­na­teur avec une énorme puissance de calcul. Les tâches de calcul ne sont toutefois pas traitées par une, mais par de nom­breuses instances. Dans ce cadre, les serveurs et les PC peuvent réaliser dif­fé­rentes tâches sans dépendre les uns des autres. Pour exécuter ces tâches, le grid computing peut accéder de façon très flexible aux res­sources. D’ordinaire, les par­ti­ci­pants mettent à dis­po­si­tion des capacités de calcul pour un projet global lorsque l’in­fras­truc­ture technique n’est pas trop chargée.

L’avantage est que cette méthode permet d’utiliser ra­pi­de­ment des systèmes très per­for­mants et d’adapter la puissance de calcul si besoin est. Pour augmenter la puissance, il n’est pas né­ces­saire de se rééquiper avec un su­pe­ror­di­na­teur plus coûteux encore.

Le grid computing per­met­tant de générer un su­pe­ror­di­na­teur virtuel à partir d’une grappe d’or­di­na­teurs distants, il convient par­fai­te­ment pour résoudre des problèmes né­ces­si­tant une forte puissance de calcul. Ce procédé est souvent utilisé pour des projets ambitieux dans le domaine scien­ti­fique ou pour décrypter des codes cryp­to­gra­phiques.

Le cluster computing n’est pas facile à dis­tin­guer du cloud computing et du grid computing. Ce terme a toutefois une sig­ni­fi­ca­tion plus générale et fait référence à toutes les formes re­grou­pant des or­di­na­teurs in­di­vi­duels et leurs capacités de calcul en un cluster (en français « grappe »). Il existe par exemple des clusters de serveurs, des clusters dans le Big Data et les en­vi­ron­ne­ments cloud, des clusters de bases de données ainsi que des clusters d’ap­pli­ca­tions. Par ailleurs, les grappes d’or­di­na­teurs par­ti­ci­pent de plus en plus au High per­for­mance computing qui permet de résoudre des problèmes de calcul par­ti­cu­liè­re­ment exigeants.

Dif­fé­rents types de Dis­tri­bu­ted computing peuvent également être observés lorsque les ar­chi­tec­tures de système et les modèles d’in­te­rac­tion d’une in­fras­truc­ture dis­tri­buée sont pris pour base. Du fait de la com­plexité des ar­chi­tec­tures de système du Dis­tri­bu­ted computing, on parle également de Dis­tri­bu­ted Systems (en français « systèmes dis­tri­bués »).

Parmi les modèles répandus d’ar­chi­tec­tures de Dis­tri­bu­ted computing, on trouve :

  • le modèle client-serveur
  • le modèle pair-à-pair
  • les ar­chi­tec­tures en couches
  • l’ar­chi­tec­ture orientée service (en anglais service-oriented ar­chi­tec­ture ou SOA)

Le modèle client-serveur est un modèle d’in­te­rac­tion et de com­mu­ni­ca­tion simple du Dis­tri­bu­ted computing. Un serveur reçoit une requête d’un client, réalise les pro­cé­dures de trai­te­ment cor­res­pon­dantes et envoie une réponse (message, données, résultats de calcul) au client.

Une ar­chi­tec­ture pair-à-pair organise les in­te­rac­tions et la com­mu­ni­ca­tion du calcul distribué selon des critères dé­cen­tra­li­sés. Tous les or­di­na­teurs (également appelés nœuds) sont égaux et assurent les mêmes tâches et fonctions au sein du réseau. Chaque or­di­na­teur est donc en mesure d’agir à la fois comme client et comme serveur. La blo­ck­chain des cryp­to­mon­naies est un exemple d’ar­chi­tec­ture pair-à-pair.

Dans une ar­chi­tec­ture en couches, les dif­fé­rents aspects d’un système logiciel sont répartis sur plusieurs couches (en anglais tier layer) ce qui permet d’augmenter l’ef­fi­ca­cité et la flexi­bi­lité du Dis­tri­bu­ted computing. On rencontre souvent cette ar­chi­tec­ture de système, qui peut comporter deux ou trois couches selon les besoins, dans les ap­pli­ca­tions Web.

Une ar­chi­tec­ture orientée service (SOA) met l’accent sur les services et est axée sur les besoins in­di­vi­duels et les processus d’une en­tre­prise. Les dif­fé­rents services peuvent ainsi être regroupés pour former un processus com­mer­cial sur mesure. Par exemple, le processus global « Commande en ligne » – im­pli­quant les services « En­re­gis­tre­ment de la commande », « Vé­ri­fi­ca­tion de la sol­va­bi­lité » et « Envoyer la facture » – est illustré dans un SOA. Les com­po­sants tech­niques (serveurs, bases de données, etc.) servent d’outils mais ne sont pas placés au premier plan. Dans ce concept de Dis­tri­bu­ted computing, la priorité est accordée à un re­grou­pe­ment, une col­la­bo­ra­tion et une or­ga­ni­sa­tion per­ti­nents des services dans le but d’atteindre un dé­rou­le­ment aussi efficace et fluide que possible pour les processus com­mer­ciaux.

Dans une ar­chi­tec­ture orientée service, on veille tout par­ti­cu­liè­re­ment à avoir des in­ter­faces bien définies afin de relier les com­po­sants de façon opé­ra­tion­nelle et d’augmenter l’ef­fi­ca­cité. La flexi­bi­lité du système contribue également à l’ef­fi­ca­cité puisque les services peuvent être utilisés de façon variée dans plusieurs contextes et réu­ti­li­sés dans les processus com­mer­ciaux. Les ar­chi­tec­tures orientées service s’appuyant sur le Dis­tri­bu­ted computing sont souvent basées sur des services Web. Elles sont par exemple réalisées sur des plates-formes dis­tri­buées comme CORBA, MQSeries et J2EE.

Les avantages du Dis­tri­bu­ted computing

Le calcul distribué présente de nombreux avantages. Les en­tre­prises peuvent dé­ve­lop­per une in­fras­truc­ture per­for­mante et abordable en utilisant des or­di­na­teurs courants peu coûteux avec des mi­cro­pro­ces­seurs à la place de su­pe­ror­di­na­teurs ex­trê­me­ment chers (main­frames). Les grands clusters peuvent même dépasser la per­for­mance de su­per­cal­cu­la­teurs in­di­vi­duels et parvenir à résoudre des tâches complexes et gour­mandes en puissance de calcul dans le domaine du High per­for­mance computing.

Les ar­chi­tec­tures du Dis­tri­bu­ted computing com­por­tent plusieurs com­po­sants, parfois re­don­dants. Il est donc plus facile de compenser la panne d’une unité in­di­vi­duelle (fiabilité accrue). Le haut niveau de ré­par­ti­tion des tâches permet de dé­lo­ca­li­ser les processus et de répartir la charge de calcul (ré­par­ti­tion de la charge).

De nom­breuses solutions du Dis­tri­bu­ted computing visent davantage de flexi­bi­lité aug­men­tant ainsi l’ef­fi­ca­cité et la ren­ta­bi­lité. Pour résoudre certains problèmes, il est possible d’intégrer des plates-formes spé­cia­li­sées comme des serveurs de bases de données. Par exemple, l’uti­li­sa­tion d’ar­chi­tec­tures SOA dans le secteur com­mer­cial permet de mettre en place des solutions in­di­vi­duelles op­ti­mi­sant certains processus com­mer­ciaux de façon spé­ci­fique. Les four­nis­seurs peuvent proposer leurs capacités de calcul et des in­fras­truc­tures dans le monde entier ce qui rend par exemple possible un travail sur le cloud. Une telle pos­si­bi­lité permet de réagir aux besoins des clients avec des offres et des tarifs éche­lon­nés et orientés sur les besoins.

La flexi­bi­lité du calcul distribué inclut la pos­si­bi­lité d’utiliser les capacités tem­po­rai­re­ment inu­ti­li­sées pour des projets par­ti­cu­liè­re­ment ambitieux. Les uti­li­sa­teurs et les en­tre­prises gagnent également en flexi­bi­lité dans l’ac­qui­si­tion du matériel puisqu’ils ne sont pas tenus de s’ap­pro­vi­sion­ner auprès d’un seul fabricant.

Par ailleurs, l’évo­lu­ti­vité est un avantage dé­ter­mi­nant. Les en­tre­prises peuvent s’adapter ra­pi­de­ment et à court terme ou adapter pro­gres­si­ve­ment la capacité de calcul né­ces­saire en cas de crois­sance organique continue. Si vous souhaitez vous appuyer sur votre propre matériel pour évoluer, le parc de machines peut être con­ti­nuel­le­ment élargi en procédant par des étapes suc­ces­sives abor­dables.

Malgré de nombreux avantages, le Dis­tri­bu­ted computing a également certains in­con­vé­nients, notamment un effort d’im­plé­men­ta­tion et de main­te­nance accru pour les ar­chi­tec­tures de système complexes. D’autre part, il est né­ces­saire de gérer les problèmes de timing et de syn­chro­ni­sa­tion entre les instances dis­tri­buées. En terme de fiabilité, une approche dé­cen­tra­li­sée comporte certains avantages par rapport à une instance de trai­te­ment unique. Le Dis­tri­bu­ted computing s’ac­com­pagne aussi de problèmes de sécurité, notamment en raison du transport des données via des réseaux publics et de leur vul­né­ra­bi­lité face à un sabotage ou un piratage. En général, les in­fras­truc­tures dis­tri­buées sont par ailleurs davantage sujettes aux erreurs puisqu’elles disposent d’un plus grand nombre d’in­ter­faces et donc de sources d’erreur po­ten­tielles au niveau du matériel et du logiciel. Du fait de la com­plexité des in­fras­truc­tures, le diag­nos­tic des problèmes et des erreurs est également plus compliqué.

Dans quelles si­tua­tions le Dis­tri­bu­ted Computing est-il utilisé ?

Que ce soit dans notre vie privée ou pro­fes­sion­nelle, le Dis­tri­bu­ted computing est aujourd’hui une tech­no­lo­gie de base de la nu­mé­ri­sa­tion. Sans les ar­chi­tec­tures client-serveur des systèmes dis­tri­bués, Internet et les services qui y sont proposés seraient im­pen­sables. Le Dis­tri­bu­ted computing in­ter­vient dans toutes les re­cherches Google lorsque des instances sous-trai­tantes du monde entier col­la­bo­rent pour générer un résultat pertinent. Google Maps et Google Earth reposent également sur le Dis­tri­bu­ted computing pour fournir leurs services.

De plus, les systèmes de mes­sa­ge­rie et de con­fé­rence, les systèmes de ré­ser­va­tion des com­pag­nies aériennes et des chaînes d’hôtels, les bi­blio­thèques et les systèmes de na­vi­ga­tion utilisent également les processus et les ar­chi­tec­tures du calcul distribué. Les processus d’au­to­ma­ti­sa­tion ainsi que les systèmes de pla­ni­fi­ca­tion, de pro­duc­tion et de con­cep­tion dans le monde du travail sont l’un des domaines d’ap­pli­ca­tion pri­vi­lé­giés de cette tech­no­lo­gie. D’autre part, les réseaux sociaux, les systèmes mobiles, les banques et les jeux en ligne (par ex. les systèmes mul­ti­joueurs) utilisent des systèmes dis­tri­bués efficaces.

Les plates-formes de e-learning, l’in­tel­li­gence ar­ti­fi­cielle et le e-commerce cons­ti­tuent d’autres domaines d’ap­pli­ca­tion du calcul distribué. Les achats et les processus de commande dans les boutiques en ligne reposent nor­ma­le­ment sur des systèmes dis­tri­bués. En mé­téo­ro­lo­gie, les systèmes de captage et de sur­veil­lance utilisés par les scien­ti­fiques pour prévoir les ca­tas­trophes s’appuient sur les capacités de calcul de systèmes dis­tri­bués. De nom­breuses ap­pli­ca­tions nu­mé­riques sont aujourd’hui basées sur les bases de données dis­tri­buées.

Par le passé, les projets de recherche né­ces­si­tant une puissance de calcul im­por­tante devaient utiliser des su­pe­ror­di­na­teurs coûteux (par exemple l’or­di­na­teur Cray). Aujourd’hui, ils peuvent être réalisés avec des systèmes dis­tri­bués à un prix avan­ta­geux. De 1999 à 2020, le projet « Volunteer Computing » Seti@home a fait figure de référence dans le domaine du calcul distribué. D’in­nom­brables or­di­na­teurs de par­ti­cu­liers ont analysé des données du ra­dio­té­les­cope d’Arecibo à Porto Rico et ont aidé l’Uni­ver­sité de Berkeley dans sa recherche d’une vie ex­tra­ter­restre.

La par­ti­cu­la­rité de ce projet résidait dans son approche pré­ser­vant les res­sources : le logiciel d’analyse tra­vail­lait uni­que­ment pendant des phases au cours desquels les or­di­na­teurs des uti­li­sa­teurs étaient inoccupés. Après l’analyse des signaux, les résultats étaient renvoyés à la centrale de Berkeley. Des projets com­pa­rables ont été lancés dans le monde entier par d’autres uni­ver­si­tés et instituts.

Conseil

Les bases du Dis­tri­bu­ted computing sont ex­pli­quées de façon claire dans plusieurs vidéos ex­pli­ca­tives de la chaîne YouTube d’Education 4u.

Aller au menu principal