This content originally appeared on DEV Community and was authored by Yan.ts
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:
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.
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
This content originally appeared on DEV Community and was authored by Yan.ts
Yan.ts | Sciencx (2022-06-15T01:13:24+00:00) O que aprendi ao criar um monolito seguindo boas praticas de DDD e Clean Architecture. Retrieved from https://www.scien.cx/2022/06/15/o-que-aprendi-ao-criar-um-monolito-seguindo-boas-praticas-de-ddd-e-clean-architecture/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.