Intéressons-nous ici au stockage des commentaires des articles du site web, que les lecteurs peuvent consulter ou écrire via notre serveur d’API. Deux types de bases de données sont envisageables : relationnelles ou non relationnelles.
Au-delà du texte, ces bases de données peuvent stocker plusieurs types de données (String, Bit, Char, Integer…). Voyons ce que nous propose AWS.
Stockez les données dans une base de donnée relationnelle
Amazon RDS
Les bases de données relationnelles stockent les données suivant un schéma de table prédéfini. Vous avez découvert Amazon RDS, lors du cours Découvrez le cloud avec AWS, le service managé de bases de données relationnelles, qui offre plusieurs moteurs à connaître pour la certification. Par défaut, AWS gère la maintenance et vous n’y avez aucun accès SSH. Avec RDS Custom, vous pouvez désormais vous connecter en SSH et faire des configurations personnalisées uniquement pour les moteurs Oracle et Microsoft SQL Server.
Étudions les fonctionnalités importantes de RDS à connaître.
Storage Auto-Scaling permet la scalabilité verticale automatique lorsque votre base est en manque d’espace disque pour l’écriture de données.
Réplicas en lecture (read replicas) permet la scalabilité horizontale en ajoutant manuellement jusqu’à 5 réplicas de l’instance primaire de votre base de données. Cela permet de ne pas affecter les temps de réponse et d’affecter les requêtes en lecture et en écriture vers les instances appropriées.
A - Les communications peuvent être chiffrées par chiffrement asymétrique TLS en utilisant des certifications fournies par AWS TLS.
B - Les données peuvent être chiffrées par du chiffrement symétrique avec une clé AWS KMS. Si l’instance primaire n’est pas chiffrée, alors les réplicas non plus.
C - Mettez à jour l’application avec les adresses des réplicas en lecture pour la connexion.
D - Jusqu’à 5 réplicas répartis dans la même AZ, ou d’autres AZ de la même région ou d’une autre (cross-region).
E - Lecture éventuellement consistante : ce que vous lisez est ce que vous venez d'écrire.
Multi-AZ : garantit la haute disponibilité (high availability) de la base grâce à une instance de secours (standby), installée dans une autre AZ, qui reprend automatiquement le rôle de l’instance primaire en cas de panne de cette dernière. On parle de reprise après sinistre (disaster recovery) réalisée de façon transparente pour les lecteurs de The Green Earth Post.
A - Un DNS bascule automatiquement les requêtes vers l’instance primaire, si fonctionnelle ; sinon, l’instance de secours.
B - Une instance de secours (standby) est une réplique synchronisée de l’instance primaire. Elle reste inactive tant que le maître est actif. En cas de panne du maître, elle devient maître (basculement en 60s) !
C - Les instances primaire et secours sont obligatoirement dans des AZ différentes.
Passer de Mono-AZ (single-AZ), sans instance de secours, à Multi-AZ se fait sans délai par un clic bouton !🙂
Des réplicas en lecture peuvent être configurés comme des instances de secours avec l’option Multi-AZ. De plus, les trafics réseaux entre AZ sont généralement payants chez AWS mais cela est gratuit entre instances dans RDS.
RDS Proxy : si on permet d’autres connexions de différentes applications sur notre base pour alimenter d’autres sites web, cela dégrade les performances de la base, voire cause des pannes (imaginez un restaurant sans serveurs ! 😉 ). RDS Proxy s’interpose entre les clients et notre base pour partager la connexion, améliorant la sécurité et les performances. Il est uniquement disponible pour les moteurs MySQL, PostgreSQL, MariaDB et Aurora.
A - RDS Proxy n’est jamais accessible publiquement ! RDS Proxy et la base RDS doivent être dans un sous-réseau privé (que nous étudierons plus tard).
B - La sécurité est renforcée car les clients doivent disposer d’une autorisation IAM pour accéder au RDS Proxy.
C - RDS Proxy est un service sans serveur, multi-AZ et autoscalable.
Restauration : restaurez votre base à un instant précis du passé (35 derniers jours) grâce à des instantanés créés automatiquement toutes les 5 minutes à partir des journaux de transaction (transaction logs).
RDS MySQL peut être restauré depuis des instantanés de bases on-premises stockées dans S3.
Authentification : remplacez l’authentification nom/mot de passe par des rôles IAM.
Aurora
Ce moteur dans RDS, compatible avec MySQL et PostgreSQL, est une solution propriétaire contrairement aux autres. Des sites comme Netflix l’utilisent, car il garantit des performances très supérieures (mais chères !). Décortiquons ses caractéristiques pour la certification :
Scalabilité et Multi-AZ :
L’instance primaire réplique les données sur un espace disque distribué sur les AZ, qui peut s’étendre automatiquement jusqu’à 128 TB.
Les instances réplicas partagent cet espace et accèdent plus rapidement à la donnée. Ils peuvent s’étendre automatiquement jusqu’à 15 instances et être des instances de secours.
Des points de terminaison en lecture et écriture balancent automatiquement les requêtes de l’application.
A - L’application passe par le point de terminaison du cluster pour les requêtes en écriture.
B - L’instance primaire réplique la donnée sur un volume partagé en lecture avec les réplicas. La réplication entre régions (cross-region) est possible.
C - Contrairement à RDS, l’application n’a pas besoin de connaître les URL des instances, mais des points de terminaison.
D - Pour des requêtes en lecture, l’application se connecte au point de terminaison du lecteur. Celui-ci effectue automatiquement l'équilibrage de charge entre tous les réplicas.
E - L’Auto Scaling Aurora ajuste automatiquement le nombre de réplicas, jusqu’à 15, de manière à conserver la métrique sélectionnée le plus proche possible de la valeur que vous avez spécifiée.
Exemples de métrique : utilisation moyenne CPU, utilisation moyenne mémoire, nombre moyen de connexions actives.
Aurora Multi-Master : est une option qui améliore la haute disponibilité car elle vous permet de créer plusieurs instances en lecture/écriture sur plusieurs AZ (30 secondes).
Point de terminaison personnalisé : sert un sous groupe d’instances pour exécuter des requêtes spécifiques, par exemple des requêtes gourmandes en ressources.
A - Ce réplica constitue un sous-groupe car son type d’instance db.r6g.4xlarge offre plus de CPU et de mémoire. Ce sous-groupe sert le point de terminaison personnalisé pour des requêtes d’analyses gourmandes en ressources.
Sauvegarde et restauration
Aurora sauvegarde automatiquement des instantanés et peut restaurer la base avec une rétention de 1 à 35 jours, votre base peut être restaurée à n’importe quel instant précis du passé.
Aurora MySQL autorise des restaurations depuis des sauvegardes de bases on-premises stockées dans S3.
Aurora Database Cloning : clone votre base dans la même région plus rapidement qu’une sauvegarde et une restauration.
Aurora Global : réplique vos données entre régions en moins d’une seconde.
Aurora Machine learning (ML) : ajoutez des prédictions basées sur le ML à votre site via des requêtes SQL.
Aurora Serverless : est une configuration permettant l’automatisation de l’instanciation et la scalabilité de la base en fonction de l'utilisation réelle. Idéal pour les charges de travail très variables et imprévisibles.
À vous de jouer !
Maintenant il est temps d’installer une base de données RDS pour stocker les commentaires des lecteurs des articles du site web The Green Earth Post. Pour faire cela :
Créez un groupe de sécurité qui accepte le trafic entrant sur le port 3306 pour le groupe de sécurité du serveur d’API.
Créez une base de données avec le service Amazon RDS, avec les caractéristiques suivantes :
VPC par défaut
Groupe de sécurité créé
Méthode de création : Standard
Moteur SQL : MySQL
Modèle : Offre gratuite
Identifiant d'instance : thegreenearthpost
Identifiant principal : admin (vous pouvez mettre autre chose)
Mot de passe : password (vous pouvez mettre autre chose)
Réseau :
- VPC par défaut
- Groupe de sécurité créé
Authentification par mot de passe
Création d’une base de données nommé thegreenearthpost
Prêts ? Vous pouvez vérifier si vous l’avez bien fait ici :
En résumé :
Le service Amazon RDS permet de créer des bases de données relationnelles.
Les réplicas en lecture permettent la scalabilité horizontale.
Les instances de secours permettent la haute disponibilité.
Aurora est la solution propriétaire d’AWS comme base de données relationnelle.
Maintenant, étudions les alternatives non relationnelles !