Un retour d'expérience sur l'utilisation de Cassandra à un très haut niveau chez Discord.
Des problèmes de maintenance majoritairement liés à la manière dont ils utilisaient Cassandra car des ralentissements en lecture sur un noeud impactaient tout le cluster car la lecture/écriture se fait en quorum.
La "compaction" (réindexation) des tables par Cassandra et le GC de la JVM causaient aussi des problèmes de latence.
Ils ont décidé de migrer toutes leurs DB vers ScyllaDB qui est compatible Cassandra mais en C++ donc plus rapide et pas de GC!
Il n'ont pas réglé leur problème qu'avec une nouvelle base de données mais aussi avec des middleware de cache écrit en Rust pour la performance C++ et la sureté mémoire.
La migration fut aussi très compliqué et les premières prévisions étaient extrèmement longues (3 mois) mais la encore un rewrite du connecteur en Rust sauve la mise (9 jours!)
Conclusions:
- plus de stabilité
- 177 noeuds Cassandra à 72 ScyllaDB
- latence p99 40-125ms avec Cassandra et 15ms avec ScyllaDB