Apache Cassandra
Les géants du web se heurtent à un mur. Facebook, qui compte des centaines de millions d'utilisateurs, doit gérer une fonctionnalité apparemment simple : la recherche dans la messagerie. Mais derrière cette simplicité se cache un défi technique redoutable. Chaque jour, des milliards d'écritures affluent dans les systèmes, et la croissance ne montre aucun signe de ralentissement. Les bases de données traditionnelles, conçues dans les années 1970, montrent leurs limites face à ces volumes.
Avinash Lakshman et Prashant Malik s'attellent à la création d'une nouvelle solution pour palier au problème. Lakshman n'arrive pas les mains vides, il a participé chez Amazon à la conception de Dynamo, un système de stockage distribué qui fait référence. Leur intuition consiste à croiser deux approches jusqu'alors distinctes. D'un côté, les principes architecturaux de Dynamo qui ont fait leurs preuves chez Amazon. De l'autre, le modèle de données de BigTable, la solution maison de Google. De cette rencontre naît Cassandra, baptisée d'après la prophétesse de la mythologie grecque.
En juillet 2008, Facebook prend une décision qui va changer la donne. Plutôt que de garder jalousement son code, comme le font Google et Amazon qui se contentent de publier des articles décrivant leurs architectures, le réseau social libère l'intégralité du code source de Cassandra sous licence Apache. Le geste marque une rupture dans les pratiques des entreprises technologiques. L'année suivante, le projet intègre l'incubateur de la fondation Apache, avant d'accéder en février 2010 au statut convoité de projet de premier niveau.
L'architecture de Cassandra rompt avec les schémas établis. Là où les bases de données classiques s'organisent selon une hiérarchie maître-esclave, Cassandra adopte un modèle où tous les nœuds jouent le même rôle. Aucun chef d'orchestre, aucun point de défaillance unique. Les données se répartissent automatiquement entre les machines participantes, et le système grandit horizontalement sans qu'un administrateur ait besoin d'intervenir. Cette décentralisation totale garantit une disponibilité continue, y compris quand certains nœuds tombent en panne.
La redondance des données s'inscrit dans l'ADN du système. Cassandra duplique automatiquement les informations sur plusieurs nœuds. L'administrateur se contente d'indiquer le nombre de copies souhaitées, le reste se fait tout seul. Si une machine lâche, les données restent accessibles ailleurs. Cette approche simple dans son principe s'avère efficace dans la pratique.
Netflix offre un exemple parlant de ce que Cassandra rend possible. En 2011, le service de streaming déploie un cluster de 288 instances dans le cloud. Le système encaisse 1,1 million d'écritures par seconde venues directement des clients. Avec la réplication sur trois zones de disponibilité différentes, ce chiffre grimpe à 3,3 millions d'écritures par seconde. Ces performances auraient été inimaginables quelques années plus tôt avec les technologies conventionnelles.
L'arrivée du langage CQL facilite grandement l'adoption. Sa syntaxe rappelle celle du SQL que connaissent des millions de développeurs dans le monde. Un programmeur habitué aux bases relationnelles est capable de prendre en main Cassandra sans tout réapprendre. Certes, des différences subsistent : pas de jointures par exemple, ce qui reflète le modèle de données dénormalisé du système. Mais le seuil d'entrée baisse considérablement.
La communauté grossit à vue d'œil. En 2012, plus de 1 000 déploiements en production tournent déjà, de eBay à Disney en passant par Netflix. Les outils se multiplient, les intégrations avec Hadoop, Spark ou Solr enrichissent l'écosystème. Le monde du big data trouve en Cassandra un pilier fiable.
DataStax voit le jour en 2010 et apporte une dimension commerciale au projet. L'entreprise embauche les principaux contributeurs et propose une version entreprise avec des fonctionnalités supplémentaires, du support technique et des outils d'administration comme OpsCenter. Le modèle open source trouve là son pendant économique viable.
Les chiffres parlent d'eux-mêmes. Une étude comparative présentée à la conférence Very Large Database en 2012 met Cassandra face à HBase. Les temps de latence en lecture s'avèrent jusqu'à 100 fois plus rapides, le débit huit fois supérieur. Ces résultats ne sortent pas de nulle part : ils découlent directement des choix architecturaux initiaux.
Les versions se succèdent et apportent leur lot d'améliorations. La 1.0 en 2011 optimise les performances et compresse les données. La 2.0 en 2013 introduit des transactions légères via le protocole Paxos. La 3.0 en 2015 ajoute les vues matérialisées. La 4.0 en 2021 déploie le streaming sans copie et supporte Java 11. Chaque itération pousse un peu plus loin les capacités du système.
Instagram, racheté par Meta, s'appuie sur Cassandra pour gérer les données de plus d'un milliard d'utilisateurs actifs chaque mois. Les cas d'usage se diversifient : séries chronologiques, analyse temps réel, gestion de contenus multimédias, commerce électronique. Partout où les volumes explosent et où l'indisponibilité coûte cher, Cassandra trouve sa place.
L'impact dépasse la seule dimension technique. Cassandra démontre qu'une base de données peut conjuguer haute disponibilité, montée en charge linéaire et performances élevées. Ces trois piliers répondent exactement aux besoins des applications web contemporaines, où chaque minute d'arrêt se compte en millions et où les données ne cessent de croître.
Cassandra trouve un terrain favorable dans le déploiement hybride et multi-cloud. Le système fonctionne de façon transparente sur plusieurs centres de données ou fournisseurs cloud différents. Tout en gardant leurs données cohérentes, les entreprises échappent ainsi à la dépendance vis-à-vis d'un unique prestataire.
D'autres projets s'inspirent de Cassandra. ScyllaDB intègre ses concepts en C++ pour gagner encore en performances. L'architecture décentralisée et le modèle de cohérence ajustable servent désormais de référence dans le domaine du stockage distribué.
Vingt ans après sa naissance, Apache Cassandra demeure une pièce maîtresse de l'écosystème NoSQL. Son histoire raconte la maturation des architectures distribuées et leur capacité à s'adapter aux exigences toujours plus élevées des applications modernes. Ce qui commença comme une solution interne chez Facebook est devenu un standard de facto pour quiconque doit gérer des données massives avec des garanties de disponibilité strictes.