Horizontal Scaling : Définition, particularités et avantages

-
7
 m de lecture
-

Le scaling horizontal consiste à ajouter des machines supplémentaires à une infrastructure, pour s'adapter à la hausse de demande sur une application ou un site web. Découvrez tout ce que vous devez savoir sur cette méthode d'extension, sa différence avec le scaling vertical, et ses cas d'usage sur le cloud ou dans le domaine de la Data Science !

Le succès d’un site, d’un service web ou d’une application dépend fortement du volume de trafic réseau pouvant être supporté. Il n’est pas rare de sous-estimer la demande, et ceci peut découler sur un crash de serveur ou une baisse de la qualité de service.

Dans le domaine de l’ingénierie logicielle, la planification de capacité est essentielle. Même en cas de pic de trafic imprévu sur une application ou un site web, les ressources adéquates doivent être en place pour supporter la charge.

En cas de hausse de la demande, il est nécessaire d’accroître l’accessibilité, la capacité de stockage et les niveaux de disponibilité. Toutefois, il peut être difficile de choisir entre un scaling (mise à l’échelle) horizontal ou vertical.

Ce choix dépend de nombreux facteurs comme la vitesse d’augmentation du volume de requête, ou le degré de dégradation de service causé par les pics de croissance. Il est impératif de prendre en compte tous ces critères et les particularités de l’application concernée pour sélectionner la méthode optimale…

Qu'est-ce que la scalabilité ?

La scalabilité est l’élasticité d’un système. On la définit souvent comme la capacité d’un système à croître, mais elle inclut aussi sa capacité à diminuer ou à s’étendre horizontalement.

Il s’agit donc de la capacité du système à s’adapter au changement et à la demande. Ceci permet d’éviter les temps d’indisponibilité et d’assurer la qualité du service.

La scalabilité d’une application est le nombre de requêtes qu’elle peut supporter simultanément. Sa limite est le point auquel l’application ne peut plus prendre en charge de requête supplémentaire.

Cette limite est atteinte quand une ressource hardware essentielle est épuisée. Il est alors nécessaire d’ajouter des machines supplémentaires, ou d’opter pour des machines différentes.

Le scaling des ressources peut inclure l’ajustement de différents éléments. Pour le CPU et la RAM, on peut ajouter des machines additionnelles ou différentes. Concernant les disques durs, il est possible d’augmenter leur capacité ou de les remplacer par des SSD.

De son côté, la bande-passante réseau peut être mise à l’échelle en ajoutant de multiples contrôleurs d’interface réseau ou des cartes d’interface réseau à plus forte capacité. Ces différentes modifications peuvent être combinées selon les besoins.

Le scaling horizontal et vertical impliquent tous deux d’ajouter des ressources informatiques à l’infrastructure. Toutefois, ces deux approches présentent d’importantes différences en termes d’implémentation et de performances.

Qu'est-ce que le scaling horizontal ?

Le scaling horizontal ou scaling out est l’ajout de noeuds ou de machines supplémentaires à une infrastructure, afin de répondre à un changement de demande.

Par exemple, si une application est hébergée sur un serveur n’ayant plus la capacité de supporter le trafic, l’ajout d’un serveur peut être une solution au problème.

On peut comparer ce concept au fait de répartir les tâches entre plusieurs employés, plutôt que de confier tout le travail à une seule personne. Toutefois, même si les avantages sont évidents, cette approche a l’inconvénient d’ajouter une complexité aux opérations. Il est important de bien définir le rôle de chaque machine.

Scaling horizontal ou vertical : quelles différences ?

Le scaling horizontal ou « scaling out » consiste à ajouter davantage de machines au bassin de ressources. Le scaling vertical ou « scaling up » repose sur l’ajout de puissance à une machine existante, par exemple de la RAM ou un meilleur CPU.

L’une des principales différences entre ces deux approches est que le scaling horizontal requiert de décomposer une pièce de logique séquentielle en plus petites parties. Le but est de pouvoir les exécuter en parallèle sur de multiples machines.

En général, le scaling vertical est plus simple parce que la logique n’a pas besoin de changement. On se contente d’exécuter le même code sur des machines à plus hautes performances.

