# Extensibilité

En informatique matérielle et logicielle et en télécommunications, l’extensibilité$^,$ ou scalabilité désigne la capacité d'un produit à s'adapter à un changement d'ordre de grandeur de la demande (montée en charge), en particulier sa capacité à maintenir ses fonctionnalités et ses performances en cas de forte demande.
Selon René J. Chevance, le mot anglais scalability, formé sur l'adjectif scalable dérivé du verbe to scale (« changer d'échelle »), « n'a pas d'équivalent communément admis en français ». Les traductions utilisées sont extension graduelle, évolutivité, facteur d'échelle, extensibilité, passage à l'échelle, ou capacité à monter en charge. En radio-télévision, on parle d’échelonnabilité. Le calque français scalabilité est également utilisé, ou bien le mot anglais scalability est conservé tel quel.
La scalabilité peut faire référence à la capacité d’un système à accroître sa capacité de calcul sous une charge accrue quand des ressources (généralement du matériel) sont ajoutées. L’expression porte un sens similaire quand elle est utilisée dans un contexte commercial, quand l’extensibilité d’une entreprise implique que le modèle économique offre le potentiel d’une croissance économique pour l’entreprise.
Cet aspect doit être étudié de près dans tout service réseau, sujet en particulier à des afflux très brusques de trafic (ex. : publicité télévisée, réaction à une actualité sensible, début d'un évènement sportif, effet Slashdot, etc.), lesquels peuvent provoquer une augmentation importante du temps de réponse entraînant le découragement des usagers, une baisse de rentabilité, et parfois jusqu'à l'impossibilité technique de servir tous les clients.

## Introduction

La « scalabilité » est la capacité d'un dispositif informatique à s'adapter au rythme de la demande. La capacité du matériel étant fixe, en particulier le débit binaire des réseaux et des disques durs, il existe une limite dans le nombre de demandes qui peuvent être traitées dans un temps donné. Au-dessus de cette limite les demandes sont multiplexées et la concurrence entre les demandes traitées simultanément provoque des délais d'attente supplémentaires qui font effet de goulot d'étranglement$^,$.
L'évolutivité est une caractéristique cruciale de tous les services réseau, sans laquelle le service peut se retrouver victime de son succès. La popularité élevée d'un service peut apporter des difficultés techniques qui entraînent un coût élevé de maintenance. Sous l'effet de l'arrivée de nouveaux clients, le fournisseur peut se retrouver en difficulté économique voire dans l'impossibilité technique de servir à la fois les nouveaux et les anciens clients.
La scalabilité est une capacité recherchée des applications de base de données, des moniteurs de transactions et des systèmes d'exploitation. Le système d'exploitation étant l'intermédiaire obligé entre les applications et le matériel, la « scalabilité » de ce dernier est d'une importance critique — mais largement ignorée — pour la scalabilité de l'ensemble du système informatique.

## Matériel

Le matériel informatique doit non seulement être suffisant pour faire face au débit actuel de la demande, mais, dans une perspective d'évolutivité, également être en mesure d'accepter des ajouts de pièces pour faire face à une demande accrue.
Les processeurs sont des composants onéreux d'un serveur informatique, et leur nombre sera souvent limité soit par leur architecture matérielle — nombre de processeurs — soit par la baisse des performances unitaires due à la répartition de charge sur plusieurs machines physiques plus ou moins éloignées. Il en va de même pour d'autres pièces de matériel informatique.
L'évolutivité horizontale consiste à ajouter des ordinateurs pour faire face à une demande accrue d'un service. La méthode la plus courante est la répartition de charge par utilisation d'une grappe de serveurs. C'est une technique couramment utilisée par les serveurs web.
L'évolutivité verticale consiste à utiliser un ordinateur qui offre de nombreuses possibilités d'ajout de pièces, sur lequel il est possible de mettre une grande quantité de mémoire, de nombreux processeurs, plusieurs cartes mères et de nombreux disques durs. Par exemple un ordinateur Sun Enterprise peut contenir jusqu'à 64 processeurs, 16 cartes mères, 64 Go de mémoire et des baies de stockage. L'ensemble tout équipé peut coûter jusqu'à un million de dollars.
L'évolutivité architecturale consiste à prévoir d'emblée une application pour qu'elle puisse être répartie sur plusieurs machines sans réécriture. Le fonctionnement en mode client-serveur ajoute une excellente flexibilité dans ce domaine : serveurs web, serveurs applicatifs, serveurs de bases de données dupliqués là où les journaux système indiquent un sous-dimensionnement à mesure que la fréquentation augmente au cours du temps, et uniquement là.

## Logiciels

Quelles que soient la taille et la complexité d'un logiciel, ses fonctionnalités, ses performances, son extensibilité et son coût doivent correspondre aux attentes de l'utilisateur final. Dans le domaine des bases de données, les applications de traitement transactionnel en ligne sont particulièrement concernées.
Les mesures d'extensibilité font ressortir la variation de la performance du logiciel en fonction de l'augmentation de la demande. Le consommateur s'attend généralement à ce que la performance (le temps de réponse) ne varie pas tant que la charge (le nombre d'opérations par seconde) n'atteint pas la valeur nominale que le produit est censé supporter.
Les mesures d'extensibilité s'intéressent au seuil à partir duquel la performance commence à se dégrader ainsi que la vitesse de la dégradation par rapport à l'augmentation de la demande.
Il y à défaut d'extensibilité de type 1 lorsque la performance se détériore rapidement avec l'augmentation de la demande avant d'avoir atteint le niveau nominal et que le défaut peut être corrigé par des opérations de paramétrage et d'optimisation.
Il y à défaut d'extensibilité de niveau 2 lorsque la performance se détériore jusqu'à devenir inacceptable, et qu'aucune amélioration ne peut être apportée, pas même le remplacement du matériel informatique. Le seul moyen de corriger un tel défaut nécessite de coûteuses remises en question de l'architecture du produit. Un produit présentant ce type de défaut est considéré comme non extensible.
De nombreuses applications client-serveur sont construites en mode de communication synchrone : la partie client envoie une demande à la partie serveur, puis attend jusqu'à ce qu'elle reçoive le résultat. Ce mode est plus simple à mettre en œuvre, mais provoque des temps de latence qui sont perçus par l'utilisateur comme un manque d'évolutivité. Le mode asynchrone permet d'effectuer des opérations durant les temps de latence et de multiplexer le traitement des demandes ; ce mode est utilisé dans les applications à fils d'exécution multiple, les services web et la programmation événementielle.
Une technique en vue d'augmenter la résistance à une forte demande d'un logiciel consiste à pré-réserver un groupe de ressources qui sont continuellement disponibles pour multiplexer les demandes en cas de besoin et ainsi économiser le temps qui aurait été nécessaire pour des réservations au besoin. Cette technique de pooling est utilisée notamment pour la connexion aux bases de données.
L'utilisation de files d'attente, l'architecture orientée services, l'utilisation de services web et de systèmes de gestion de base de données influencent l'extensibilité d'un logiciel.

## Télécommunications

L'industrie des télécommunications est particulièrement concernée par l'évolutivité et la fiabilité des réseaux qui sont amenés à servir un très grand nombre de clients. Une dorsale doit pouvoir supporter le trafic provenant de plusieurs services et fournir de très nombreux clients sans qu'il soit nécessaire d'ajouter des équipements.
Les lignes de télécommunication desservent généralement à la fois la téléphonie, le réseau Internet et les réseaux informatiques privés. Les fournisseurs de télécommunication cherchent à diminuer les coûts de maintenance du réseau tout en fournissant tous les services demandés par les consommateurs. L'évolutivité d'un réseau concerne autant la résistance au changement d'ordre de grandeur du débit binaire du réseau que du nombre d'abonnés.
Dans les réseaux publics ayant de très nombreux abonnés (téléphonie, Internet), on s'attend à ce que le remplacement du terminal soit une mesure suffisante pour adapter le réseau à la demande. Vu que tous les clients ne remplacent pas leur terminal en même temps, le réseau doit pouvoir exploiter simultanément différentes générations de terminaux.