Les coulisses techniques de Netflix Plus de 90 clusters de bases de données en production

L'une des pièces maîtresses de l'architecture de production de Netflix est la base Apache Cassandra. Après avoir dû faire face à l'indisponibilité de sa base Oracle pendant 48h suite à une panne du stockage (SAN), Netflix a fait le choix d'Amazon Web Services et de sa base SimpleDB. Néanmoins, face à la croissance de son activité, les ingénieurs de Netflix ont rapidement buté sur les limites de la capacité de ce serveur de données, et ont cherché une autre solution de type open source.

Pouvoir faire face à 1 000 milliards de requêtes chaque jour

Cassandra a été la solution retenue car basée sur Java et totalement distribuée (sans notion de maitre/esclave). Aujourd'hui, 95% des besoins en termes de bases de données sont assumés par Cassandra : les données relatives aux abonnements, aux vidéos visionnées ou en cours de visionnement, chaque interaction de l'utilisateur sont stockés sur Cassandra.

Plus de 90 clusters ont été déployés à ce jour, chacun d'eux pouvant regrouper de 6 à 144 nœuds. Au total, ce sont plus de 2 700 nœuds Cassandra qui sont actuellement en production dans le cloud Amazon Web Services, dans quatre data centers différents sur une configuration de type active-active. Cette architecture est capable de faire face à la bagatelle de 1 000 milliards de requêtes chaque jour.

l'architecture cassandra est en cours d'évolution afin de supporter les données
L'architecture Cassandra est en cours d'évolution afin de supporter les données générées par des millions de devices à des milliards d'événements par jour. © Capture / JDN

Une équipe d'administration de cinq personnes seulement

Les multiples instances Cassandra assurent la réplication des données entre les différentes zones Amazon Web Services afin de garantir la haute disponibilité du service. L'idée étant que l'ensemble des données soient disponible à tous moment dans les trois zones. Pour gérer les clusters Cassandra, l'équipe d'administration, composée de cinq personnes seulement, utilise l'outil Jenkins pour exécuter les jobs de maintenance. Enfin, pour gérer ces clusters sous AWS, ils utilisent Priam, une solution maison aujourd'hui disponible sur le GitHub de Netflix.

Le plus gros cluster en production peut gérer 1 million d'écritures par seconde

Du point de vue applicatif, le client Netflix ne s'adresse jamais à une instance Cassandra spécifique. Absolument tous les appels sont des appels de Web Services de type REST et sont distribués sur les nœuds en production. Le plus gros cluster en production est capable de tenir une charge de 1 million d'écritures par seconde.

Pour simplifier le travail de ses développeurs, Netflix a développé Astyanax, une librairie Java open source qui regroupe les types de requêtes les plus fréquemment réalisés par les applications Netflix sur les clusters Cassandra. Astyanax est aujourd'hui en version 2.0, mais se trouve aujourd'hui en concurrence directe avec CQL (pour Cassandra Query Language).