Em sua recente palestra sobre DDD Reativo com Scala e Akka (uma implementação de Modelo de Atores), Vaughn Vernon, autor do livro Implementing Domain-Driven Design, explora o uso de Modelo de Atores combinado com Desenvolvimento Guiado por Domínio, DDD, na redução da sobrecarga arquitetural encontrada frequentemente em arquiteturas orientadas à eventos ou hexagonais.
O termo "Reativo" empregado ultimamente não se refere à um conceito totalmente novo devido a familiaridade com o tratamento de eventos ou mensagens, mesmo assim Vaughn define algumas características básicas do modelo de atores:
- Mensageria Assíncrona Direta: um ator transmite uma mensagem para outro ator diretamente e de forma assíncrona;
- Concorrência Livre de Travas: os bloqueios não são manipulados pelos atores, somente pela infraestrutura;
- Nenhum compartilhamento: os atores não devem saber sobre o estado interno de outros atores.
Uma das principais motivações de Vaughn em aplicar o DDD é modelar os aspectos centrais do negócio de maneira mais explicita. Porém em uma arquitetura típica orientada à eventos, na qual o modelo de domínio é explícito e os eventos de domínio contribuem com alguma expressividade para o modelo, quando um evento é publicado, ainda pode ser difícil localizar no código os lugares nos quais ocorrem reações decorrentes do evento, ocasionando impacto no modelo.
Em contraste, Vaughn acha o modelo de atores bastante explícito, ficando evidente no código quando um ator envia uma mensagem à outro ator.
Uma pergunta para Vaughn é: quanto podemos nos beneficiar do uso do modelo de atores com DDD? Talvez seja somente uma questão de enviar as mensagens entre Aggregates usando a mesma arquitetura que antes? A resposta de Vaughn é não, porque é possível se livrar da sobrecarga arquitetural encontrada frequentemente em arquiteturas orientada à eventos e hexagonais. Com o framework correto podemos reduzir a arquitetura à somente Controllers e Aggregates nos quais os Controllers podem ser atores que sabem como enviar mensagens a fim de interagir com Aggregates no modelo.
Vaughn não reconhece quaisquer limitações reais para o uso do modelo de atores e DDD, em vez disso ambos podem ser aplicados quando houver necessidade de alta escalabilidade, alto desempenho e baixa latência.
O Akka é construído para a Máquina Virtual Java, JVM, porém Vaughn está trabalhando em uma implementação Akka.NET, um esforço a fim de portar o Akka para C# e F#.
No início deste ano, Vaughn falou sobre a base do modelo de atores com DDD.
O Manifesto Reativo foi publicado em Setembro de 2013 e descreve as ideias principais por trás do conceito.