Bien choisir entre Amazon RDS pour Aurora et Aurora Serverless

Le choix paraît simple : d’un côté une mise en route et des configurations manuelles de la base relationnelle d’AWS, et de l’autre une scalabilité totale et automatique. Mais certains facteurs jouent encore et toujours en faveur du traditionnel service RDS.

AWS propose deux services autour de sa base de données relationnelles Aurora : Amazon RDS (Relational Database Service) et Aurora Serverless.

Amazon RDS est un service managé qui lance et maintient des serveurs de base de données (avec plusieurs choix de bases, lire ci-après) dans le cloud public d’AWS. Aurora Serverless, lui, est un moteur de base relationnelle d’AWS (Aurora) avec un modèle de déploiement particulier qui fait que les développeurs n’ont pas à lancer manuellement de serveurs (le serverless).

Quels sont les points communs et les différences entre les options RDS et Serverless ?

La première grosse différence est que RDS vous permet de choisir votre moteur de base PostgreSQL, MySQL, MariaDB, Oracle DB et Microsoft SQL Server ; ou donc Aurora, un des moteurs de base de données natifs d’Amazon, conçu explicitement pour fonctionner avec l’infrastructure d’AWS (à côté du datawarehouse Redshift ou des bases NoSQL DocumentDB et DynamoDB).

La deuxième grosse différence entre Amazon RDS et Aurora Serverless est que RDS – le service le plus traditionnel lancé en 2019 – donne aux développeurs la possibilité de choisir précisément le type et la taille des instances qu’ils souhaitent pour leurs bases de données, quand Aurora Serverless ajuste ces paramètres au fil de l’eau.

Avec Aurora Serverless, lancé en 2018, les développeurs configurent le compute en termes d’unités de capacité (ou ACU pour Aurora Capacity Units). Les ACUs sont une combinaison de CPU virtuels et de mémoire. Les utilisateurs fixent un minimum et un maximum d’ACUs. Aurora Serverless augmente et diminue ensuite automatiquement les capacités nécessaires pour coller à la charge de l’application.

Grâce à ces capacités, Aurora Serverless gère les ressources avec plus de souplesse.

Avec Amazon RDS, un serveur de base de données, déployé par un développeur pour une capacité déterminée, ne passera à un type d’instance plus grande que si sa configuration est explicitement mise à jour vers une taille différente par le développeur lui-même. Ce qui peut entraîner jusqu’à cinq minutes d’interruption.

RDS offre certes l’auto scaling pour les replicas en lecture, mais le processus prend quelques minutes à exécuter, car il doit déployer des instances RDS supplémentaires. Le passage à l’échelle automatique d’Aurora Serverless permet au contraire des temps de déploiement beaucoup plus rapides, généralement moins de 30 secondes.

Côté positif, dans le cas où l’on choisit Aurora comme moteur de base dans RDS, les développeurs n’auront pas à configurer le stockage dans AWS puisque Aurora attribue automatiquement l’espace requis. C’est exactement – et logiquement – la même chose pour Aurora Serverless.

Enfin, d’un point de vue fonctionnel, si une application est compatible avec MySQL ou PostgreSQL, elle le sera avec les deux versions du service Aurora sur AWS.

Facteurs à prendre en compte pour choisir entre RDS et Serverless

Avant tout, redisons-le clairement : Aurora Serverless est uniquement compatible avec MySQL et PostgreSQL du fait qu’il ne propose que… Aurora. Le service ne peut être un choix que pour les applications qui s’appuient sur ces SGBD.

Si une application est conçue pour Oracle DB, SQL Server ou même MariaDB, alors vous devrez utiliser Amazon RDS.

La question qui nous intéresse – celle du choix entre Aurora pour RDS et Aurora Serverless – est plus subtile.

Aurora Serverless convient bien aux applications qui ne sont pas censées assurer un trafic régulier, comme les environnements de développement ou de test. Au passage, même si Aurora Serverless offre la possibilité de réduire la capacité à zéro pendant les périodes d’inactivité, ce paramétrage n’est pas recommandé pour les environnements de production. Il faut en effet plusieurs secondes pour réapprovisionner les capacités de compute, ce qui provoque une expérience dégradée à l’utilisateur pendant ce laps de temps.

Aurora Serverless est également un bon choix pour les applications dont l’utilisation connaît des pics soudains et imprévisibles, ce qui nécessiterait des ajustements de capacité longs et fastidieux dans Amazon RDS. Aurora Serverless peut être configuré pour augmenter ou diminuer rapidement et automatiquement la capacité selon les besoins (le serverless a d’ailleurs été conçu pour cela).

Aurora Serverless peut donc apparaître comme une meilleure option qu’Amazon RDS. Mais ce n’est pas toujours le cas : s’il n’est pas choisi pour le bon usage, le service peut être (beaucoup) plus coûteux.

Par exemple, pour une application qui devrait servir un trafic constant dans la zone US-East-1, une instance RDS r5.large (16 Go, 0,29 $/heure) équivaudrait à 8 ACU (0,48 $/heure), à la date où nous écrivons ces lignes. Dans ce cas, Aurora Serverless serait 65 % plus cher.

Vous ne pouvez pas non plus utiliser les instances réservées (Reserved Instances) avec Aurora Serverless. Ces instances – réservées pour une durée d’un ou trois ans, moyennant une remise – peuvent réduire considérablement le coût d’Amazon RDS – d’environ 30 à 60 % selon le type d’instance et la durée de votre engagement.

Conclusion

Aurora Serverless est une option qui mérite d’être envisagée. Mais il est très important, en amont, d’évaluer ses avantages, ses limites et ses implications en termes de coûts par rapport au plus traditionnel Amazon RDS, afin de prendre la meilleure décision et ne pas faire gonfler inutilement la note pour votre budget.

Pour approfondir sur Base de données