À mesure que votre application se développe, votre base de données peut devenir un goulot d'étranglement dans votre système si vous ne disposez pas de l'infrastructure ou des modifications appropriées. Lorsqu'un pic de trafic se produit, les ingénieurs sont souvent confrontés à un dilemme : doivent-ils rendre leur serveur actuel plus puissant ou ajouter d'autres serveurs ? Ce guide explique la différence entre le scaling horizontal et vertical, les compromis de chacun et comment choisir l'approche adaptée à vos besoins.
Le scaling de base de données est le processus qui consiste à augmenter la capacité, les performances et la disponibilité d'un système. Il permet à votre base de données de gérer davantage de données et de suivre l'augmentation du nombre d'utilisateurs.
Dans le secteur, les experts utilisent deux termes principaux pour ce processus. Le scaling vertical consiste à "augmenter la capacité", tandis que le scaling horizontal consiste à "étendre la capacité". Comprendre ces deux options est la première étape pour créer un système de données fiable.
Le scaling vertical, également appelé scaling à la hausse, consiste à ajouter de la puissance à votre serveur existant. Vous conservez le même nœud de base de données, mais vous lui attribuez plus de ressources de processeur, de mémoire ou de stockage pour qu'il puisse effectuer son travail.
C'est souvent considéré comme la méthode traditionnelle pour faire évoluer les bases de données relationnelles. L'architecture reste simple, car toutes vos données sont stockées au même endroit.
Avantages
Défis
Les services de base de données gérés, tels que Cloud SQL, peuvent faciliter le scaling vertical en vous permettant de modifier la taille de votre machine en quelques clics. Cependant, il est important de garder à l'esprit que vous pouvez toujours atteindre les limites matérielles physiques.
Petite échelle : imaginez une start-up en pleine croissance qui exécute une application Web sur une seule base de données. Lorsque le trafic commence à augmenter, ils peuvent passer à une instance plus grande, ce qui leur donne plus de puissance de calcul pour gérer les visiteurs supplémentaires sans avoir à réécrire leur code d'application.
À l'échelle de l'entreprise : une grande entreprise dotée d'un système hérité peut également utiliser le scaling vertical. Ces systèmes reposent généralement sur des relations complexes entre les données. Comme leur code est conçu pour une seule base de données, ils peuvent faire évoluer leur système en ajoutant de la puissance à cette machine au lieu d'essayer de passer à un système distribué.
Besoins internes : certaines entreprises utilisent également le scaling vertical pour les rapports internes. Elles peuvent ajouter de la RAM à leur serveur de base de données principal pour qu'il puisse traiter plus rapidement les requêtes volumineuses et gourmandes en ressources, sans ralentir l'expérience des utilisateurs réguliers.
Le scaling horizontal, ou scaling out, consiste à ajouter des machines à votre système de base de données au lieu de rendre une machine plus puissante. Cela permet de répartir le travail sur un groupe de serveurs. Il s'agit d'un concept fondamental du cloud computing moderne et des systèmes distribués.
Les ingénieurs utilisent des techniques comme le partitionnement, qui consiste à diviser les données en plus petits blocs répartis sur différents serveurs, et la réplication, qui consiste à copier les données sur plusieurs nœuds.
Avantages
Défis
Une base de données SQL distribuée comme Spanner peut vous aider à gérer ces défis. Spanner se charge de synchroniser les données sur plusieurs machines pour vous. Vous n'avez donc pas besoin de diviser vos données manuellement ni de perdre la sécurité d'une base de données relationnelle. Cela vous permet d'effectuer un scaling horizontal sans rendre votre système trop complexe.
Capacité : une plate-forme d'e-commerce mondiale peut utiliser le scaling horizontal lors d'événements promotionnels importants. Lorsque des millions de personnes visitent le site en même temps, le système peut rééquilibrer automatiquement les données sur de nouveaux nœuds pour gérer le trafic, ce qui évite qu'un seul serveur ne soit surchargé.
Redondance : les applications financières critiques utilisent parfois aussi le scaling horizontal. Elles peuvent répartir leur base de données sur plusieurs emplacements physiques, appelés zones de disponibilité. Cette configuration permet de s'assurer que si un centre de données rencontre un problème, l'application reste opérationnelle, ce qui garantit la cohérence des données.
Proximité : une entreprise de jeux vidéo d'envergure mondiale peut déployer des nœuds de base de données dans différentes parties du monde. En plaçant un nœud de base de données plus près du joueur, ils peuvent offrir une expérience rapide et fluide avec un décalage très faible. Par exemple, si un joueur vit à Tokyo, ses données de profil sont stockées sur un nœud de base de données à Tokyo pour des lectures et des écritures ultra-rapides.
En ce qui concerne le scaling dans le cloud, le scaling vertical consiste à augmenter la taille de la machine virtuelle hébergeant votre base de données. Le scaling horizontal consiste à ajouter des instances de machine à un groupe à autoscaling ou à un cluster distribué.
Certaines entreprises utilisent une combinaison des deux méthodes, appelée "scaling diagonal". Dans cette approche, vous ajoutez des nœuds à votre système (scaling horizontal) et vous augmentez la capacité matérielle (scaling vertical). Les grandes entreprises peuvent ainsi profiter du meilleur des deux mondes, en s'assurant que leur base de données est à la fois hautement disponible et suffisamment puissante pour les tâches locales complexes.
Oui. Bien que cela ait été difficile par le passé, les bases de données SQL distribuées modernes comme Spanner utilisent une synchronisation d'horloge avancée et des protocoles intelligents pour permettre un scaling horizontal tout en maintenant l'organisation et la précision de vos données.
Surveillez les signes d'alerte, comme une utilisation élevée du processeur ou de la mémoire, des temps de requête lents et un décalage accru pour les utilisateurs pendant les heures de pointe. Ce sont autant de signes que votre base de données actuelle a du mal à suivre.
La principale différence entre le scaling horizontal et le scaling vertical réside dans la manière dont ils ajoutent des ressources à votre système. Le scaling vertical augmente la puissance d'une machine, tandis que le scaling horizontal ajoute des machines à votre réseau.
Fonctionnalité | Scaling vertical | Scaling horizontal |
Concept | Ajouter des ressources à une machine | Ajouter des machines au réseau |
Capacité | Limites strictes du matériel | Pratiquement illimité |
Temps d'arrêt | Nécessite généralement un temps d'arrêt | Aucun temps d'arrêt (ajout dynamique de nœuds) |
Complexité | Faible (architecture simple) | Élevée (nécessite une logique distribuée) |
Coût | Coûts plus élevés pour le matériel volumineux | Scaling linéaire avec des machines standards |
Fonctionnalité
Scaling vertical
Scaling horizontal
Concept
Ajouter des ressources à une machine
Ajouter des machines au réseau
Capacité
Limites strictes du matériel
Pratiquement illimité
Temps d'arrêt
Nécessite généralement un temps d'arrêt
Aucun temps d'arrêt (ajout dynamique de nœuds)
Complexité
Faible (architecture simple)
Élevée (nécessite une logique distribuée)
Coût
Coûts plus élevés pour le matériel volumineux
Scaling linéaire avec des machines standards
Plusieurs idées dépassées sur les bases de données SQL et NoSQL sont encore très répandues dans le secteur. La mise à l'échelle des bases de données SQL traditionnelles est difficile, principalement en raison de la façon dont elles gèrent les jointures et la cohérence des données. Répartir une base de données relationnelle sur de nombreux serveurs peut s'avérer complexe sur le plan technique, mais les solutions distribuées modernes ont résolu bon nombre de ces problèmes. Les développeurs peuvent ainsi faire évoluer SQL horizontalement sans perdre les fonctionnalités relationnelles dont ils ont besoin. Voici trois idées reçues courantes et la vérité qui se cache derrière elles :
Réponse : c'est possible. Alors que les anciennes conceptions relationnelles privilégiaient le scaling vertical, les systèmes SQL distribués modernes permettent aux bases de données relationnelles de s'étendre sur plusieurs machines. Cette approche combine la cohérence de SQL avec la puissance de croissance horizontale de l'architecture cloud moderne.
Réalité : NoSQL est efficace pour les ensembles de données massifs et non structurés, mais les bases de données SQL sont souvent plus adaptées aux requêtes complexes et structurées. Dans de nombreux cas, une base de données SQL bien réglée est plus performante qu'une base de données NoSQL si votre application repose sur des relations profondes entre les points de données.
Vérité : vous n'avez pas à choisir. Les modèles d'architecture modernes vous permettent de faire évoluer votre système sur de nombreuses machines tout en respectant des règles strictes de sécurité des données, connues sous le nom de conformité ACID, sur l'ensemble du cluster.
Le choix de la méthode de scaling de votre base de données dépend souvent de votre budget, de la quantité de données dont vous disposez et du temps d'activité dont vous avez besoin. Voici les conseils habituels :
Google Cloud propose une gamme d'outils de base de données qui s'adaptent à votre stratégie de scaling. Que vous ayez besoin de la simplicité d'un scaling à la hausse ou de la puissance d'un scaling horizontal, ces produits peuvent vous aider.


Profitez de 300 $ de crédits gratuits et de plus de 20 produits Always Free pour commencer à créer des applications sur Google Cloud.