
Quand les fournisseurs de plateformes parlent d’auto-scaling, ils font généralement référence à une seule chose : l’auto-scaling des applications, c’est-à-dire l’ajout ou la suppression d’instances web en fonction du trafic. Le principe est bien connu : tu définis un indicateur, tu fixes un seuil, et tu laisses la plateforme s’en charger.
La plupart des plateformes traitent encore la capacité des bases de données comme un problème à part, généralement géré manuellement. Les équipes prévoient soit une capacité pour l’heure la plus chargée de la pire journée, soit des plans de mise à niveau selon un calendrier, soit elles mettent en place leur propre logique de mise à l’échelle sur Kubernetes ou RDS. Le résultat est le même dans tous les cas : une capacité qui ne correspond pas à la demande et une charge opérationnelle qui ne se justifie pas.
Cette expression est souvent utilisée à tort et à travers. Voici comment on l’utilise chez Upsun :
Mise à l’échelle automatique « full-stack » : chaque couche de ta stack s’adapte automatiquement à la demande, de manière native, sur une seule plateforme : applications, workers et bases de données gérées.
Concrètement, trois éléments s’adaptent horizontalement sur la même primitive Upsun :
Ces trois éléments réagissent aux mêmes signaux : l’utilisation moyenne du processeur et de la mémoire sur l’ensemble des instances en cours d’exécution. Ils suivent tous la même logique : ajouter de la capacité lorsque l’utilisation reste au-dessus d’un seuil, et en retirer lorsqu’elle reste en dessous. Ils font tous partie du même projet, sur la même facture, avec un modèle conceptuel unique.
Sur Upsun, l’autoscaling est horizontal : il ajoute ou supprime des instances entières d’un service. Pour les bases de données, ça signifie faire évoluer le pool de répliques en lecture de ton service PostgreSQL ou MariaDB principal. Tu configures une réplique de référence une seule fois ; l’autoscaling ajuste ensuite la taille du pool en fonction de la charge.
La plateforme surveille l’utilisation moyenne du processeur et de la mémoire de ton pool de répliques en cours d’exécution. Lorsque l’utilisation reste supérieure à ton seuil d’augmentation pendant la période d’évaluation, une réplique supplémentaire rejoint le cluster. Lorsqu’elle reste inférieure à ton seuil de réduction pendant la période d’évaluation, une réplique supplémentaire est supprimée. Une période de pause entre les actions empêche le pool d’osciller à la hausse et à la baisse lors de pics de charge de courte durée.
Les valeurs par défaut te donnent une idée de la configuration :
Tu peux utiliser le CPU, la mémoire ou les deux comme déclencheurs, et tu peux ajuster chaque seuil par environnement, y compris en développement et en préproduction, pas seulement en production.
Deux détails techniques sont importants pour avoir des attentes réalistes :
C’est à ton code d’application de diriger les requêtes de lecture vers la réplique. La chaîne de connexion est accessible via PLATFORM_RELATIONSHIPS sous le nom de la relation de réplique (par exemple, database-readonly). La plupart des ORM et des bibliothèques de bases de données prennent en charge ce modèle avec une connexion de lecture distincte. Il s’agit d’une modification du code, pas d’une modification de l’infrastructure.
Il existe aujourd’hui trois autres façons d’obtenir une mise à l’échelle automatique des bases de données. Chacune est une solution viable, mais chacune comporte des compromis qu’Upsun cherche explicitement à éviter.
La mise à l’échelle automatique des répliques de lecture d’Upsun s’exécute directement sur les services PostgreSQL et MariaDB gérés qui alimentent déjà ton projet. Pas besoin de moteur tiers, de couche supplémentaire ni de configuration.
Cette fonctionnalité a une portée délibérément limitée. Elle est conçue pour les charges de travail où l’ajout de capacité de lecture permet réellement de soulager la pression sur la base de données.
Prenons l’exemple d’une application de e-commerce sur une base de données PostgreSQL gérée. Un jour de semaine normal, une ou deux répliques gèrent la charge de lecture, avec une utilisation du processeur (CPU) oscillant entre 30 et 40 %.
Le vendredi soir, une campagne est lancée. Voici ce qui se passe ensuite :
La facture suivante reflète la capacité réellement utilisée pendant le pic, et non la capacité prévue à l’avance pour y faire face. Le rappel de calendrier, l’augmentation manuelle, le rappel de retour à la capacité initiale… tout ça, c’est fini.
La mise en place de l’auto-scaling des répliques de lecture nécessite deux niveaux de configuration :
Dans ton fichier .upsun/config.yaml :
Les documentations de PostgreSQL et MariaDB expliquent la configuration en détail.
Active la mise à l'échelle automatique pour le service de réplique depuis :
Les paramètres correspondent à ceux de l'auto-scaling des applications et des workers :
Des applications, des workers et des bases de données gérées sur une seule plateforme, avec une seule entité, sur une seule facture. C'est ça, la mise à l'échelle automatique « full-stack ».
Si tu n’as pas encore configuré de réplique de lecture, ces ressources te proposent un guide pas à pas pour définir le service. Plus d’infos sur la configuration, le réglage et les concepts associés :
Si tu n’as pas encore configuré de réplique en lecture, ces ressources te proposent un guide pas à pas pour définir le service. Pour en savoir plus sur la configuration, l’optimisation et les concepts associés :