Le Blog Amazon Web Services

Payez à la requête avec Amazon DynamoDB à la demande

Il n’y a encore pas si longtemps, déployer une base de données à très grande échelle tout en offrant des temps d’accès constants et rapides pouvait relever de la gageure. Les choses ont changé il y a 10 ans, en 2012, avec la publication du blog de Werner Vogels (article en anglais) annonçant la sortie d’Amazon DynamoDB. DynamoDB a été construit suivant les principes énoncés dans le papier de recherche Dynamo (en anglais), publié par Amazon en 2007. Les années passant, beaucoup de nouvelles fonctionnalités ont été ajoutées pour simplifier encore davantage la façon dont les clients AWS utilisent les bases de données. Il est en effet possible de créer des bases de données entièrement gérées, multi-région, multi-master avec des options telles que le chiffrement, le point-in-time recovery ou encore la mise en cache mémoire, le tout avec un niveau de service (SLA) de 99,99%.

Amazon DynamoDB à la demande

En novembre 2018, nous avons annoncé Amazon DynamoDB à la demande, un nouveau mode de facturation plus flexible pour Amazon DynamoDB, capable de traiter des milliers de requêtes par seconde, sans avoir à provisionner des ressources informatiques en amont. Amazon DynamoDB à la demande propose un modèle de paiement à la requête tant pour les lectures que pour les écritures. Vous ne payez que pour ce que vous utilisez. Lorsque les tables sont en mode “à la demande”, Amazon DynamoDB adapte immédiatement la capacité en fonction de la charge réelle.

Dans la console d’Amazon DynamoDB, lors de la création d’une nouvelle table, vous pouvez choisir entre le mode à la demande ou alloué. Il est également possible de changer de mode après la création, dans l’onglet Paramètres supplémentaires.

Console Amazon DynamoDB

Les tables en mode capacité à la demande supportent toutes les fonctionnalités d’Amazon DynamoDB (telles que le chiffrement, la récupération à un instant donné, les tables globales, etc.) sauf l’autoscaling, qui n’a pas de sens dans le mode à la demande.

Les index créés sur une table à la demande héritent de la configuration de la table. Il n’est plus nécessaire de provisionner de la capacité pour les index et le paiement se fait à l’usage. Si vous n’avez pas de trafic en lecture/écriture sur une table en mode à la demande ainsi que sur ses index alors seul le stockage vous sera facturé.

Amazon DynamoDB est particulièrement adapté aux applications dont le trafic est difficile à prévoir ou lorsque la charge est sous forme de pics brefs mais intenses ou encore si la moyenne d’utilisation de la table est très en dessous du pic. Voici quelques exemples où Amazon DynamoDB à la demande est recommandé :

  • Nouvelles applications ou applications dont le profil de charge est difficile à prévoir,
  • Applications serverless ayant un modèle de paiement à l’usage,
  • Éditeurs de solutions SaaS qui souhaitent isoler les ressources en déployant une table par client.

Vous pouvez passer du mode alloué au mode à la demande une fois par jour, en revanche du mode à la demande au mode alloué aussi souvent que vous le voulez.

Test de performance

Assez parlé, testons maintenant une table DynamoDB créée en mode à la demande en injectant un peu de charge !

Nous utiliserons deux applications serverless :

  • La première application implémente une API REST au dessus d’une table DynamoDB grâce à une fonction AWS Lambda et exposée par Amazon API Gateway. Cette API permet de lire, ajouter, mettre à jour ou supprimer des éléments de la table en utilisant des méthodes HTTP telles que GET, POST, PUT ou DELETE,
  • La seconde application démarre 1000 fonctions AWS Lambda en parallèle pour générer de la charge sur notre API REST en utilisant des méthodes HTTP et des données aléatoires. Chaque fonction exécute des requêtes HTTP en parallèle par lot de 100 pendant une minute. Il n’y a pas de période de chauffe, la génération de charge démarre immédiatement à pleine vitesse !

Comme on peut le voir dans l’onglet Surveiller dans la console d’Amazon DynamoDB, un pic de près de 5000 requêtes par seconde est très rapidement atteint, sans subir aucune limitation (throttle, en anglais).

La mise à l’échelle de toute la stack serverless, d’Amazon API Gateway à la fonction AWS Lambda, en passant par la table Amazon DynamoDB est entièrement gérée. Nul besoin de planifier ou de provisionner la capacité manuellement. Nous pourrons donc nous concentrer sur l’aspect fonctionnel de notre application.

Performance test profile on Amazon DynamoDb on-demand

Avec Amazon DynamoDB à la demande, vous ne payez que pour ce que vous utilisez. Par exemple, dans la région Europe (Paris), les tarifs sont de $1,4846 par million d’unités de demande d’écriture et $0,297 par million d’unités de demande de lecture, en plus des coûts de stockage habituels au moment de l’écriture de cet article.

Vous pouvez utiliser le CLI d’AWS, les SDKs AWS et AWS CloudFormation pour créer une table en mode à la demande ou pour modifier le mode d’une table existante.

Disponible maintenant

Le mode à la demande d’Amazon DynamoDB est disponible dans toutes les régions.
Vous trouverez des ressources pour en apprendre plus sur les différents modes de capacité dans le guide du développeur d’Amazon DynamoDB.

Article original de Danilo Poccia, Chief Evangelist EMEA, adapté en français par Alexis Günst Horn, Solutions Architect dans les équipes AWS France.