À retenir
- Sépare la modification (Commande) de la consultation (Requête).
- Permet d'optimiser les performances de manière indépendante pour chaque côté.
- Augmente la complexité technique et le temps de développement.
Le CQRS est une manière d'organiser le code d'une application en séparant strictement les actions qui modifient les données (les écritures) de celles qui servent uniquement à les afficher (les lectures). Imaginez un restaurant où une équipe s'occupe exclusivement de préparer les plats en cuisine (écriture) tandis qu'une autre équipe gère uniquement le menu et la prise de commande en salle (lecture) : cela permet à chaque groupe d'être plus efficace dans sa tâche spécifique sans se gêner.
Étymologie
Acronyme anglais signifiant Command Query Responsibility Segregation (en français : Séparation des Responsabilités de Commande et de Requête). Ce concept a été popularisé par Greg Young à la fin des années 2000, en s'inspirant du principe CQS (Command Query Separation) théorisé par Bertrand Meyer.
Exemples d'usage
- Une application de e-commerce où la consultation des fiches produits (très fréquente) utilise un circuit rapide, tandis que le passage de commande (complexe et critique) utilise un circuit sécurisé différent.
- Un réseau social où l'affichage de votre fil d'actualité est géré par une base de données optimisée pour la lecture, alors que la publication d'un nouveau message passe par un moteur de traitement plus lourd.
Cas d'usage
On utilise le CQRS dans des systèmes complexes ou à forte charge où les performances de lecture et d'écriture ont des besoins très différents. Il est souvent employé dans les architectures de microservices, les systèmes de finance ou les applications de Big Data.
Bonnes pratiques
Il ne faut pas appliquer le CQRS partout : c'est un modèle qui ajoute de la complexité. Le piège classique est de l'utiliser sur un petit projet simple alors qu'un modèle CRUD traditionnel (Create, Read, Update, Delete) suffirait. Il faut aussi bien gérer la cohérence des données si les deux circuits ne partagent pas la même base.
Synonymes
Antonymes
Conseil
Si vous débutez, commencez par maîtriser les architectures classiques. Ne vous lancez dans le CQRS que si votre application rencontre des problèmes de performance réels ou si les règles métier de modification sont extrêmement complexes par rapport à la simple lecture.
Questions fréquentes
Faut-il deux bases de données pour faire du CQRS ?
Pas obligatoirement, on peut utiliser une seule base avec des modèles de données différents, mais l'usage de deux bases distinctes est fréquent pour maximiser la performance.
Quelle est la différence avec le CQS ?
Le CQS s'applique au niveau des fonctions ou méthodes dans le code, alors que le CQRS s'applique au niveau de l'architecture globale de l'application.