- L’article évoque l’expérience de l’auteur dans la gestion des performances de Postgres au sein d’une application SaaS, où la base de données avait du mal à supporter la charge.
- L’équipe de l’auteur a procédé à une montée en charge verticale en remplaçant la base de données par une instance plus grande chaque fois qu’elle devenait trop sollicitée. Mais comme ils utilisaient déjà la plus grande instance disponible, ils étaient sur le point d’atteindre un état de surcharge.
- Deux solutions possibles ont été proposées : shardiser les écritures sur des clusters de bases de données indépendants, et découper le monolithe en plusieurs services interconnectés (microservices).
- Les deux solutions augmenteraient la capacité et offriraient des options intéressantes en matière de tolérance aux pannes et de résilience opérationnelle, mais elles accroîtraient fortement la complexité.
- L’auteur affirme que le véritable coût de l’augmentation de la complexité est l’attention qu’elle exige, ce qui complique ensuite toutes les décisions techniques.
- L’auteur suggère qu’avant d’augmenter fortement la complexité, il existe généralement une possibilité de « tirer » un peu plus de performances du système existant en ajustant la charge de travail, en optimisant les performances ou en complétant le système d’une manière ou d’une autre.
- Dans leur cas, en optimisant des requêtes lourdes, en ajustant les paramètres de Postgres et en déportant certaines requêtes en lecture seule coûteuses vers une base de données répliquée, ils ont réduit l’utilisation maximale hebdomadaire du CPU de la base de données de 90 % à 30 %.
- L’auteur conclut que la complexité est parfois nécessaire et inévitable, mais qu’il est préférable d’en retarder l’augmentation aussi longtemps que possible et d’extraire d’abord autant de performances que possible du système existant.
1 commentaires
Avis Hacker News