Les systèmes distribués peuvent être complexes. Mais heureusement, le concept, lui, est très simple !
Un système distribué est tout simplement un environnement dans lequel une multiplicité d’ordinateurs et d’appareils accomplissent des tâches et remplissent des fonctions diverses, et sont répartis sur un réseau. Les composants des systèmes distribués répartissent le travail et coordonnent les efforts afin de réaliser une tâche donnée plus efficacement qu’une seule machine.
On comprend alors pourquoi les systèmes sont de plus en plus distribués : Internet nous permet à tous de travailler à distance, et beaucoup de tâches de calcul effectuées aujourd’hui sont trop complexes pour être traitées par un ordinateur isolé. C’est un avantage considérable de pouvoir travailler efficacement dans plusieurs régions du monde et avec des équipes dispersées. Et nous ne pourrions pas le faire sans les systèmes distribués.
Dans cet article, nous allons aborder le fonctionnement de ces systèmes, les défis et les risques de ces plateformes et les nombreux avantages de l’informatique distribuée.
Traditionnellement, l’informatique distribuée coûtait très cher et était aussi complexe à configurer que difficile à gérer. Mais avec l’avènement des solutions SaaS, l’informatique distribuée s’est simplifiée et est devenue plus abordable pour des entreprises de toute taille et de tous les secteurs.
De la gestion des bases de données aux jeux vidéo, toutes les catégories de tâches informatiques utilisent aujourd’hui l’informatique distribuée. Il faut savoir que de nombreux types de logiciels, comme les systèmes de cryptomonnaie, les simulations scientifiques, la blockchain et les plateformes d’IA ne pourraient pas exister du tout sans la distribution.
Les systèmes distribués sont utilisés lorsqu’un workload est trop important pour être géré par un seul ordinateur ou une seule machine. Ils sont essentiels dans les situations où le workload peut connaître une évolution rapide, comme un pic de demande pendant le Cyber Monday ou des visites massives sur votre site après une annonce concernant votre entreprise.
Parce qu’ils s’appuient sur les capacités d’autres appareils et processus informatiques, les systèmes distribués peuvent offrir des fonctionnalités difficiles, voire impossibles, à développer sur un système unique.
Cela inclut par exemple l’exécution d’une sauvegarde de serveurs et d’applications hors site : si le catalogue principal ne voit pas les octets de segment dont il a besoin pour une restauration, il peut demander aux autres nœuds distants d’envoyer les segments. Actuellement, tout ce que vous faites ou presque avec un appareil informatique exploite la puissance des systèmes distribués, qu’il s’agisse d’envoyer un e-mail, de jouer à un jeu ou de lire cet article sur le Web.
En voici quelques exemples courants :
La tâche est le point de départ d’un système distribué. Imaginons que vous deviez faire le rendu d’une vidéo afin de créer un produit fini.
L’application (ou les applications distribuées) qui gère cette tâche, un éditeur vidéo sur un ordinateur client par exemple, divise le travail en plusieurs éléments. Dans cet exemple simple, le travail est réparti entre une dizaine d’ordinateurs, ou nœuds. L’algorithme confie une image de la vidéo à chacun de ces ordinateurs pour qu’il en fasse le rendu. Une fois l’image produite, l’application qui supervise l’opération leur donne une nouvelle image à traiter. Le processus se poursuit jusqu’à ce que la vidéo soit terminée et que tous les éléments aient été assemblés.
Un système de ce type n’a pas besoin de se limiter à 12 nœuds : la tâche peut être répartie entre des centaines ou des milliers de nœuds, ce qui permet d’accomplir en quelques minutes ce qui aurait pris plusieurs jours à un ordinateur seul.
Lorsque l’on réfléchit aux défis d’une plateforme informatique distribuée, l’astuce consiste à la décomposer en une série de modèles interconnectés. En effet, réduire le système en composants plus petits, plus gérables et plus faciles à comprendre permet d’abstraire une architecture complexe. On utilise couramment des modèles pour décrire les systèmes distribués :
On utilise différentes combinaisons de modèles pour concevoir des systèmes distribués, et chaque approche a ses avantages et ses inconvénients.
On rencontre actuellement une grande diversité de modèles et d’architectures de systèmes distribués.
Vous l’avez certainement compris : à l’heure actuelle, les formes les plus courantes de systèmes distribués dans l’entreprise sont celles qui fonctionnent sur le Web, transférant les workloads à des dizaines d’instances de serveur virtuelles basées dans le cloud et créées au fil des besoins, puis arrêtées une fois la tâche terminée.
Maintenant que nous avons une bonne idée de ce que sont les systèmes distribués, voyons quelles sont leurs caractéristiques. Les bons systèmes distribués ont plusieurs points communs :
Évolutivité : la capacité à croître à mesure que la taille du workload augmente est une caractéristique essentielle des systèmes distribués, qui s’obtient en ajoutant des unités de traitement ou des nœuds supplémentaires au réseau en fonction des besoins.
Concurrence : les composants du système distribué s’exécutent simultanément. Ils se caractérisent également par l’absence d’« horloge globale », les tâches se produisant dans le désordre et à des rythmes différents.
Disponibilité et tolérance aux défaillances : si un nœud subit une interruption, les nœuds restants peuvent continuer à fonctionner sans perturber le calcul global.
Hétérogénéité : dans la plupart des systèmes distribués, les nœuds et les composants sont souvent asynchrones et répartis sur des machines, du middleware, des logiciels et des systèmes d’exploitation différents. Cela permet d’élargir les systèmes distribués en ajoutant de nouveaux composants.
Réplication : les systèmes distribués permettent le partage des informations et des messages dans un objectif de cohérence des ressources redondantes telles que les composants logiciels ou matériels, ce qui améliore la tolérance aux défaillances, la fiabilité et l’accessibilité.
Transparence : l’utilisateur final voit le système distribué comme une unité de calcul unique et non comme ses parties sous-jacentes, ce qui lui permet d’interagir avec un seul périphérique logique sans avoir à se préoccuper de l’architecture du système.
Les systèmes distribués offrent un certain nombre d’avantages par rapport aux systèmes monolithiques ou uniques :
Les systèmes distribués sont considérablement plus complexes que les environnements informatiques monolithiques et présentent un certain nombre de défis en matière de conception, d’exploitation et de maintenance, parmi lesquels :
Risques d’interruptions accrus : la probabilité d’interruption augmente avec l’ajout de nouveaux systèmes à un environnement informatique. Sans une conception soigneuse, la défaillance d’un seul nœud peut entraîner l’arrêt du système complet. Si les systèmes distribués sont conçus pour être tolérants aux interruptions, cette caractéristique n’est ni automatique ni infaillible.
Défis du processus de synchronisation : les systèmes distribués fonctionnent sans horloge globale, imposant une programmation minutieuse pour assurer la synchronisation correcte des processus et ainsi éviter les retards de transmission qui entraîneraient des erreurs et la corruption des données. Dans un système complexe, un jeu vidéo multijoueur par exemple, la synchronisation peut être difficile, en particulier sur un réseau public.
Évolutivité imparfaite : doubler le nombre de nœuds d’un système distribué ne double pas nécessairement les performances. La mise au point d’un système distribué efficace qui maximise l’évolutivité est une entreprise complexe qui doit prendre en compte l’équilibrage de charge, la gestion de la bande passante et d’autres problématiques.
Sécurité plus complexe : la gestion d’un grand nombre de nœuds dans un environnement hétérogène ou distribué à l’échelle mondiale crée de nombreux défis de sécurité. Un seul maillon faible dans un système de fichiers ou un réseau plus vaste de systèmes distribués peut exposer l’ensemble du système à des attaques.
Complexité accrue : les systèmes distribués sont plus complexes à concevoir, à gérer et à comprendre que les environnements informatiques traditionnels.
Les défis des systèmes distribués engendrent un certain nombre de risques.
(Découvrez les dernières tendances des coûts du cloud.)
Les déploiements distribués peuvent prendre la forme de petits déploiements à service unique sur des réseaux locaux ou de déploiements mondiaux à grande échelle. En plus de leur taille et de leur complexité globale, les entreprises peuvent évaluer les options de déploiement en fonction de :
Les déploiements distribués sont classés en fonction de leur envergure : service, petite entreprise, moyenne entreprise ou grande entreprise. Si ces catégories n’ont rien d’officiel, elles offrent néanmoins un point de départ pour planifier les ressources nécessaires à la mise en œuvre d’un système informatique distribué.
Les systèmes distribués peuvent également évoluer au fil du temps et gagner progressivement de l’envergure, passant de l’échelle du service à celui de la petite entreprise.
Une chose est claire : en contrepartie de tous leurs avantages, les systèmes distribués sont complexes. Et il est nettement avantageux de savoir ce qui s’y passe : c’est ce qu’on appelle l’observabilité du système. Heureusement, il existe un moyen d’y parvenir, et c’est le traçage distribué.
Sans traçage distribué, un environnement système distribué d’envergure internationale serait impossible à superviser efficacement.
Le traçage distribué, parfois appelé traçage des requêtes distribuées, est une méthode de supervision des applications, en particulier celles qui reposent sur une architecture de microservices et sont couramment déployées sur des systèmes distribués. Le traçage distribué est essentiellement une forme d’informatique distribuée dans la mesure où il est couramment employé pour superviser les opérations des applications s’exécutant sur des systèmes distribués.
Dans le développement et l’exploitation de logiciels, le traçage permet de suivre le parcours d’une transaction dans une application. Il peut s’agir, par exemple, d’une transaction par carte de crédit en ligne, qui va de l’achat initial du client, passe par le processus de vérification et d’approbation, jusqu’à l’aboutissement de la transaction. Un système de traçage supervise ce processus étape par étape, aidant un développeur à découvrir les bugs, les goulots d’étranglement, la latence et autres problèmes touchant l’application.
Le traçage distribué est rendu indispensable par la complexité considérable des architectures logicielles modernes. Un système de traçage distribué est conçu pour fonctionner sur une infrastructure de services distribués, dans laquelle il peut suivre plusieurs applications et processus simultanément sur de nombreux nœuds et environnements informatiques concurrents.
Les administrateurs emploient diverses approches pour gérer le contrôle des accès dans les environnements informatiques distribués, des traditionnelles listes de contrôle d’accès (ACL) au contrôle d’accès basé sur les rôles (RBAC).
L’un des mécanismes les plus prometteurs pour les systèmes distribués est le contrôle d’accès basé sur les attributs (ABAC), qui contrôle l’accès aux objets et aux processus à l’aide de règles incluant des informations sur l’utilisateur, l’action demandée et l’environnement de la requête. Les administrateurs peuvent également affiner ces types de rôles pour restreindre l’accès à certaines heures de la journée ou à certains emplacements.
Les systèmes distribués sont bien placés pour dominer l’informatique telle que nous la connaissons dans un avenir proche, et quasiment tous les types d’applications ou de services sont destinés à incorporer une forme de calcul distribué. L’impératif de disponibilité permanente et d’omniprésence de l’informatique explique la force de cette tendance.
Une erreur à signaler ? Une suggestion à faire ? Contactez-nous à l’adresse ssg-blogs@splunk.com.
Cette publication ne représente pas nécessairement la position, les stratégies ou l’opinion de Splunk.
La plateforme Splunk élimine les obstacles qui séparent les données de l'action, pour donner aux équipes d'observabilité, d'IT et de sécurité les moyens de préserver la sécurité, la résilience et le pouvoir d'innovation de leur organisation.
Fondée en 2003, Splunk est une entreprise internationale. Ses plus de 7 500 employés, les Splunkers, ont déjà obtenu plus de 1 020 brevets à ce jour, et ses solutions sont disponibles dans 21 régions du monde. Ouverte et extensible, la plateforme de données Splunk prend en charge les données de tous les environnements pour donner à toutes les équipes d'une entreprise une visibilité complète et contextualisée sur l'ensemble des interactions et des processus métier. Splunk, une base solide pour vos données.