Accéder à

Comparaison entre MySQL autogéré et Cloud SQL pour MySQL

MySQL est l'une des bases de données relationnelles Open Source les plus populaires au monde. L'une des raisons de sa popularité est la possibilité d'héberger et de gérer la base de données de nombreuses façons conformes aux exigences de la charge de travail de l'utilisateur. Un utilisateur peut configurer sa base de données pour qu'elle soit autogérée sur site ou autogérée sur des machines virtuelles dans le cloud, ou bien utiliser l'offre entièrement gérée d'un fournisseur de services cloud. Cet article présente l'option MySQL autogéré et la solution entièrement gérée Cloud SQL pour MySQL fournie par Google Cloud. Nous aborderons les avantages et les inconvénients de chacune des options.

MySQL autogéré

L'option MySQL autogéré signifie que l'utilisateur, dans la plupart des cas administrateur de la base de données, est responsable de la plupart des activités liées à la configuration, à l'installation et à la maintenance de la base de données, du système d'exploitation, de la mise en réseau, de l'espace de stockage, de l'instance de machine virtuelle (VM) et du matériel, qui héberge l'instance et le serveur de base de données. Certaines de ces tâches, comme celles liées au matériel, aux instances de VM, à l'espace de stockage, à la mise en réseau et au système d'exploitation, peuvent être accomplies plus facilement en faisant appel à un fournisseur de services cloud tel que Google Cloud. Qu'un utilisateur gère lui-même une base de données sur site ou dans le cloud, il est responsable de certaines des principales tâches de gestion de base de données nécessaires au bon fonctionnement du système. Ces tâches sont répertoriées ci-dessous.

  • Disponibilité  : les composants matériels et logiciels sont susceptibles de tomber en panne. Cependant, il incombe à l'utilisateur de concevoir le système de sorte qu'il tolère les pannes matérielles et logicielles et garantisse la disponibilité continue de la base de données, du serveur et de l'application.  
  • Maintenance de la base de données : dans l'option MySQL autogéré, les utilisateurs doivent maintenir les différentes couches de la pile d'applications à jour avec les dernières versions du logiciel, et prendre des décisions sur la compatibilité des versions obsolètes, anciennes ou non compatibles du matériel, du système d'exploitation et des autres logiciels. De plus, les utilisateurs doivent installer régulièrement des correctifs de logiciels, de système d'exploitation et de MySQL, tout en gardant la base de données opérationnelle, sans interruption majeure.
  • Évolutivité : à mesure que l'utilisation des applications augmente, il devient nécessaire d'améliorer les performances de la base de données. De même, pour gérer une charge de travail ou une clientèle importante, les ressources matérielles doivent être mises à l'échelle. Cette responsabilité incombe à l'utilisateur dans le cas de MySQL autogéré. Le scaling des ressources matérielles dans un environnement sur site est une activité complexe et chronophage, qui entraîne parfois des temps d'arrêt du système.
  • Sécurité :ces derniers temps, la sécurité est devenue l'aspect le plus important qui s'applique à plusieurs couches du système de base de données, de la sécurisation physique du matériel à la configuration des pare-feu de mise en réseau, en passant par la sécurisation des connexions à la base de données, etc. Il s'agit d'activités complexes qui nécessitent des efforts importants et une expertise spécialisée en cas de configuration autogérée.
  • Surveillance : en plus de la mise en place, de l'installation et de la configuration de MySQL, les utilisateurs doivent également se soucier de la surveillance de divers composants à toutes les couches de la pile, telle que la surveillance au niveau du matériel, du système d'exploitation et de MySQL, et l'application de mesures correctives en cas de défaillance.

Le schéma ci-dessous montre la responsabilité de l'utilisateur lorsqu'il opte pour la configuration autogérée. Alors que l'autogestion sur Google Cloud allège certaines tâches liées au matériel, au calcul, à la mise en réseau et au stockage, les responsabilités liées à la gestion des couches restantes de la pile incombent toujours à l'utilisateur. L'administrateur de base de données et le développeur d'application doivent encore consacrer suffisamment de temps, d'énergie et de ressources à la gestion de MySQL.

Image montrant que toutes les responsabilités d'un administrateur de base de données sont l'hébergement de la base de données autogérée

Qu'est-ce que Cloud SQL pour MySQL ?

Cloud SQL est un service de base de données entièrement géré qui facilite la configuration, la maintenance, la gestion et l'administration de bases de données MySQL, PostgreSQL et SQL Server sur Google Cloud. Cloud SQL gère tous les aspects du matériel, de la mise en réseau, du système d'exploitation, de la sécurité, de la surveillance, de la maintenance, de la disponibilité et du scaling de la base de données MySQL. Toutes ces responsabilités sont dissimulées aux utilisateurs, ce qui leur permet de se concentrer sur le développement d'applications et sur l'offre de valeur ajoutée pour leurs clients.

Le schéma ci-dessous est semblable au schéma ci-dessus, qui montre les tâches de gestion des différentes couches de la base de données MySQL. La seule différence est que toutes les tâches gérées par Cloud SQL pour le compte de l'utilisateur apparaissent en bleu.

Image pour un hébergement de base de données entièrement géré

Outre la gestion des nombreuses tâches illustrées ci-dessus, Cloud SQL offre diverses fonctionnalités et solutions non disponibles de manière native dans un environnement autogéré. Certaines des principales fonctionnalités proposées par Cloud SQL sont répertoriées ci-dessous.

Fiabilité : la sauvegarde et la récupération sont les activités les plus importantes de la gestion de bases de données. Cloud SQL propose des sauvegardes automatiques et des sauvegardes à la demande, qui permettent de restaurer la base de données à un moment précis en cas de corruption, de sinistre ou de modification accidentelle des données. 

Disponibilité  : Cloud SQL offre une haute disponibilité en instanciant plusieurs serveurs hébergeant la base de données sur plusieurs zones, avec une capacité de basculement automatisée pour fournir la disponibilité en cas de défaillance d'une VM ou d'un centre de données. Cloud SQL garantit une disponibilité de plus de 99,95 % partout dans le monde.

Outre la fonctionnalité de haute disponibilité, Cloud SQL propose également une équipe d'ingénierie en fiabilité des sites (SRE, Site Reliability Engineering) 24h/24 et 7j/7 qui est chargée de garantir la fiabilité des instances de base de données Cloud SQL pour MySQL sur Google Cloud.

Les instances répliquées interrégionales avec accès en lecture constituent une autre fonctionnalité qui peut être utilisée en tant que mécanisme de reprise après sinistre en cas de défaillance. Cette fonctionnalité permet à un utilisateur d'afficher rapidement la base de données concernée sur un autre site (région) avec un impact minimal sur l'entreprise. 

Évolutivité : Cloud SQL permet de créer des instances répliquées avec accès en lecture MySQL, telles que des instances supplémentaires en lecture seule de MySQL, dans la même région ou dans des régions distantes permettant le traitement des requêtes des instances répliquées et de l'instance principale, améliorant ainsi les performances de lecture. Les instances répliquées avec accès en lecture peuvent également servir à des fins de reporting et peuvent être détruites lorsque les besoins de l'entreprise sont satisfaits.

Cloud SQL permet le scaling à la hausse des ressources (processeur, mémoire et espace de stockage) et le scaling à la baisse des ressources de l'instance MySQL avec un temps d'arrêt très court. Alors que dans le cas d'une configuration autogérée, ces activités complexes nécessitent d'important efforts, de l'expertise et une planification. 

Sécurité : les serveurs de base de données Cloud SQL pour MySQL sont situés dans des centres de données sécurisés Google Cloud afin de garantir un niveau de sécurité optimal. De plus, Google Cloud offre une connectivité privée grâce au cloud privé virtuel et un accès réseau contrôlé par l'utilisateur avec protection du pare-feu, ce qui garantit que les serveurs de base de données utilisateur sont hors de portée des acteurs malveillants.

Un autre aspect de la sécurité est la conformité avec les réglementations de sécurité. Cloud SQL est conforme à de nombreuses réglementations reconnues, telles que SSAE 16, ISO 27001, PCI DSS et HIPAA. 

Cloud SQL offre la possibilité de gérer les utilisateurs et leur accès à la base de données via l'intégration IAM. Cette intégration gère les autorisations et l'authentification des utilisateurs de Google Cloud, et fournit un accès précis à des ressources spécifiques de Google Cloud, empêchant ainsi tout accès non autorisé à la base de données. De plus, Cloud SQL facilite le contrôle des identités et des accès en fournissant des rôles prédéfinis conçus pour contrôler l'accès à vos ressources Cloud SQL

Une autre fonctionnalité de sécurité de Cloud SQL est le chiffrement des données au repos et en transit, garantissant qu'aucun utilisateur non autorisé ne peut accéder aux données utilisateur.

Cloud SQL offre une fonctionnalité de validation des mots de passe pour les utilisateurs de bases de données. Elle permet aux clients de définir des règles de mots de passe en termes de complexité, de longueur minimale, d'intervalle entre les changements et d'utilisation du nom d'utilisateur dans le mot de passe au niveau de l'instance. Les clients peuvent également définir des règles pour les dates d'expiration des mots de passe, le nombre de tentatives infructueuses et les exigences de changement des anciens mots de passe au niveau de chaque utilisateur. Ces fonctionnalités de Cloud SQL offrent des bonnes pratiques de conformité en matière de sécurité et réduisent le risque d'accès non autorisé aux données critiques.

Cloud SQL offre également un moyen d'auditer les actions et les opérations sur la base de données MySQL à l'aide d'un plug-in de journal d'audit. Le journal d'audit vous indique qui a fait quoi, quelle action, sur quel objet et quand. L'audit de base de données vous permet de suivre des actions spécifiques des utilisateurs dans la base de données, telles que des mises à jour de table, des requêtes de lecture, des attributions de droits d'utilisateur, etc.

Observabilité : Cloud SQL offre diverses solutions de surveillance et propose un nombre croissant de métriques prêtes à l'emploi, qui fournissent des insights sur l'état de la base de données. Les utilisateurs peuvent s'en servir pour créer des alertes destinées à tenir les administrateurs informés de l'état de la base de données. 

Cloud SQL fournit également des fonctionnalités telles que les insights sur les requêtes et les outils de recommandation, qui permettent aux utilisateurs de résoudre les problèmes et d'identifier les goulots d'étranglement de performances liées à une requête ou une charge de travail. Ces fonctionnalités sont difficiles à répliquer dans un environnement MySQL autogéré.

Intégration  : Cloud SQL facilite la connectivité réseau et s'intègre à d'autres services de Google Cloud tels que Google Kubernetes Engine, Compute Engine et Cloud Run, qui simplifient le développement de solutions parfaitement intégrées. Cloud SQL offre également une intégration native avec BigQuery et Looker, qui peuvent être utilisées pour le traitement analytique des données présentes dans Cloud SQL.

Correction : en tant que service géré, Cloud SQL met automatiquement à jour les instances pour garantir que le matériel et le système d'exploitation sous-jacents sont fiables, performants, sécurisés et à jour. La plupart de ces mises à jour sont effectuées tant que votre instance Cloud SQL est opérationnelle. Cependant, certaines mises à jour du système peuvent nécessiter une brève interruption de service pendant laquelle les utilisateurs peuvent définir des intervalles de maintenance pour l'activité de mise à niveau. 

Mises à niveau de versions : Cloud SQL fournit également un processus automatisé de mise à niveau de la version (MySQL) de la base de données. Les utilisateurs peuvent également mettre à niveau la version majeure en migrant les données vers une instance de version supérieure.  

Créer une instance de base de données MySQL dans Cloud SQL pour MySQL

Avantages et inconvénients de MySQL autogéré

Avantages

  1. Possibilité d'utiliser n'importe quelle bifurcation MySQL de l'écosystème MySQL comme MariaDB ou Percona pour configurer MySQL.
  2. Flexibilité sur la configuration de MySQL lorsque les utilisateurs disposent d'un contrôle total sur l'instance, les ressources et le système d'exploitation. De plus, les utilisateurs peuvent utiliser le système d'exploitation de leur choix, le configurer comme ils le souhaitent et configurer MySQL selon leurs besoins, sans aucune limite.
  3. Les utilisateurs ne sont pas contraints par les limites de Cloud SQL, telles que la taille maximale d'espace de stockage de 64 To. Les utilisateurs peuvent dépasser la limite d'espace de stockage de 64 To et utiliser une infrastructure de calcul beaucoup plus élevée pour héberger MySQL.
  4. Les utilisateurs disposent d'un accès complet à l'instance MySQL, y compris des droits SUPER, et d'un accès complet au système d'exploitation, y compris les autorisations sudo.
  5. Les utilisateurs ont la possibilité de configurer des topologies de haute disponibilité et de réplication en fonction de leurs besoins, même si elles ne sont pas compatibles avec Cloud SQL.  

