Un bon indice de succès pour une application est la mesure de son usage :

  • la fréquentation, le nombre des utilisateurs, le niveau d’utilisation,
  • le volume de données des données saisies, consultées et manipulées.

À mesure que la fréquentation augmente, ou en cas de succès rapide :

  • Comment ne pas se retrouver la victime de son propre succès ?
  • Comment l’application peut-elle maintenir son niveau de performance et rester attractive ?
  • Comment donner la capacité de traitement supplémentaire à l’application ?

Vous avez dit ‘scalabilité’ ?

La scalabilité d’une application, c’est l’aptitude de l’application à maintenir son niveau de performance face à une augmentation de la charge (ou de la volumétrie de données), et ceci par augmentation de la capacité des ressources hardware, et sans modification de l’application elle-même.

Du hardware plus puissant…

La scalabilité verticale consiste à augmenter unitairement la capacité d’une ressource hardware.

Dans le cas d’un serveur, il s’agit, par exemple :

  • d’augmenter la fréquence du processeur,
  • d’ajouter d’avantage de mémoire,
  • de changer les disques pour des disques plus rapides.

Dans bien des applications Web, l’unique serveur de base de données ne peut bien souvent bénéficier que de ce mode de scalabilité.

Ou plus de hardware

La scalabilité horizontale consiste à augmenter le nombre des ressources hardware.

Toujours dans la plupart des applications Web, il s’agit d’ajouter des instances de serveur d’applications supplémentaires. Le load balancer se charge de répartir la charge sur d’avantage de serveurs d’applications.

Scalabilité verticale, le maillon faible

La scalabilité d’une application est égale à la scalabilité de son composant le moins scalable.

Au niveau du serveur d’applications, lorsque la fréquentation augmente, il suffit de rajouter autant de serveurs d’applications que nécessaire. Le load balancer joue le rôle de répartiteur devant une batterie de serveurs d’applications. La scalabilité horizontale est linéaire. Pour une fréquentation 5 fois plus élevée, il faudra vraisemblablement 5 fois plus de serveurs. En théorie, il n’y a pas de limite à cette approche. La scalabilité est théoriquement infinie. Chacun des serveurs d’applications ne partage en effet aucune ressources matérielles avec l’autre.

Mais, attendez ! Le serveur d’application accède pratiquement toujours à une base de données, hébergée dans la majorité des cas sur un serveur unique. Et qui dit serveur unique dit scalabilité verticale uniquement. Et là, tout va bien tant qu’il existe sur le marché une machine plus puissante. Mais à quel prix ? Et que faire dans le cas contraire ?

Au final, la scalabilité infinie des serveurs d’application risque bien d’être mise en péril par la scalabilité somme toute limitée du serveur de base de données.

Éviter l’épuisement dans la course aux armements

Avec la scalabilité horizontale, si vous avez besoin de 5 fois plus de puissance de feu, vous gardez vos dix canons, et vous en achetez 40 autres à peu près identiques. Et bonne nouvelle, le prix unitaire du canon aura souvent baissés entre-temps sur le marché.

Avec la scalabilité verticale, vous jetez votre gros canon, et vous le remplacez par un très gros canon, 5 fois plus puissant. En supposant que la Grosse Bertha existe bien sur le marché, elle vous coutera beaucoup plus que 5 fois plus cher, et d’autant plus cher (exponentiellement plus cher) à mesure que vous approcherez des limites de ce que le marché peut vous offrir.

Dans ce second cas, il y a bel et bien un risque d’impasse technique, et d’épuisement budgétaire.

La tête dans les nuages et les pieds sur terre

Trois grandes tendances viennent planter quelques clous supplémentaires dans le cercueil de la scalabilité verticale :

  • La scalabilité verticale se heurte actuellement à un mur technique. Ainsi, les processeurs eux-mêmes font maintenant appel à la scalabilité horizontale avec des cœurs multiples.
  • Le modèle de scalabilité du cloud computing est la scalabilité horizontale et non la scalabilité verticale.
  • Les bases de données à scalabilité horizontale sont en train d’arriver progressivement sur le marché, portées par le cloud.

Chacun de ces aspects mériterait un billet en soi. Voilà qui augure d’une suite. Et que de choses à dire sur le retentissement de la scalabilité horizontale sur l’architecture des applications…