Chamagne Bastien
Développeur indépendant à Pau

Systèmes distribués

Système Distribué

Définition : Un système distribué est un ensemble de programmes informatiques qui utilisent des ressources informatiques sur plusieurs nœuds de calcul distincts pour atteindre un objectif commun et partagé. Les systèmes distribués visent à éliminer les goulots d’étranglement ou les points centraux de défaillance d’un système. — Atlassian

La notion de nœud est vague et a évolué avec le temps. Il peut s’agir d’une machine physique, d’une machine virtuelle ou même d’un processus d’un système. Pour cette définition, un nœud est une machine physique.

Le contraire d’un système distribué est un système centralisé. Dans celui-ci, il n’y a qu’un seul nœud qui s’occupe de maintenir l’état et de répondre aux clients (machines ou utilisateurs). Par définition, il est donc un Single Point Of Failure.

Voici quelques exemples d’architectures distribuées :

Objectif

Le système distribué permet le scaling horizontal (scale out). Le scaling horizontal, c’est quand on augmente les performances d’un système en augmentant le nombre de nœuds. À l’inverse, le scaling vertical (scale up) est l’augmentation des performances d’un système en améliorant son hardware (RAM, CPU, GPU…) ou sa bande passante. Le second étant bien plus limité que le premier.

Le système distribué le plus simple

Le système distribué le plus simple est donc composé de 2 nœuds qui sont une copie l’un de l’autre. Si l’un défaille, l’autre prend le relais. Évidemment, cette approche est naïve et ne scalera que très peu : dès qu’il sera impossible pour un nœud de stocker l’entièreté des données, il ne sera plus possible d’uniquement faire des copies : il faudra fragmenter les données en shard.

Le système distribué le plus complexe

Un système distribué bien conçu peut ajouter ou supprimer des nœuds à la volée en fonction de la demande. Il s’occupera de faire les migrations de données automatiquement et aucune intervention humaine n’est requise. Les clouds (AWS, GCP, Azure, etc.) sont des exemples concrets de systèmes distribués complexes.

Avantages

Inconvénients