Scalabilité horizontale

Définition, exemples et bonnes pratiques

À retenir

  • On ajoute des machines (nœuds) plutôt que de booster un seul serveur.
  • Permet une tolérance aux pannes : si un serveur tombe, les autres continuent le travail.
  • Offre une croissance de puissance virtuellement illimitée.

La scalabilité horizontale consiste à augmenter la capacité d'un système informatique en lui ajoutant de nouvelles machines plutôt qu'en améliorant la puissance d'une seule. C'est comme ouvrir de nouvelles caisses dans un supermarché pour réduire la file d'attente au lieu d'essayer de trouver un caissier qui travaille dix fois plus vite.

Étymologie

Vient de l'anglais scalability (de scale, l'échelle). L'adjectif « horizontale » illustre une expansion en largeur : on aligne plusieurs serveurs côte à côte pour répartir l'effort de calcul.

Exemples d'usage

  • Un site de e-commerce qui active 20 serveurs supplémentaires lors du Black Friday pour ne pas planter.
  • Le moteur de recherche Google qui utilise des milliers de serveurs standards pour traiter les requêtes mondiales simultanément.

Cas d'usage

Elle est incontournable dans le Cloud Computing et pour les sites web à très forte audience. On l'utilise aussi pour les bases de données dites « distribuées » qui doivent stocker des volumes massifs d'informations (Big Data).

Bonnes pratiques

Pour qu'un système soit scalable horizontalement, l'application doit être idéalement stateless (sans état local), afin que n'importe quel serveur puisse répondre à n'importe quel utilisateur. L'utilisation d'un répartiteur de charge (load balancer) est indispensable pour distribuer le trafic entre les machines.

Synonymes

mise à l'échelle horizontale scale-out

Antonymes

scalabilité verticale scale-up

Conseil

Si vous développez une application, évitez de stocker des fichiers ou des sessions directement sur le disque dur du serveur. En utilisant des services externes pour le stockage, votre application pourra être dupliquée sur 100 serveurs sans aucun problème.

Questions fréquentes

Quelle est la différence avec la scalabilité verticale ?

La verticale (scale-up) consiste à ajouter de la RAM ou un processeur plus puissant à une seule machine, alors que l'horizontale (scale-out) multiplie le nombre de machines.

Est-ce que c'est plus complexe ?

Oui, car il faut gérer la communication entre les machines et s'assurer que les données sont synchronisées partout.