<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sandro Souza</title>
    <description>The latest articles on DEV Community by Sandro Souza (@ssoliveirasp).</description>
    <link>https://dev.to/ssoliveirasp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F571431%2Febcb7183-7385-4088-99b9-d45e512ab184.jpeg</url>
      <title>DEV Community: Sandro Souza</title>
      <link>https://dev.to/ssoliveirasp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ssoliveirasp"/>
    <language>en</language>
    <item>
      <title>AMQP - Propriedades de Mensagem</title>
      <dc:creator>Sandro Souza</dc:creator>
      <pubDate>Wed, 05 May 2021 19:30:03 +0000</pubDate>
      <link>https://dev.to/ssoliveirasp/amqp-propriedades-de-mensagem-24n5</link>
      <guid>https://dev.to/ssoliveirasp/amqp-propriedades-de-mensagem-24n5</guid>
      <description>&lt;h3&gt;
  
  
  COMPONENTES DE UMA MENSAGEM PUBLICADA
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HWHx6ixP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dt61tottmy84q3t5fs67.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HWHx6ixP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dt61tottmy84q3t5fs67.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  PROPRIEDADES (AMQP)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4m83KT2z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gijijv1634s0b299onei.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4m83KT2z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gijijv1634s0b299onei.png" alt="image"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h4&gt;
  
  
  USO DA APLICAÇÃO
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;message-id&lt;/strong&gt; short-string &lt;/p&gt;

&lt;p&gt;Alguns tipo de mensagem necessitam de um identificador único para que os sistemas possam identificar esta mensagem individualmente a medida que passam por diversos sistemas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;correlation-id&lt;/strong&gt; short-string &lt;/p&gt;

&lt;p&gt;Embora não haja uma definição formal para o ID de correlação na especificação AMQP, uma opção é usá-lo para transportar um ID de transação ou outros dados semelhantes aos quais a mensagem está fazendo referência.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;timestamp&lt;/strong&gt; timestamp &lt;/p&gt;

&lt;p&gt;A propriedade timestamp não tem definição formal, mas pode ser usado para definir quando a mensagem foi criada. &lt;br&gt;
Uma opção é usá-la quando existe um acordo de nível de serviço (SLA) que seus processos precisam aplicar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;delivery-mode&lt;/strong&gt; octet &lt;/p&gt;

&lt;p&gt;O modo de entrega propriedade tem dois valores possíveis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;1 - Para uma mensagem não persistente (gravar em memória).&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QdAAhXN_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9mmpqu0afx3zmz442af0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QdAAhXN_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9mmpqu0afx3zmz442af0.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2 - Para uma mensagem persistente mensagem (gravar no disco).&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gTBvaUE_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oar67q5qjjyajk5rzeb2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gTBvaUE_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oar67q5qjjyajk5rzeb2.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;app-id&lt;/strong&gt; short-string &lt;br&gt;
Útil para definir qual usuário que está publicando a mensagem. Uma opção é usá-la para o consumidor conseguir validar a origem da mensagem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;user-id&lt;/strong&gt; short-string &lt;br&gt;
Útil para definir qual usuário que está publicando a mensagem. Uma opção é usá-la para o consumidor conseguir validar o usuário que publicou a mensagem e realizar validações.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;contentencoding&lt;/strong&gt;  short-string &lt;br&gt;
Mensagens enviadas pelo AMQP não utiliza compressão por padrão. Isto pode ser problemático com mensagens grande quantidade de conteúdo, por exemplo usando XML, JSON ou YAML.&lt;br&gt;
Desta forma especifique se o corpo da sua mensagem é codificado de alguma forma especial, como zlib, deflate, ou Base64&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;content-type&lt;/strong&gt; short-string &lt;br&gt;
Aplicação que especifica o tipo de messagem no corpo das mensagens usando MIME-TYPES (Json, Texto e etc..)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TQlM7H-7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mdd0aupjabqaaet0olax.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TQlM7H-7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mdd0aupjabqaaet0olax.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;type&lt;/strong&gt; short-string &lt;br&gt;
Descreve o Tipo de Mensagem ou Payload da mensagem publicada. Uma opção é usá-la para determinar qual o formato de serialização utilizado na mensagem como: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://thrift.apache.org/"&gt;Apache Thrift&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://code.google.com/p/protobuf/"&gt;Google’s Protobuf&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://msgpack.org/"&gt;MessagePack&lt;/a&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;headers&lt;/strong&gt; table &lt;br&gt;
Tabela de "chave/valor" de formato livre que você pode usar para adicionar metadados adicionais sobre a mensagem.&lt;br&gt;
Sendo possível rotear com base nisso se&lt;br&gt;
desejado.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k5MhvCrj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v492me8yg1nhrt95gnl5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k5MhvCrj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v492me8yg1nhrt95gnl5.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;priority&lt;/strong&gt; octet &lt;br&gt;
Propriedade para ordenação de prioridade em filas.&lt;br&gt;
É definido como um número inteiro com valores possíveis de 0 a 9 a serem usados ​​para priorização de mensagens em filas.&lt;br&gt;
Conforme especificado, se uma mensagem com prioridade 9 for publicada, e subsequentemente, uma mensagem com prioridade 0 é publicada, um novo&lt;br&gt;
o consumidor receberia a mensagem com a prioridade 0 antes da mensagem com um&lt;br&gt;
prioridade de 9. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;expiration&lt;/strong&gt; short-string &lt;/p&gt;