Il existe toutefois de nombreuses autres différences mineures à considérer pour déterminer l’approche adéquate, selon le type d’application à mettre à l’échelle.

Dans le domaine des bases de données, le scaling horizontal est habituellement basé sur le partitionnement des données. Chaque noeud contient seulement une partie des données. En scaling vertical, les données sont sur un seul noeud et des coeurs sont ajoutés pour partager la charge entre les ressources RAM et CPU de la machine.

Pour éviter le downtime ou temps d’indisponibilité, le scaling horizontal est le meilleur choix puisqu’il évite d’être limité à la capacité d’une seule unité. Au contraire, le scaling vertical repose sur la capacité d’une seule machine et peut donc impliquer un downtime et une limite maximale.

Ces deux approches se distinguent aussi pour la programmation concurrente. En scaling horizontal, la programmation distribuée consiste à distribuer des tâches entre plusieurs machines sur un même réseau. En vertical, la programmation concurrente sur des machines multi-coeurs est souvent effectuée par le biais du multi-threading.

Le partage ou la mise à jour des données peuvent s’avérer plus coûteux en horizontal, puisqu’il est nécessaire de transférer de multiples copies des données. En vertical, le multi-thread permet de partager les données au sein d’un espace commun.

En guise d’exemples de bases de données à scaling horizontal, on peut citer Cassandra, MongoDB, ou Google Cloud Spanner. Parmi les bases de données à scaling vertical, on compte MySQL et Amazon RDS.

Avantages et inconvénients du scaling horizontal

Le scaling horizontal présente des avantages, mais aussi des inconvénients. Tout d’abord, cette approche simplifie le scaling au niveau du hardware. Il suffit d’ajouter des machines supplémentaires au bassin actuel, et ceci élimine le besoin d’analyser les caractéristiques du système à améliorer.

Ce modèle réduit aussi les périodes d’indisponibilité. Pour ajouter une machine, il n’est pas nécessaire de désactiver les autres. Le temps d’indisponibilité peut même être éliminé entièrement et les clients auront moins de risques d’être impactés.

En outre, la résilience et la tolérance aux erreurs sont augmentées. Le fait de dépendre d’un nœud unique pour toutes les données et opérations induit un risque important de tout perdre en cas de panne. La distribution entre plusieurs nœuds écarte ce danger.

Enfin, en utilisant le scaling horizontal pour la gestion du trafic réseau, le nombre de endpoints pour les connexions augmente puisque la charge sera déléguée entre de multiples machines. Les performances sont donc accrues.

En revanche, la complexité de la maintenance et l’exploitation peuvent augmenter. Il est plus difficile de maintenir de multiples serveurs qu’une seule machine, et des logiciels d’équilibrage de charges et de virtualisation sont nécessaires.

Le back up des machines peut aussi devenir plus complexe, et les nœuds doivent être synchronisés et communiquer efficacement. Enfin, l’ajout de nouveaux serveurs est beaucoup plus cher que la mise à jour des machines existantes.

Le scaling sur le Cloud

Le scaling sur le cloud fonctionne de la même façon que le scaling on-premise (sur site). Un fournisseur de services cloud peut implémenter le scaling horizontal basé sur infrastructure hyper-convergée, ou choisir d’utiliser des services virtuels distribués.

Le scaling horizontal repose sur le déploiement d’une nouvelle infrastructure, tandis que le scaling vertical repose sur l’infrastructure existante. Sur le cloud, cette scalabilité passe principalement par les capacités de virtualisation sur une architecture cloud.

Les machines virtuelles sont soutenues par une infrastructure physique avec des caractéristiques et des capacités relativement cristallisées. La flexibilité offerte par les VM simplifie le scaling.

Il suffit par exemple de déplacer des workloads existants vers des machines virtuelles plus ou moins larges en cas de besoin. Les applications et charges de travail stockées et traitées sur ces VM peuvent être transférées vers un ou plusieurs serveurs différents simultanément.

Sur la plupart des solutions de cloud hybride ou privé, le fournisseur de cloud prend en charge le scaling. L’équipe IT de l’organisation n’a donc pas à se soucier des besoins en hardware face à l’augmentation de la demande.

