DEV Community

Yan.ts
Yan.ts

Posted on

6 1

O que aprendi ao criar um monolito seguindo boas praticas de DDD e Clean Architecture

Depois de fazer um estudo mais aprofundado sobre monolitos foi a hora de eu implementar um usando as praticas que estudei, principalmente utilizando os conceitos de deixar os módulos bem separados para facilitar uma possível futura conversão para microsserviços.

O sistema

O sistema implementado com o intuito de estudos era uma espécie de e-commerce e seus eram produtos(na visão do admin), produtos(na visão do catalogo), pagamentos e clientes(na visão do admin) foi feito utilizando TDD ou seja, durante todo o desenvolvimento criei um teste para a feature que queria implementar e só depois implementei o método ou a classe.

Nesse caso de estudos o monolito foi feito com apenas um banco de dados para todos os módulos ao invés de um banco de dados por módulos

O que estranhei

Pra mim foi(e ainda é) muito estranho o fato de eu ter duas entidades de produto no mesmo sistema, não me entenda mal, eu entendo perfeitamente o porque dele estar ali "não é o mesmo produto" e cada modulo vê esse produto com o que é necessário para ele no contexto dele. Porem quando de fato chegou a hora de fazer isso:

Image description

Tive que me segurar muito para não simplesmente adicionar um novo campo a entidade que comecei e seguir com a vida, e falando em curto prazo essa solução até funcionaria, porem ao longo prazo que é como penso nesse sistema, algo feito para durar, o ideal é realmente fazer dessa forma pois cada entidade dessas de produtos tem as suas próprias razões para mudar e não podemos deixar que um interfira no outro.

Image description

Principalmente quando foi o caso de fazer isso para os DTOs onde são idênticos, porem no futuro podem ter razões para mudar diferentes

O que gostei

Acabei gostando bastante das facades, ainda não tive a experiencia de quebrar um monolito em microsseviços mas com elas da para ver claramente o quão desacoplado dá para deixar o sistema monolítico e já dá para imaginar que deve ser muito mais fácil separar um sistema assim do que separar um sistema que já está altamente acoplado

Aqui está o link para o repositório com o sistema que estou desenvolvendo

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay