MS Azure : comparatif MySQL entre ClearDB, une Machine Virtuelle MariaDB et Azure MySQL - Partie 2
Retrouvez les 3 premiers points du comparatif
4. Stress test avec mysqlslap
Voici la configuration utilisée pour « mysqlslap » pour notre benchmark avec les configurations ci-dessus :
- Concurrence : 10
- Itérations : 10
- Requête : SELECT * FROM dept_emp;
On va donc envoyer au serveur MySQL, 10 par 10 (c’est la « concurrence »), la requête ci-dessus (« Sélectionner tout le contenu de la table ‘dept_emp’ » – qui contient 331603 lignes), et ça 10 fois d’affilée (ce sont les « itérations »).
La commande lancée depuis notre réseau local est la suivante :
$> mysqlslap --user={user} --password={password} --host={host} --concurrency=10 --iterations=10 --create-schema={nom de la base} --query="SELECT * FROM dept_emp;" –verbose
Voici les temps moyens qui en ressortent :
Benchmark | ClearDB | MariaDB | MySQL preview |
Temps moyen pour faire toutes les requêtes (en secondes) | 80.839 | 107.967 | 62.476 |
Temps MIN pour faire toutes les requêtes (en secondes) | 76.270 | 106.545 | 54.251 |
Temps MAX pour faire toutes les requêtes (en secondes) | 86.037 | 108.777 | 69.031 |
Nombre de clients pour faire toutes les requêtes | 10 | 10 | 10 |
Moyenne du nombre de requête par client | 1 | 1 | 1 |
Cela nous donne un premier ordre d’idée.
Voici un tableau récapitulatif entre temps passé et puissance prévue, ainsi que le coût facturé :
Benchmark | ClearDB | MariaDB | MySQL preview |
Nombre de cœur | ? | 1 | 1 |
Opérations et connexions | 10 connexions simultanées | 300 opérations d’E/S par seconde | ? |
Coût mensuel approx. | 2,78 | 11,29 | 30 |
Temps moyen pour faire toutes les requêtes (en secondes) | 80.839 | 107.967 | 62.476 |
Temps MIN pour faire toutes les requêtes (en secondes) | 76.270 | 106.545 | 54.251 |
Temps MAX pour faire toutes les requêtes (en secondes) | 86.037 | 108.777 | 69.031 |
Nombre de clients pour faire toutes les requêtes | 10 | 10 | 10 |
Moyenne du nombre de requête par client | 1 | 1 | 1 |
Le meilleur rapport coût / temps de réponse serait donc au premier abord ClearDB. Mais avec une limite importante qui s’avère totalement bloquante dans un environnement de production : 10 requêtes simultanées maximum.
N.B. : les temps indiqués dépendent grandement de la qualité de votre connexion internet et de la saturation de la bande passante réseau à un instant donné. Tous les temps ont été récupérés depuis le site de SQLI Lyon dans les heures de non affluence (entre 7h et 9h et entre 18h et 20h).
5. Tests sur configurations similaires au niveau du coût
Si le coût entre en compte dans votre calcul, nous allons monter en gamme sur ClearDB et notre machine virtuelle hébergeant notre MariaDB* et nous allons relancer nos tests. Voici les configurations choisies :
* : les plans supérieurs ne sont pas disponibles sur la preview de MySQL proposée aujourd’hui.
a. ClearDB
Niveau tarifaire : Offre « Saturn » :
- Connexions simultanées : 30
- 5 Go de stockage
- « Entry-Level production ready »
- Mutualisé
- SLA : 100%
- Basculement (« failover ») automatique géo-distribué
- Coût estimé : 49,99 $ / mois (env. 40 €)
b. MariaDB
Niveau tarifaire : « A1_V2 – Standard » :
- 1 Cœur
- 2 Go de mémoire
- 2 disques de données
- 2×500 opérations d’E/S par seconde
- Coût estimé : 25,72 € / mois
Nous allons aussi créer une machine virtuelle supplémentaire avec un stockage SSD, le coût étant plus proche de l’offre choisie sur ClearDB :
Niveau tarifaire : « DS1_V2 – Standard » :
- 1 Cœur
- 5 Go de mémoire
- 2 disques de données
- 3200 opérations d’E/S par seconde
- 7 Go de stockage SSD local
- Coût estimé : 42,66 € / mois
c. MySQL preview
Niveau tarifaire : « De base » :
- 100 unités de calcul
- 50 Go de stockage
- Coût estimé : 30 € / mois
- Disques gérés : oui (https://go.microsoft.com/fwlink/?linkid=839650)
- Pas de groupe de Haute Disponibilité
d. Résultats stress test avec nos nouvelles configurations
Benchmark | ClearDB | MariaDB | MySQL preview | |
HDD | SSD | |||
Nombre de cœur | ? | 1 | 1 | 1 |
Opérations et connexions | 30 connexions simultanées | 2×500 opérations d’E/S par seconde | 3200 | ? |
Coût mensuel approx. € | 40 | 25,72 | 42,66 | 30 |
Temps moyen pour faire toutes les requêtes (en secondes) | 78.323 | 52.080 | 52.298 | 62.476 |
Temps MIN pour faire toutes les requêtes (en secondes) | 74.938 | 49.972 | 47.853 | 54.251 |
Temps MAX pour faire toutes les requêtes (en secondes) | 84.520 | 55.876 | 55.448 | 69.031 |
Nombre de clients pour faire toutes les requêtes | 10 | 10 | 10 | 10 |
Moyenne du nombre de requête par client | 1 | 1 | 1 | 1 |
Nous nous rapprochons des conditions de production, même si la limite haute de 30 connexions simultanées sur ClearDB semble faible. On peut remarquer que notre VM MariaDB (aussi bien avec des disques durs que des disques SSD) a les meilleurs temps de réponse pour le coût le plus intéressant. La solution MySQL preview de Microsoft, pour un coup similaire, obtient également de bons temps de réponse et nous permet aussi d’oublier la partie administration système de notre VM (mise à jour des paquets, etc.).
Relançons nos tests avec 30 connexions simultanées, limite imposée par ClearDB.
Benchmark | ClearDB | MariaDB | MySQL preview | |
HDD | SSD | |||
Nombre de cœur | ? | 1 | 1 | 1 |
Opérations et connexions | 30 connexions simultanées | 2×500 opérations d’E/S par seconde | 3200 | ? |
Coût mensuel approx. € | 40 | 25,72 | 42,66 | 30 |
Temps moyen pour faire toutes les requêtes (en secondes) | 128.298 | 202.084 | 127.052 | 128.967 |
Temps MIN pour faire toutes les requêtes (en secondes) | 124.585 | 129.230 | 125.973 | 128.445 |
Temps MAX pour faire toutes les requêtes (en secondes) | 132.348 | 423.900 | 131.493 | 130.020 |
Nombre de clients pour faire toutes les requêtes | 30 | 30 | 30 | 30 |
Moyenne du nombre de requête par client | 1 | 1 | 1 | 1 |
A nouveau, la nouvelle solution de MS MySQL Preview semble être la plus pertinente au niveau du rapport « temps de réponse / coût » tout en prenant en compte les 30 opérations et connexions maximum sur ClearDB et l’absence d’administration système.
6. Pour aller plus loin
Nous l’avons vu dans cet article, nombreuses sont les solutions et configurations proposées sur la plateforme Azure.
Vous avez le choix entre une solution intégrée à Azure et ses garanties associées (SLA, infrastructure Azure, …), le déploiement d’une machine virtuelle et son administration système associée, ou de passer par un partenaire marketplace intégré à Azure dont vous dépendrez aussi bien pour le support que pour les SLA ou sauvegardes (backups) associées.
Il y en a pour toutes les bourses, et les coûts peuvent rapidement devenir élevés, c’est ici le prix à payer pour la sérénité et la stabilité Azure ; cela dépendra grandement du nombre d’utilisateurs que vous prévoyez dans votre application, votre cible géographique, vos compétences en administration système
Egalement, d’autres plateformes et hébergeurs proposent des services équivalents. Rien ne vous empêche de prendre un serveur dédié (pensez bien à votre scalabilité et vos besoins futurs), une machine virtuelle dans le cloud ou des services totalement gérés de A à Z comme Azure, Firebase (Google), ou encore OVH ou Clever Cloud (des services français si vous êtes sensibles à la souveraineté de vos informations, cf. le Plan Cloud voir #1 et #2)
Matthieu Ambrois, chef de projet SQLI
votre commentaire
Se joindre à la discussion ?Vous êtes libre de contribuer !