Scaling horizontal vs scaling vertical des bases de données

À 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.

Évoluer et innover avec les bases de données Google Cloud

Que signifie le scaling d'une base de données ?

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.

Qu'est-ce que le scaling vertical ?

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 et inconvénients du scaling vertical

Avantages

  • Simplicité : votre code reste le même, car la base de données ressemble toujours à une seule machine pour votre application.
  • Maintenance simplifiée : vous n'avez qu'un seul serveur à gérer et à mettre à jour.
  • Cohérence : vous n'avez pas à vous soucier de la synchronisation des données entre plusieurs serveurs.

Défis

  • Limites strictes : chaque machine a une capacité maximale. À un moment donné, vous ne pouvez plus ajouter de matériel à un seul serveur.
  • Temps d'arrêt : vous devez souvent mettre la base de données hors connexion pendant un moment pour effectuer ces mises à niveau matérielles.
  • Point de défaillance unique : si ce serveur tombe en panne, l'ensemble de votre application peut être affecté.

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.

Exemples et cas d'utilisation courants du scaling vertical

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.

Qu'est-ce que le scaling horizontal ?

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 et inconvénients du scaling horizontal

Avantages

  • Croissance illimitée : vous pouvez ajouter des machines à mesure que vos besoins augmentent.
  • Haute disponibilité : comme vous disposez de plusieurs serveurs, le système reste en ligne même si un nœud tombe en panne.
  • Rentabilité : vous pouvez utiliser du matériel standard moins cher au lieu d'acheter un serveur massif et coûteux.

Défis

  • Complexité : votre application doit savoir comment communiquer avec plusieurs serveurs, ce qui ajoute des difficultés de conception.
  • Cohérence des données : il peut être difficile de synchroniser les données sur plusieurs machines différentes.
  • Modifications du code : vous devrez peut-être modifier le code de votre application pour gérer un environnement de base de données distribuée

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.

Exemples et cas d'utilisation courants du scaling horizontal

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.

Questions fréquentes

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.

Principales différences entre le scaling horizontal et vertical

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

SQL et NoSQL : démystifier le scaling

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.

Choisir la bonne approche d'évolutivité

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 :

  • Si vous avez un trafic prévisible et modéré, il est plus facile de commencer par un scaling vertical, car il est plus simple et rapide à configurer.
  • Si vous développez une application à l'échelle mondiale ou si vous avez besoin d'une disponibilité constante, il est recommandé de prévoir un scaling horizontal dès le départ. La conception demande plus de travail, mais cela peut vous éviter de gros problèmes par la suite.

Évoluez en toute facilité sur Google Cloud

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.

Passez à l'étape suivante

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

  • Produits Google Cloud
  • Parcourez plus de 100 produits. Les nouveaux clients bénéficient de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail. Tous les clients peuvent utiliser plus de 25 produits gratuitement, dans les limites mensuelles spécifiées.
Google Cloud