BT

Akka e DDD: Combinando Programação Reativa e Domain-Driven Design

por Jan Stenberg , traduzido por Gabriel Ozeas em 23 Dez 2013 |

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.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2013 C4Media Inc.
Política de privacidade
BT