&lt;p&gt;Define o TTL (time to live) da mensagem indicando quando o mensagem irá expirar. Sendo definido um tempo em milissegundo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Referencias
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.enterpriseintegrationpatterns.com/patterns/messaging/CorrelationIdentifier.html"&gt;Messaging Patterns - Correlation Identifier&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.manning.com/books/rabbitmq-in-depth"&gt;RabbitMQ in Depth&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rabbitmq</category>
    </item>
    <item>
      <title>Integration Patterns (Integrações de Aplicações)</title>
      <dc:creator>Sandro Souza</dc:creator>
      <pubDate>Tue, 16 Mar 2021 12:08:17 +0000</pubDate>
      <link>https://dev.to/ssoliveirasp/integration-patterns-integracoes-de-aplicacoes-2c3e</link>
      <guid>https://dev.to/ssoliveirasp/integration-patterns-integracoes-de-aplicacoes-2c3e</guid>
      <description>&lt;p&gt;Em algum momento as aplicações para atender uma funcionalidade de negócio precisam se comunicar. &lt;/p&gt;

&lt;p&gt;Para realizar esta integração existem múltiplas abordagens que podem ser resumidas em quatro estilos de integração.&lt;/p&gt;

&lt;h3&gt;
  
  
  Integração baseadas em "Arquivo"
&lt;/h3&gt;

&lt;p&gt;Uma aplicação atua como "Publicador de Arquivos" criando ou atualizando arquivos em uma determinada pasta. &lt;br&gt;
Outras aplicações observam a pasta para processar este arquivo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---bxME2PY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9qbwn9aouu4bprtr1nfq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---bxME2PY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9qbwn9aouu4bprtr1nfq.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Integração com "Banco de Dados Compartilhado"
&lt;/h3&gt;

&lt;p&gt;Uma aplicação atua como "Publicador das Tarefas" adicionando um item a uma tabela de 'tarefas' em um banco de dados compartilhado.&lt;/p&gt;

&lt;p&gt;Outra aplicação atua como "Consumidor" observando a tabela de 'Tarefas' aguardando itens novos ou não processados. &lt;br&gt;
Processando estes itens e gravando o resultado do processamento na mesma tabela ou uma tabela diferente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MBOIx91m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nfz2bx0sxqmcn3n7qjrs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MBOIx91m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nfz2bx0sxqmcn3n7qjrs.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Integração com "Conexão Direta"
&lt;/h3&gt;

&lt;p&gt;Neste padrão o "Publicador" e o "Consumidor" podem se alternar no qual ambos pontos da extremidade podem enviar mensagens para o outro de forma independente. &lt;/p&gt;

&lt;p&gt;O tipo de conexão pode ser por exemplo: "TCP/IP" ou "Named Pipes". E a mensagem enviada pode alternar em diversos formatos (Binary, XML, Json e outros).&lt;/p&gt;

&lt;p&gt;Após estabelecer conexão são enviadas mensagens entre as aplicações ou serviços.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aliWxsXo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5blxnl7lqn23de3ng2th.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aliWxsXo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5blxnl7lqn23de3ng2th.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Integração com "Mensagens assíncronas usando Message Broker"
&lt;/h3&gt;

&lt;p&gt;Aplicações atuam como "Publicador de Mensagens" adicionando mensagens em qualquer formato em uma Aplicação intermediária chamada "Message Brokers ou Message Buses".&lt;/p&gt;

&lt;p&gt;A aplicação de "Message Brokers" recebe as mensagens de uma origem e encaminha para um "Alvo" ou "Aplicação consumidora".&lt;/p&gt;

&lt;p&gt;Este padrão apresenta algumas vantagens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Desacoplar 'Publicador' e 'Consumidor'.&lt;/li&gt;
&lt;li&gt;Fornecer um modo confiável para processar tarefas assincronamente e se comunicar. &lt;/li&gt;
&lt;li&gt;Fornece um modo de implementar uma arquitetura de escalabilidade horizontal.&lt;/li&gt;
&lt;li&gt;Fornece um modo eficiente de extração de dados armazenados (Data Store Polling). &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iix6aNwL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g4a56kdzm5061htx9od0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iix6aNwL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g4a56kdzm5061htx9od0.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Referências
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.enterpriseintegrationpatterns.com/patterns/messaging/IntegrationStylesIntro.html"&gt;Introduction to Integration Styles&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.enterpriseintegrationpatterns.com/patterns/messaging/toc.html"&gt;Enterprise Integration Patterns&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ptgmedia.pearsoncmg.com/images/9780321200686/samplepages/0321200683.pdf"&gt;Chapter 2: "Integration Styles" - Book Enterprise Integration Patterns: Designing, Building, and Deploying&lt;/a&gt;&lt;/p&gt;

