Lorsqu’on utilise une application connectée très populaire et que l’outil nous offre une grande disponibilité et une fluidité optimale en toutes circonstances, on n’y pense pas vraiment, mais dans les coulisses, il s’agit d’une prouesse technologique que l’on désigne par la scalabilité de ladite application. Néanmoins, cette illustration simplifiée ne peut suffire pour définir ce qu’est la scalabilité d’une application. Derrière cet arbre se cache toute une forêt et on associe également de nombreux préceptes, dont la gestion des flux à cette expression. Focus sur la scalabilité, le Graal des développeurs d’applications grand public…
Définition de la scalabilité d’une application
Le terme scalabilité est utilisé dans de nombreux domaines, mais en ce qui concerne le développement d’applications, elle désigne la capacité de l’application à fonctionner correctement malgré un très grand nombre d’utilisateurs qui la sollicitent simultanément. Une application qui a du mal à s’adapter à la charge pendant les périodes de pics aura un temps de réponse important et des difficultés à fonctionner. Ce qui n’est jamais sans conséquences sur l’image de l’entreprise. Sans parler des manques à gagner en termes de chiffre d’affaires. La notion de scalabilité est de la plus haute importance pour les plateformes ou services qui gèrent des flux majeurs, comme les sites e-commerce, les services de streaming ou les jeux en ligne, entre autres.
Les charges ne sont pas uniquement le fruit de l’usage des individus, elles peuvent être générées par des programmes externes qui utilisent les services de l’application en tant qu’API web. C’est le cas de nombreux services connectés BtoB.
Le terme scalabilité est associé aux notions d’évolutivité, de résilience et d’élasticité. Le niveau de scalabilité d’une application est mesuré en nombre de requêtes par seconde ou en nombre de pages par seconde.

Scalabilité verticale et scalabilité horizontale
Lorsque la charge du serveur commence à s’alourdir, il faut réagir en rajoutant des ressources matérielles l’infrastructure. Les entreprises ont alors le choix entre deux stratégies de scalabilité : la scalabilité verticale et la scalabilité horizontale.
La scalabilité verticale ou approche scale-in
Cette technique consiste à augmenter les ressources de calcul à l’infrastructure, sans la modifier intrinsèquement. Les serveurs sont alors sollicités individuellement pour l’ajout des ressources (en boostant sa mémoire vive et son CPU par exemple). Les données restent sur un seul nœud pour gérer l’augmentation du workload. Il s’agit donc de rehausser la capacité logicielle, id est matérielle.
Cette solution est la plus intuitive et la plus simple à mettre en œuvre donc rapide, mais elle est techniquement limitée. Elle convient surtout aux activités des PME, encore faut-il y mettre le prix puisque cette solution peut s’avérer couteuse. En effet, son cout est proportionnel à la capacité matérielle. Il est important de noter que la scalabilité verticale présente un risque de downtime. Un mauvais approvisionnement des ressources, couplé à une hausse importante des charges après l’intervention peut nuire au bon fonctionnement de l’application.
La scalabilité horizontale ou approche scale-out
Cette approche se différencie fondamentalement de la première dans la mesure où elle multiplie les nœuds de calcul. La solution consiste à rajouter de nouveaux serveurs (standards ou commodity hardware dans le jargon) pour réaliser le même type de tâche. Le bon fonctionnement de cette méthode dépend de quelques conditions. Tout d’abord, l’application doit être sans état (stateless). Dans le cas d’un stockage de données en local, le sharding (regroupement des données en blocs indépendants) est requise et il faudra s’assurer que chaque client n’use que d’un seul et unique serveur. À défaut de pouvoir sharder vos données, vous devez modifier l’application en profondeur ou vous limiter à de la scalabilité verticale.
Un scaling hybride
Horizontal ou vertical, chaque type de scaling présente des avantages. Il est également possible d’alterner entre les deux, selon les besoins. Cette stratégie hybride est très prisée par les administrateurs dans le domaine des datacenters, car elle offre plus de flexibilité. Cela permet de bénéficier du meilleur des deux mondes.

Les bases d’une application scalable ?
Pour proposer une application scalable, vous devez avant tout penser à son architecture. Plus concrètement, vous devez faire en sorte que chaque brique de l’architecture soit individuellement scalable. Dans son ensemble, le système doit être capable d’évoluer pour s’adapter en fonction de la charge. Cette recherche de la scalabilité à petite échelle, sans mauvais jeu de mots, doit également concerner le code source de l’application.
Dans la même logique, il est important de veiller à ce que les performances unitaires soient optimisées avant la mise en à l’échelle. L’application doit également être divisée en plusieurs services pour faciliter la mise à l’échelle. Chaque service et brique doit être observée grâce au monitoring, car chacun d’eux peut représenter le maillon faible du système. Les experts le confirment, la scalabilité dépend de la performance de ce maillon faible.
Bien évidemment, un code de haute qualité sera déterminant pour une scalabilité élevée. Cela permet de minimiser les risques de bugs ou d’exceptions, qui consomment toujours une grande partie des ressources. Dans l’idéal, le code doit être stateless.
Construire votre infrastructure scalable grâce à h8lio
Mettre en place la scalabilité de ses applications lorsqu’on dispose d’une architecture classique (et non d’un service cloud) demande un investissement important puisqu’il faut des datacenters, des équilibreurs de charge haute capacité (load balancer), des outils de cybersécurité, etc.
La gestion des flux pendant les périodes de pics d’utilisation passe par l’amélioration de la capacité de serveur, ce qui coute toujours cher. Ceux qui désirent rationnaliser leurs dépenses optent généralement pour un achat qui tient compte des besoins en puissance moyennés. Cette pratique expose à des risques importants, lorsqu’arrivent les pics de trafic.
h8lio dispose des infrastructures capables de faire de vos applications des outils scalables et résilients. L’hébergement de vos applications dans le cloud h8lio offre la stabilité et la fiabilité nécessaires pour satisfaire tous ses utilisateurs répartis dans le monde entier à tout moment. L’outil d’auto-scaling ajuste de manière dynamique et intelligente les ressources qu’il faut pour le bon fonctionnement de l’application. En cas d’augmentation de la charge, l’outil alloue des ressources supplémentaires pour supporter le surplus de charges et les supprime aussitôt lorsque le trafic baisse pour minimiser les couts d’infrastructure : automatiser et délégué mais dans un cadre (plafond et plancher) défini par les équipes !



