BT

Votre opinion compte! Merci de bien vouloir répondre au sondage InfoQ!

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

| par Jan Stenberg Suivre 9 Abonnés , traduit par Julien Delhomme Suivre 1 Abonnés le 30 juil. 2014. Durée de lecture estimée: 2 minutes |

Une note à nos lecteurs : Suite à vos retours, nous avons développé un ensemble de fonctionnalités qui vous permettent de réduire le bruit, tout en ne perdant pas de vue ce qui est important. Recevez des notifications en ligne et par e-mail en choisissant les sujets qui vous intéressent.

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

Donnez-nous votre avis

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

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

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

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

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

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Se connecter à InfoQ pour interagir sur ce qui vous importe le plus.


Récupérer votre mot de passe

Follow

Suivre vos sujets et éditeurs favoris

Bref aperçu des points saillants de l'industrie et sur le site.

Like

More signal, less noise

Créez votre propre flux en choisissant les sujets que vous souhaitez lire et les éditeurs dont vous désirez suivre les nouvelles.

Notifications

Restez à jour

Paramétrez vos notifications et ne ratez pas le contenu qui vous importe

BT