En regardant Redis : sommes-nous vraiment des développeurs qui inventent ?
(blog.day1swhan.com)En observant l’écosystème Redis, je me demande une fois de plus si je peux vraiment affirmer avec assurance que je suis un développeur qui invente.
La naissance du stockage key-value
- À partir des années 2000, avec l’arrivée de l’ère du Web 2.0, les entreprises de services web se sont retrouvées confrontées à la nécessité d’absorber un nombre énorme d’utilisateurs
- Pour supporter cet immense trafic, il est devenu nécessaire de disposer non pas de gros et magnifiques serveurs, mais de systèmes distribués massifs, petits et bon marché
- Heureusement, la plupart des structures de données étaient simples (ex. récupérer les informations de
userid = 1234) - Utiliser une base de données relationnelle (RDBMS) était trop lourd, trop coûteux et trop complexe
- Le théorème CAP a fait son apparition
- Alors, quitte à abandonner la cohérence, autant privilégier la disponibilité et la vitesse
- C’est ainsi qu’est née une base de données simple qui renvoie une valeur quand on lui donne une clé (Memcached-2003, Amazon Dynamo-2007)
La naissance de Redis
- En Italie, pays des pâtes, un développeur nommé Salvatore Sanfilippo dirigeait une startup appelée LLOOGG (oui, l’orthographe de Log avec deux lettres est correcte)
- LLOOGG proposait un service de suivi en temps réel des visiteurs de sites web
- C’était une petite structure, mais avec de vrais utilisateurs
- À l’époque, l’analyse en temps réel était un travail assez difficile
- Les données ont commencé à s’accumuler → le RDBMS existant est devenu progressivement plus lent → la réactivité en temps réel n’était plus au rendez-vous
- Pour obtenir une réponse en temps réel, il fallait utiliser la mémoire → Memcached ne prenait alors en charge que des opérations simples de type GET et PUT sur des chaînes de caractères
- Il fallait des fonctions de dictionnaire un peu plus étendues, comme INCR, DECR ou LIST, mais il n’existait aucune base de données de ce type ? → Bordel, je vais la faire moi-même
- C’est ainsi qu’est née la première version, fonctionnant sur un serveur TCP ultra simple (sans fonctionnalités avancées comme le cluster, l’AOF ou la réplication)
L’évolution de Redis
- Redis n’est pas né pour être un cache, mais comme un stockage de structures de données pour le traitement en temps réel
- Pourtant, les gens ont commencé à l’utiliser comme cache
- Les besoins en structures de données allant au-delà du cache ont augmenté chez les géants existants (Facebook, Twitter, GitHub, Stack Overflow, etc.)
- Son adoption a commencé progressivement, d’abord pour de petites fonctions comme le stockage de session, la gestion des jetons de connexion, les compteurs en temps réel, les systèmes de classement ou le nombre de likes
- Les fonctionnalités et structures de données nécessaires ont été ajoutées de façon évolutive (Sorted Set, HASH, Cluster, persistance...)
- Redis est ainsi devenu une plateforme flexible de traitement des données
La communauté, l’UX et la philosophie du développeur
- Redis repose sur une philosophie : même avec beaucoup de fonctionnalités, cela ne doit pas devenir complexe
- La documentation officielle fournit des exemples exécutables immédiatement via le CLI, avec des explications claires sur le comportement
- Les commandes intuitives (
SET,GET,LPUSH,ZADD,HGETALL, etc.) permettent de comprendre immédiatement leur rôle en parcourant rapidement la documentation officielle - Cette intuitivité ne se contente pas d’être pratique : elle réduit la barrière psychologique face à l’outil et augmente la productivité des développeurs
- La polyvalence qui découle de cette structure profite aux utilisateurs, aux fournisseurs cloud et aux contributeurs open source
- Dans cet écosystème construit sur l’intérêt mutuel, Redis s’est imposé comme le standard de fait des bases de données in-memory, grâce à un choix non imposé
En regardant l’écosystème Redis
- Redis est parti d’un moyen de mettre en œuvre une idée somme toute banale : l’analyse en temps réel des visiteurs
- Il a dépassé les limites de l’approche existante qu’était SQL (lente et coûteuse) grâce à une nouvelle manière de faire
- Ce n’était pas une optimisation des anciennes règles via les relations commerciales, la pression sur les fournisseurs, le tuning matériel ou la limitation de l’usage
- Redis a créé une nouvelle règle : faire de la mémoire l’élément central de la base de données
- Pour concevoir directement des outils, proposer des approches inédites et faire en sorte que le monde entier les adopte, les connaissances fondamentales sont essentielles pour l’application
- Rien qu’en regardant Amazon Dynamo, conçu pour résoudre le problème du stockage du panier, on voit que l’application de connaissances complexes sur les systèmes distribués est indispensable
- Lorsqu’un standard de l’industrie naît du choix volontaire de tous, cela crée une immense valeur ajoutée et des emplois
- Il suffit de voir les experts Redis, l’infrastructure matérielle, les contenus de formation, les services managés (AWS, Azure) ou les solutions spécialisées (Redis Enterprise) pour s’en convaincre
- Tout cela n’a pas été créé par des politiques publiques ou des lois du genre « sauver telle industrie » ou « soutenir les PME »
Nous devrions nous demander si nous ne sommes pas encore un pays seulement développé en apparence, vivant peut-être toujours avec les schémas mentaux de l’ère industrielle, tout en s’imaginant à tort que les développeurs sont des travailleurs du secteur des services de la connaissance.
- Sommes-nous capables de prouver par les résultats pourquoi les technologies fondamentales (ex. les algorithmes) sont importantes ?
- Avons-nous une culture de développeurs et un système éducatif capables de fabriquer des outils pour résoudre les problèmes ?
- Tout le monde dit qu’il faut cultiver une culture qui tolère l’échec, mais est-ce que moi-même je ne me mets pas en colère ou n’insulte pas les autres à la moindre erreur ?
- Pouvons-nous vraiment comprendre la véritable valeur ajoutée de l’industrie des services de la connaissance et la défendre avec persévérance ?
Je me rappelle qu’un vrai développeur n’est pas simplement quelqu’un qui sait bien utiliser des outils, mais une personne qui, même imparfaitement, conçoit elle-même les outils dont elle a besoin, puis les rend faciles à utiliser par les autres afin d’élargir l’écosystème et de créer de la valeur ajoutée.
2 commentaires
J’ai l’impression d’être un imposteur, snif
L’invention de l’utilité…