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.

Avalie esse artigo

Relevância
Estilo/Redação

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 mensagens dessa discussão
Comentários da comunidade

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

Receber mensagens dessa discussão

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

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.