Matheus Castiglioni

Particionamento técnico vs domínio

Existe diversas formas da gente estruturar e dividir nossos projetos, ou seja, podemos particionar e separar nossos projetos de N maneiras. Na maioria das vezes (às vezes um framework não deixa) podemos escolher quais pastas e seus nomes, quais arquivos e seus nomes, quais separações, quais módulos, camadas, etc…

Duas maneiras bem comum de atingir tais particionamentos, seriam:

Vamos entender como cada uma é realizada?

Particionamento técnico

No particionamento técnico a gente destaca e foca nos aspectos das bibliotecas, frameworks, linguagens e tecnologias. Nele a gente fortalece e evidencia o lado técnico, por exemplo:

nome-do-projeto
  src
    controllers
      algum-arquivo.js
      outro-arquivo.php
      ...
    views
    pages
    reducers
    actions
    sagas
    services
    use-cases
    components
    containers
    constants
    enums
    domain
    application
    ...

Repare que nessa estrutura será necessário que você abra várias pastas para mexer e encontrar todos os arquivos daquele contexto que você está atuando. Por exemplo:

nome-do-projeto
  src
    reducers
      product.js
    actions
      product.js
    sagas
      product.js
    services
      product.js
    ...

Além disso, não fica claro para o sistema quais são as barreiras e limites entre os contextos.

Particionamento por domínio

Já no particionamento por domínio, a ideia é fortalecer e evidenciar o negócio, transparecendo quais são os contextos e seus limites, por exemplo:

nome-do-projeto
  src
    checkout
    anti-fraud
    treasury
    warehouse
    solicitation
    ...

E dentro de cada contexto vão existir todos os arquivos e sub diretórios para o funcionamento do mesmo, por exemplo:

nome-do-projeto
  src
    anti-fraud
      application
      domain
      infrastructure
      interface
      ...
nome-do-projeto
  src
    product
      components
      containers
      pages
      reducers.js
      actions.js
      routes.js
      sagas.js
      store.js
      ...

Assim por mais que você tenha uma arquitetura monolítica, ela ainda pode escalar e evoluir muito bem, isso porque os contextos e limites estão claros. Nesse caso podemos dizer que essa arquitetura é um monolítico modularizado. Se um dia a gente precisar extrair pedaços dessa arquitetura já está claro o que e como extrair.

Conclusão

Nesse post vimos dois tipos de particionar e estruturar seus projetos, sendo, o particionamento técnico e por domínio. Entendemos como cada um é abordado e análisamos as vantagens e desvantages de cada um.

Abraços, até a próxima.

Matheus Castiglioni

Matheus Castiglioni

Apaixonado pelo mundo dos códigos e um eterno estudante, gosto de aprender e saber um pouco de tudo, aquela curiosidade de saber como tudo funciona, tento compartilhar o máximo de conhecimentos adquiridos e ajudar todos aqueles que sou capaz.

comments powered by Disqus