BT

Accueil InfoQ Actualités Construire une application réactive basée sur DDD et CQRS avec Akka

Construire une application réactive basée sur DDD et CQRS avec Akka

Favoris

L'objectif du Domain-Driven Design est de décomposer un domaine métier complexe en éléments faciles à manipuler, en prenant en compte les besoins de scalabilité et de cohérence. Combiné à CQRS, il est possible de construire des plate-formes applicatives s'appuyant sur des concepts comme les Bounded Contexts, les périmètres transactionnels et les communications à base d'événements. Pawel Kaczor a initié une série d'articles en trois parties décrivant la construction d'une application réactive utilisant ces concepts avec Akka, la plate-forme open-source pour applications pilotées par les événements.

Pawel, qui est un consultant impliqué dans CQRS et Scala, affirme que la cohérence garantie par des transactions globales est un besoin artificiel, qui ne correspond à aucune exigence réelle même dans le cadre de systèmes d'entreprise. Pour bénéficier pleinement d'une architecture DDD/CQRS, il suggère certaines technologies sur lesquelles s'appuyer : des bases NoSQL pour le stockage et Akka, dans le cas où l'on se trouve en environnement JVM. Un module de persistance récemment publié permet d'assurer la persistance des processus, ce qui, pour Pawel, permet de considérer Akka comme une plate-forme de construction d'applications d'entreprise.

L'exemple que donne Pawel commence par la construction de la racine d'un agrégat (Aggregate Root) utilisant l'Envent Sourcing avec Akka. Un Aggregate Root devrait être modélisé comme un acteur Stateful qui, de façon asynchrone, accepte des commandes et produit des événements. Quand une commande est acceptée, un message d'événement représentant la réception de cette commande est produit et, une fois que la persistance de cet événement a été effectuée, un message d'acquitement est retourné puis l'événement propagé.

Dans Akka, un acteur est créé par un autre acteur, qui devient son superviseur. Ce pattern de supervision signifie que l'interaction d'un client peut être simplifiée en utilisant un unique acteur pour la création des acteurs de racines d'agrégats. Pour la fin du cycle de vie, un acteur ayant terminé son traitement et étant devenu inactif devrait demander à son parent d'être éliminé ou arrêté.

Du côté Query, Pawel implémente l'infrastructure nécessaire au travail avec les projections. Deux modules Akka sont disponibles : Akka Persistence, signalé comme étant à l'état expérimental et supportant le concept de projection, et Akka Streams, actuellement en cours de développement et implémentation du standard récemment annoncé pour le traitement de flux asynchrones sur la pate-forme JVM.

Pawel a mis les sources de son exemple à disposition sur github.

Evaluer cet article

Pertinence
Style

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

BT

Votre profil est-il à jour? Merci de prendre un instant pour vérifier.

Note: en cas de modification de votre adresse email, une validation sera envoyée.

Nom de votre entreprise:
Rôle dans votre entreprise:
Taille de votre entreprise:
Pays/Zone:
État/Province/Région:
Vous allez recevoir un email pour confirmer la nouvelle adresse email. Ce pop-up va se fermer de lui-même dans quelques instants.