Inconvénients

  1. Les utilisateurs sont chargés de gérer les opérations complexes liées à l'infrastructure matérielle, à la mise en réseau et aux centres de données dans un environnement sur site. Même lorsqu'ils gèrent eux-mêmes MySQL dans le cloud, les utilisateurs doivent faire face à la complexité de la configuration, des disques persistants et des instances, ainsi qu'à la conception et la gestion des clusters à haute disponibilité, la sécurité, la reprise après sinistre et l'évolutivité.
  2. Le fait de maintenir les versions de base de données, les versions des systèmes d'exploitation et les systèmes matériels à jour avec les derniers correctifs pour éviter les bugs et les failles de sécurité peut entraîner des coûts, des ressources, une complexité et des temps d'arrêt considérables.
  3. En plus de la configuration de la base de données, les utilisateurs doivent configurer et gérer la sécurité au niveau de toutes les couches, et pas seulement de la base de données. Ils doivent, par exemple, s'assurer que les connexions sont chiffrées en transit à l'aide de SSL et mettre les certificats à jour. Ils doivent aussi chiffrer les données au repos et gérer l'accès des utilisateurs et des comptes de service aux bases de données.
  4. Pour garantir la disponibilité de l'instance, plusieurs couches du système de base de données doivent être surveillées afin de détecter d'éventuelles défaillances. Les utilisateurs doivent consacrer des ressources supplémentaires à la configuration des outils de surveillance. Les alertes doivent être définies de sorte à informer en cas d'erreurs, et des mesures correctives doivent être prises pour corriger les éventuelles défaillances.
  5. Les utilisateurs doivent consacrer beaucoup de temps, de ressources et d'efforts à la configuration et à la gestion des bases de données au lieu de se concentrer sur le développement d'applications.

Avantages et inconvénients de Cloud SQL pour MySQL

Avantages

  1. Cloud SQL pour MySQL fournit une interface conviviale permettant aux ingénieurs et développeurs de créer, gérer, consulter et surveiller la base de données MySQL, même ceux qui ne disposent pas d'expertise. Pour commencer rapidement, Cloud SQL offre également un moyen simple de migrer des bases de données MySQL existantes depuis le site ou d'autres clouds vers Cloud SQL pour MySQL de Google Cloud.
  2. Cloud SQL pour MySQL offre un ensemble complet de fonctionnalités nécessaires à l'hébergement de bases de données MySQL pour diverses applications, des bases de données de microsites aux applications d'entreprise critiques et importantes, en passant par les applications de jeux vidéo et aux données pour les cas d'utilisation d'analyse. Ces fonctionnalités permettent aux utilisateurs de créer des applications hautement fiables et évolutives.
  3. Cloud SQL partage la responsabilité de la sécurité avec les utilisateurs. Cloud SQL assure la sécurité à des niveaux inférieurs d'infrastructure et de réseau, ce qui permet aux utilisateurs de se concentrer sur la configuration et le développement d'applications de niveau supérieur. 
  4. Cloud SQL fournit diverses fonctionnalités de sécurité telles que les plug-ins de validation de mot de passe et les journaux d'audit qui ne sont pas facilement disponibles dans les versions de la communauté et qui sont complexes à mettre en œuvre dans les environnements autogérés. Cloud SQL simplifie ces fonctionnalités et les met à la disposition des utilisateurs.
  5. Cloud SQL offre plusieurs façons d'interagir avec la base de données. Les utilisateurs peuvent utiliser l'IUG, la CLI et l'API pour personnaliser les opérations en fonction de leurs besoins avec un minimum d'efforts.
  6. Cloud SQL s'intègre facilement à d'autres solutions et produits comme BigQuery, ce qui permet de développer des solutions d'analyse en toute simplicité.
  7. Cloud SQL prend en charge la fiabilité de l'instance de base de données grâce à son infrastructure hautement disponible, à ses solutions d'autoréparation et surtout aux équipes d'ingénierie SRE disponibles 24h/24, 7j/7.
  8. Les utilisateurs consacrent moins de temps et d'efforts aux tâches opérationnelles liées à la base de données. Ils peuvent ainsi se concentrer sur le développement d'applications et augmenter leur capacité à apporter des solutions pour répondre aux besoins de leur entreprise.
  9. Outre la gestion de la base de données, Cloud SQL fournit également des conseils et des recommandations pour améliorer les performances de la base de données à l'aide de fonctionnalités telles que les insights sur les requêtes et les recommandations. Grâce à ces fonctionnalités, l'hébergement et la gestion de la base de données sur le cloud s'avèrent simples, sécurisés et économiques.
  10. Cloud SQL propose des services client pour simplifier et optimiser l'assistance requise en cas de problème ou de requête lié aux bases de données.

Inconvénients

  1. Les bifurcations MySQL de l'écosystème MySQL comme MariaDB et Percona ne sont pas compatibles avec Cloud SQL. 
  2. Certaines fonctionnalités MySQL ne sont pas compatibles. En savoir plus sur les fonctionnalités incompatibles.
  3. Les types de machines offrant jusqu'à 624 Go de RAM et 96 processeurs sont compatibles avec Cloud SQL. Vous pouvez stocker jusqu'à 64 To. Si la base de données a besoin davantage de capacité, l'option autogérée serait la seule option aujourd'hui.

Google Cloud propose une base de données MySQL gérée conçue pour répondre aux besoins de votre entreprise, de la suppression de votre centre de données sur site à l'exécution d'applications SaaS, en passant par la migration de systèmes d'entreprise principaux.