Les meilleures solutions pour exécuter une base de données sur AWS
AWS propose une catégorie entière pour ses services de base de données gérés, ce qui facilite la création et l'exécution d'une base de données sur la plate-forme AWS. Que proposent-ils et est-ce mieux que de l'exécuter vous-même sur EC2?
Sommaire
Vous pouvez toujours utiliser EC2
La plupart des bases de données de cette liste utilisent simplement EC2 sous le capot pour faire tout le gros du travail. Si vous êtes prêt à gérer vous-même l'ensemble de la configuration, de la gestion, des sauvegardes, de la réplication et de la mise à l'échelle, vous pouvez utiliser EC2 et installer le logiciel de base de données manuellement. C'est une option tout à fait viable, même pour les grandes bases de données.
L'avantage d'un service comme RDS est que l'ensemble du processus est géré pour vous, mais cela coûte de l'argent supplémentaire. Chaque base de données en tant que service de cette liste coûtera plus cher que l'instance EC2 sous-jacente (à l'exception de DynamoDB, qui n'utilise pas de serveurs).
L'exécution sur EC2 fonctionne particulièrement bien si vous exécutez une petite base de données et que vous souhaitez réduire les coûts, car le prix des petites instances EC2 est assez bon marché. De plus, si vous avez déjà une instance EC2 et que vous ne la maximisez pas, vous pouvez exécuter une base de données avec vos autres programmes plutôt que d'obtenir une instance distincte pour la base de données.
AWS RDS héberge la plupart des bases de données relationnelles
AWS RDS est leur service de base de données gérée à usage général. Il fonctionne sur EC2, mais la création, les répliques en lecture et les sauvegardes incrémentielles sont entièrement gérées pour vous. Vous payez simplement pour l'instance EC2 sous-jacente (moyennant un petit supplément), plus les frais de stockage EBS.
La création d'une base de données est simple; à partir de la console RDS, cliquez sur «Créer une base de données» et spécifiez le type d'instance souhaité. Vous paierez pour cette instance, plus le stockage provisionné. En général, RDS est un peu plus cher que d'utiliser simplement l'instance EC2 sous-jacente et de tout configurer vous-même. Mais, avec tous les avantages d'avoir une base de données en tant que service, RDS sera toujours bénéfique pour certaines personnes.
AWS Aurora
Aurora est la base de données relationnelle exclusive d'AWS. Il est compatible MySQL ou PostgreSQL, mais utilise un moteur sous-jacent différent. Cette option peut être sélectionnée lors de la configuration d’une base de données dans RDS.
AWS affirme qu'Aurora est trois fois plus rapide que PostgreSQL et MySQL, ce qui est une véritable amélioration, mais ce n'est pas aussi flashy que cela puisse paraître. Il est seulement plus rapide avec des IOPS (vitesse de disque) à provisionnement élevé sur d'énormes instances de base de données, et cela coûte beaucoup plus cher si vous recherchez vraiment la vitesse.
En tant que base de données générale, Aurora fonctionne bien, mais est un peu plus cher que d'autres offres RDS comme MySQL. Il existe cependant une option sans serveur pour Aurora, qui semble réduire un peu les coûts et permet à votre base de données de s'échelonner automatiquement de haut en bas.
AWS DocumentDB: compatible MongoDB
DocumentDB remplace Mongo par AWS. Ce n'est pas réellement Mongo sous le capot, mais il agit comme tel et est entièrement compatible avec les pilotes Mongo existants. Il est facile à lancer à partir de la console DocumentDB et peut évoluer jusqu'à des millions de requêtes par seconde avec jusqu'à 15 répliques en lecture.
DocumentDB fonctionne de la même manière que RDS en ce que vous payez pour l'instance EC2 sous-jacente, mais il convient de noter que la sélection d'instance est limitée aux instances R5 optimisées en mémoire, qui ne sont pas bon marché. L'instance R5 la moins chère est la db.r5.large
instance qui coûte $0.277
par heure, soit environ 200 $ par mois. Il s'agit également d'une légère augmentation de coût par rapport à MySQL sur RDS, il s'agit donc certainement d'une prime par rapport à MongoDB traditionnel sur EC2.
AWS DynamoDB: base de données NoSQL sans serveur
La particularité de DynamoDB est qu'il s'agit de la seule base de données de cette liste entièrement sans serveur. Il est proposé en tant que service comme S3, et vous ne devez gérer aucune instance. Tout le calcul est géré par AWS.
DynamoDB est une base de données de valeurs-clés et de documents, similaire à MongoDB. C'est un peu différent cependant, mais AWS propose des outils de migration pour la transition vers DynamoDB depuis MongoDB et MySQL.
Vous êtes facturé en fonction des demandes et du stockage, même si la liste des taxes est un peu longue:
- 1,25 USD par million d'écritures
- 1,875 USD par million d'écritures répliquées sur une table globale
- 0,25 USD par million de lectures
- 0,25 USD par Go après 25 Go
- 0,09 USD par Go de données transférées
- En option, 0,20 USD par Go de données de sauvegarde et 0,15 USD par Go si vous devez restaurer une table
Dans l'ensemble, le prix de DynamoDB est assez similaire à celui des autres services AWS et, tout étant aussi mesuré qu'il l'est, vous pouvez être sûr de ne pas surpayer en exécutant des instances EC2 inutilement volumineuses. Vous pouvez également provisionner la capacité à l'avance, ce qui est légèrement moins cher.
ElastiCache: stockage en mémoire
Si vous souhaitez exécuter Redis ou Memcached en tant que service, AWS le propose également avec ElastiCache.
Redis et Memcached sont des bases de données extrêmement rapides qui fonctionnent entièrement dans la mémoire. Ils sont couramment utilisés pour stocker de courts bits de données, tels que des chaînes et des octets, auxquels il faut accéder très rapidement et avec une latence très faible.
Redis est généralement exécuté sur le même serveur aux côtés d'autres applications pour réduire au maximum la latence (dans ce cas, vous n'utilisez pas ElastiCache), mais il peut également être utilisé comme service séparé pour les grandes bases de données, c'est là qu'ElastiCache commence à devenir utile. Comparé à EC2, ElastiCache est toujours une prime, mais pas de trop. Vous souhaiterez probablement utiliser les instances AWS «Memory Optimized» si vous exécutez une base de données particulièrement volumineuse.
Neptune: base de données de graphes
Les bases de données Graph stockent les données dans une structure totalement unique. Plutôt que de stocker des données sous forme de lignes et de colonnes ou de paires clé-valeur, les bases de données de graphiques sont utilisées pour représenter les liens entre les objets et pour comprendre les relations complexes entre eux.
L'exemple le plus courant est celui des réseaux sociaux. Il est facile de trouver les amis d’une personne, peut-être que vous les stockez sous forme de tableau sur l’objet de l’utilisateur. Il vous suffira donc de rechercher les enregistrements de chaque ami. Mais si vous vouliez regarder les amis d'amis, ou même plus profondément, les bases de données relationnelles s'arrêteront complètement:
Pour une base de données de graphes cependant, ce processus est trivial et évolue de manière quadratique avec le nombre d'enregistrements renvoyés, plutôt que de manière factorielle.
Neptune est la propre base de données graphique propriétaire d'AWS. Le prix est similaire à celui de RDS: payez pour l'instance EC2 et le stockage. Cependant, vous ne pouvez pas exécuter Neptune vous-même, car il n’est pas open source. Vous pouvez toujours exécuter une base de données de graphiques différente comme neo4j si vous ne souhaitez pas utiliser un service géré.