</description>
      <category>arquitetura</category>
    </item>
    <item>
      <title>Agregados (DDD)</title>
      <dc:creator>Sandro Souza</dc:creator>
      <pubDate>Mon, 01 Feb 2021 12:18:51 +0000</pubDate>
      <link>https://dev.to/ssoliveirasp/agregados-ddd-4lok</link>
      <guid>https://dev.to/ssoliveirasp/agregados-ddd-4lok</guid>
      <description>&lt;blockquote&gt;
&lt;h3&gt;
  
  
  Definição
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;É maneira de reduzir a complexidade técnica.&lt;/li&gt;
&lt;li&gt;É um cluster de objetos de domínio que podem ser tratados como uma única unidade.&lt;/li&gt;
&lt;li&gt;Não existe uma classe implementando um agregado.&lt;/li&gt;
&lt;li&gt;Representa um conceito do domínio e não um container de itens.&lt;/li&gt;
&lt;li&gt;Definir agregados é reversível e uma atividade continua.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Definir Agregados
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;h5&gt;
  
  
  Limites Transacionais
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Definir a transações conforme a força dependência&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;h5&gt;
  
  
  Dependências
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Definir tipos de relacionamentos (UML) e Força de 
dependência &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;h5&gt;
  
  
  Coleções
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Quantidade de agregados equivale a numero de coleções em banco de dados NoSql
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;h5&gt;
  
  
  Pensando em Definições Técnicas
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Definir um agregado é um processo continuo influenciado pelo feedback da sua implementação. "Persistência", "Consistência" e "Concorrência" são detalhes de implementação que podem ser
difícil de acertar e pode fazer com que você repense seus limites de agregados.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Raiz do Agregado
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;h4&gt;
  
  
  Ponto de Entrada (Classe) para acesso ao agregado.
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Fornece o nome conceitual do agregado.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;h4&gt;
  
  
  Coordena todas as mudanças do agregado
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Assegura que todos os clientes não definam o agregado para um estado inconsistente.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Performance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Agregados grandes pode degradar a performance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Devido a quantidade de informações a serem carregadas e salvas.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WhYjD3ha--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4qpnnlzl3xmxwme43n9d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WhYjD3ha--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4qpnnlzl3xmxwme43n9d.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Definição de Entidade
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Surge "Substantivos" surgem as "Entidades"&lt;/li&gt;
&lt;li&gt;Podem mudar ao longo do tempo (Utiliza ID)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Informações
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Propriedade de navegação

&lt;ul&gt;
&lt;li&gt; O Id é uma propriedade para acessar informação&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Recomendações
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Refatorar Sempre
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;Definir agregados é uma atividade continua, não coloque sobre você a pressão para criar um definição de agregados perfeita na tentativa inicial. Quanto mais melhorias mais você saberá sobre o Domínio.&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Transação
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;Se você precisa alterar mais de um agregado em uma transação, é um sinal que os limites do seu agregado possa ser melhor alinhado com o problema do domínio.&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Interfaces com o Usuário
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;Agregados não devem ser planejados com base nas Interfaces com o Usuário (UIs).&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Banco de Dados
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;Os associações do modelo de dados não pode influenciar as associações entre os objetos do domínio. Os objetos não são os mesmos como as tabelas do banco de dados. Modelos de dados representam um relacionamento de "Composição" para suportar integridade referencial e construir relatórios para BI (Business Intelligence).&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Fatores Técnicos
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;Fatores técnicos afetam seus agregados principalmente "Performance" e "Escabilidade".&lt;/code&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Se você está salvando ou carregando agregados acima das definições de performance pode representar que seu agregado está muito grande.&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Referencias
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/Patterns-Principles-Practices-Domain-Driven-Design/dp/1118714709"&gt;Livro Patterns-Principles-Practices-Domain-Driven-Design&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=1AEOcQWQR2o"&gt;Agregados | DDD do jeito certo | Parte 06&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://martinfowler.com/bliki/DDD_Aggregate.html"&gt;DDD_Aggregate | Martin Fowler&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://enterprisecraftsmanship.com/posts/domain-model-purity-lazy-loading/#:~:text=Lazy%20loading%20allows%20you%20to,%2C%20encapsulation%2C%20and%20simplicity"&gt;Domain model purity and lazy loading&lt;/a&gt;.)&lt;/p&gt;

</description>
      <category>ddd</category>
    </item>
  </channel>
</rss>
