MySQL est l’un des systèmes de bases de données relationnelles les plus utilisés dans des projets de petite et moyenne envergure. Sa gratuité et sa simplicité d’installation, de maintenance, sa simplicité d’utilisation ainsi que sa communauté sont des arguments principaux de ce système.

Son plus gros problème reste que s’il est parfaitement adapté à un projet de petite / moyenne envergure, il est rapidement écarté pour de plus gros projets à cause de la difficulté d’installation / administration d’un cluster MySQL par des utilisateurs non aguerris.

D’autres difficultés arrivent également avec la montée en popularité d’une application utilisant MySQL, soit les clusters deviennent suffisamment conséquents pour être difficilement gérables, soit l’application contient trop de données, et un sharding doit être envisagé. Sharding qui, sous MySQL de base, doit se faire le plus souvent au sein de l’application elle-même.

En clair, MySQL est parfaitement adapté à de petits projets, mais lorsqu’on en vient à s’appuyer dessus pour un projet en production et à forte expansion, on est vite débordés, et c’est ici que Vitess entre en jeu.

Le projet

Vitess est un système entamé en 2010 par Youtube afin de répondre aux problèmes de scalabilité qu’ils rencontraient avec MySQL.

Le projet a reçu la certification CNCF Graduation Criteria v1.0 car il s’integre parfaitement dans un evironnement CloudNative et a acquis une communaute active étendue.
Ainsi, Youtube, Slack, GitHub, WeaveWorks, Better Cloud et Pinterest sont des consomateurs/contributeurs actif de ce projet.

Principes & Avantages

La topologie de Vitess est simple : un daemon chargé de recevoir les connexions SQL, traiter et de les proxiser, sur le bon serveur MySQL sous-jacent.

Vitess est donc un proxy MySQL capable de faire de l’optimisation à la volée, ainsi que du sharding, le tout en un temps minimal pour des performances spectaculaires.

Les principaux arguments de Vitess sont :

  • une gestion facilitée apportant des fonctionnalités de failover et de réplication automatique,
  • Optimisation automatique des requêtes les plus gourmandes avant de les passer à MySQL,
  • Connection Pooling,
  • scalabilité en abstrayant la notion de sharding, inexistante dans MySQL de base.

Deploiement

Il est possible de déployer Vitess de trois façons principales :

  • Local (bare metal),
  • Docker,
  • Kubernetes (Helm).

Le projet propose sur son site plusieurs exemples de quickstart pour chacune des solutions d’installation. N’hésitez pas à aller y jeter un œil !