Les fournisseurs de services comme Azure et AWS proposent un scaling automatique, et une adaptation en temps réel en fonction de la hausse ou de la baisse de la demande. Ceci permet un scaling beaucoup plus efficace et économique, et c’est l’un des avantages de la migration vers le cloud.

Comment choisir entre scaling horizontal et vertical ?

Pour choisir entre scaling horizontal et vertical, il est important de prendre en compte plusieurs facteurs. En fonction du cas d’usage et des contraintes à respecter, le choix idéal n’est pas toujours le même.

Tout d’abord, en termes de performances, le scaling horizontal permet de combiner la puissance de plusieurs machines au sein d’une seule machine virtuelle. Les performances ne sont donc pas limitées à la capacité d’un seul ordinateur.

Toutefois, il est préférable de vérifier si les ressources d’une seule machine sont suffisantes avant d’envisager la mise à l’échelle. Ceci peut en effet permettre de minimiser les coûts.

En outre, le scaling horizontal offre plus de flexibilité dans le choix de la configuration pour l’optimisation des coûts et des performances. Avec le scaling vertical, un prix minimal est défini par le hardware utilisé.

De même, le scaling horizontal permet d’ajouter ou de modifier des morceaux de code individuellement plus facilement sans avoir à désactiver temporairement l’intégralité du système. Cette approche permet donc des mises à jour en continu. Le scaling horizontal permet aussi une redondance accrue, et évite les dangers d’un point unique de défaillance.

Le choix du scaling horizontal est obligatoire lorsqu’une application doit être répartie entre plusieurs régions géographiques ou Data Center pour réduire la latence, se conformer aux règles en vigueur ou simplifier la restauration en cas de désastre.

De manière générale, il n’est pas toujours judicieux de choisir entre scaling horizontal et vertical. Alterner entre ces deux modèles est bien souvent plus pertinent. Par exemple, pour le stockage de données, il est possible d’alterner entre une disque local unique et un sysètme distribué.

Un système flexible sur lequel certaines couches d’application sont exécutées sur des machines à scaling verticales et d’autres sur une infrastructure à scaling horizontal peut être difficile à concevoir.

Il est nécessaire de le penser dès le départ comme un jeu de services découplés et de simplifier le transfert de code. Ceci permet d’ajouter des ressources en cas de besoin sans briser les liens entre les ensembles de code. Le partitionnement de l’application et du modèle de données évite aussi le partage entre les unités parallèles.

L’approche distribuée horizontalement est de plus en plus adoptée dans le monde du logiciel, face à une demande accrue en redondance et à l’essor des environnements cloud et SaaS. Néanmoins, la combinaison avec le scaling vertical apporte de nombreux avantages.

Comment suivre une formation de Data Science ?

Le scaling horizontal est une notion importante dans le domaine de la Data Science et de l’ingénierie des données. Afin de maîtriser ce concept, vous pouvez choisir DataScientest.

Nos formations vous permettent d’acquérir toutes les compétences requises pour exercer les métiers de la Data Science comme Data Scientist, Data Engineer, Data Analyst ou Data Product Manager.

À travers ces cursus, vous serez notamment initié à la programmation en Python, au Machine Learning, aux bases de données, à la CI/CD ou encore aux techniques d’automatisation. Tout au long du parcours, un projet fil rouge permet d’apprendre par la pratique.

Nos formations certifiantes permettent d’obtenir un certificat des Mines ParisTech PSL Executive Education ou Paris Dauphine-PSL, et de valider le bloc 3 de la certification RNCP 36129 « Chef de projet en intelligence artificielle » reconnue par l’Etat. Vous pourrez aussi obtenir une certification cloud Amazon Web Services ou Microsoft Azure.

Tous nos programmes se complètent intégralement à distance, en formation continue ou en mode BootCamp intensif. Notre organisme est éligible au Compte Personnel de Formation (CPF) pour le financement. Découvrez dès maintenant DataScientest !

Vous savez tout sur le scaling horizontal. Pour plus d’informations, consultez notre dossier complet sur le scaling vertical et notre dossier sur le Data Engineering.

Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?