Bienvenue dans l'ère "Solid" de Rails
Si vous débutez avec Rails ou si vous avez récemment entendu parler de Rails 8, vous avez probablement croisé ces trois noms mystérieux : Solid Cache, Solid Cable et Solid Queue. Ces trois gemmes forment ce qu'on appelle le "triumvirat Solid" (ou "Solid Trifecta" en anglais) et représentent l'une des évolutions les plus importantes de Rails depuis des années.
Mais pourquoi tant d'enthousiasme ? Parce que ces trois outils vous permettent de construire une application Rails complète et performante sans Redis ni aucune dépendance externe. Fini le casse-tête de la configuration de multiples services ! Tout tourne avec votre base de données.
Dans cette série d'article, nous allons explorer en profondeur chaque composant du triumvirat, comprendre comment ils fonctionnent, et surtout, apprendre à les utiliser avec des exemples concrets. Que vous soyez développeur junior ou simplement curieux, à la fin de cette lecture, vous maîtriserez ces trois outils essentiels de Rails 8.
On va également beaucoup parler de Redis donc si vous voulez apprendre ce que c'est ou vous rafraichir la mémoire, allez lire mon article ultra complet sur le sujet : Redis et Rails 8 : Le Guide Complet pour Développeurs Juniors
Pourquoi le Triumvirat Solid existe-t-il ?
Le problème traditionnel
Avant Rails 8, si vous vouliez construire une application Rails moderne avec des fonctionnalités avancées, votre stack ressemblait généralement à ceci :
- PostgreSQL ou MySQL : votre base de données principale
- Redis : pour le cache
- Redis ou Sidekiq : pour les tâches de fond (background jobs)
- Redis : pour Action Cable (fonctionnalités temps réel)
Vous voyez le pattern ? Redis partout ! Et bien que Redis soit excellent, il introduit plusieurs contraintes :
- Complexité de déploiement : un service de plus à gérer, monitorer et maintenir
- Coûts supplémentaires : sur des plateformes comme Heroku, chaque add-on a un prix
- Dépendance externe : si Redis tombe, plusieurs parties de votre app tombent aussi
- Courbe d'apprentissage : encore une technologie à apprendre pour les juniors
La philosophie "Solid"
L'équipe de Basecamp (les créateurs de Rails) a eu une réflexion simple mais puissante :
"Et si on utilisait notre base de données pour tout faire ?"
Avec les SSD modernes (notamment les NVMe), le stockage sur disque est devenu suffisamment rapide pour rivaliser avec la RAM dans beaucoup de cas d'usage. De plus, les bases de données modernes comme PostgreSQL et MySQL ont énormément progressé en performance.
Le résultat ? Un Rails plus simple, plus léger, et tout aussi performant pour 80% des applications.
Solid Cache : Le Cache Basé sur la Base de Données
Qu'est-ce que le cache, exactement ?
Avant de plonger dans Solid Cache, comprenons ce qu'est le cache. Imaginez que vous ayez un site e-commerce avec une page d'accueil qui affiche les produits les plus populaires. À chaque visite, le serveur doit :
- Interroger la base de données
- Calculer les statistiques
- Générer le HTML
- Envoyer la réponse
Si vous avez 1000 visiteurs par minute, vous répétez cette opération 1000 fois... pour afficher exactement le même contenu ! C'est du gaspillage de ressources.
Le cache résout ce problème en stockant le résultat de cette opération coûteuse en mémoire. La prochaine fois, au lieu de tout recalculer, on récupère simplement le résultat stocké. C'est comme garder votre tasse de café préférée sur votre bureau plutôt que dans le placard de la cuisine.
Solid Cache : Comment ça fonctionne ?
Solid Cache remplace les solutions traditionnelles (Redis, Memcached) par un système de cache basé sur votre base de données.
L'architecture
Solid Cache utilise une simple table dans votre base de données appelée solid_cache_entries. Voici sa structure :
Le principe :
- Quand vous mettez en cache une donnée, elle est stockée dans cette table
- Quand vous la récupérez, Rails fait une requête SQL ultra-rapide sur l'index key_hash
- Les entrées sont automatiquement nettoyées selon votre configuration
Pourquoi c'est rapide malgré le disque ?
Vous vous demandez sûrement : "Une base de données sur disque ne peut pas être aussi rapide que Redis en RAM, non ?"
Excellente question ! Voici pourquoi ça fonctionne :
- Les SSD modernes sont ultra-rapides : Les NVMe atteignent des vitesses de lecture/écriture impressionnantes
- Cache au niveau de la base de données : PostgreSQL et MySQL mettent en cache les données fréquemment accédées en RAM
- Stockage massif : Avec le disque, vous pouvez stocker 100x plus de données qu'avec Redis, ce qui signifie moins de cache misses
- Retention plus longue : Basecamp garde 10 To de cache pendant 60 jours !
Installation et Configuration
Sur Rails 8
Bonne nouvelle : Solid Cache est activé par défaut sur Rails 8 ! Rien à faire lors de la création d'une nouvelle app :
C'est tout ! Solid Cache est déjà configuré en production.
Sur Rails 7.1+ (installation manuelle)
Si vous utilisez une version antérieure de Rails 8 :
Ensuite, configurez votre config/database.yml :
Et dans config/environments/production.rb :
Configuration dans config/cache.yml
Exemples Pratiques
Exemple 1 : Cacher une requête coûteuse
Comment ça marche :
- La première fois, Rails ne trouve rien dans le cache
- Le bloc s'exécute, la requête est faite
- Le résultat est stocké dans solid_cache_entries avec la clé "popular_products"
- Les visites suivantes récupèrent directement le résultat du cache
- Après 1 heure, l'entrée expire et le cycle recommence
Exemple 2 : Cacher un calcul complexe
Exemple 3 : Cacher une vue partielle
Dans vos vues, vous pouvez utiliser le cache de fragments :
Rails génère automatiquement une clé unique basée sur :
- Le modèle (Product)
- L'ID du produit
- La dernière mise à jour (updated_at)
Si le produit change, le cache est automatiquement invalidé !
Exemple 4 : Gérer le cache manuellement
Opérations de Maintenance
Activer le cache en développement
Par défaut, le cache est désactivé en développement. Pour l'activer :
Cette commande crée un fichier tmp/caching-dev.txt. Relancez-la pour désactiver le cache.
Monitoring du cache
Solid Cache vs Redis : Quand utiliser quoi ?
|
Critère
|
Solid Cache
|
Redis
|
|---|---|---|
|
Vitesse
|
Rapide (disque + cache DB)
|
Très rapide (RAM pure)
|
|
Capacité
|
Massive (plusieurs TB)
|
Limitée (RAM coûteuse)
|
|
Persistance
|
Oui, sur disque
|
Optionnelle
|
|
Simplicité
|
Très simple (intégré Rails)
|
Configuration externe
|
|
Coût
|
Faible (utilise disque)
|
Plus élevé (RAM)
|
|
Cas d'usage
|
Apps petites/moyennes
|
Apps haute performance
|
Utilisez Solid Cache si :
- Vous démarrez un nouveau projet Rails 8
- Vous voulez simplifier votre infrastructure
- Vous n'avez pas besoin de performance extrême
- Vous voulez stocker beaucoup de données en cache
Gardez Redis si :
- Vous avez besoin de performance maximale
- Vous utilisez les fonctionnalités avancées de Redis (pub/sub, sorted sets). Vous ne savez pas ce que c'est ? Allez lire mon article sur le sujet : Redis et Rails 8 : Le Guide Complet pour Développeurs Juniors
- Vous avez déjà une infrastructure Redis bien rodée
Conclusion : Solid Cache, le super cache natif de Rails
Solid Cache, c’est le cache Rails repensé pour la simplicité et la performance. En s’appuyant sur Active Record et une base SQL, il élimine les frictions liées à Redis tout en offrant une API familière et puissante. Que ce soit pour optimiser les performances de vos vues, réduire les appels à des services externes ou accélérer vos requêtes, Solid Cache s’intègre naturellement dans votre stack Rails.
Avec Rails 8 qui l’adopte officiellement, il est temps de dire adieu aux configurations complexes et de profiter d’un cache robuste, lisible et facile à maintenir.
🚀 Moins de dépendances, plus de clarté. Solid Cache, c’est le cache Rails comme on l’a toujours rêvé.
