arquitetura-monolitica-modular-organizacao-modular-de-pastas-1
Arquitetura Monolítica Modular: Organização Modular de Pastas

Arquitetura Monolítica Modular: Organização Modular de Pastas

Quando você está a desenvolver uma Aplicação Empresarial que será utilizada apenas pela empresa e os seus funcionários. Você não está a construir uma aplicação de escala global, ou não tem um caso para escalabilidade. Você não precisa de Micro-serviços e de todas as complexidades de infraestrutura que resultam destes. Ainda assim, você precisa ter boas bases para a sua aplicação. E se chegar o momento, você pode facilmente dividir as partes em serviços separados. Este artigo pretende expandir a proposta apresentada em Componentes do Software Empresarial: Caso Prático, relativamente a organização de pastas segundo os conceitos de Clean Architecture e Hexagonal Architecture. Aqui irei propor uma estrutura de pastas mais elaborada da que foi apresentada no artigo anterior. Devo ressalvar que as arquiteturas Clean e Hexagonal não se referem à organização das pastas, mas sim uma abstração lógica dos componentes de software, das suas responsabilidades, e das relações de dependência entre si. Aspectos Fundamentais a Considerar A organização de pastas deve estar alinhado com os conceitos de design de software, e uma das qualidades mais importantes terá a ver com a manutenção da aplicação ao longo prazo, e com a capacidade de evoluir, ou escalar, com o mínimo de esforço necessário. Separação de Responsabilidades: A estrutura de pastas deve refletir o princípio de separação de responsabilidades, em que diferentes componentes ou camadas do sistema são agrupados com base em suas responsabilidades. Arquitetura em Camadas: Organizar com base nas diferentes camadas, como por exemplo a camada de apresentação, a camada de negócios e a camada de dados. Módulos Funcionais: Identificar os módulos funcionais da aplicação e organizar as pastas de acordo. Cada módulo deve ter sua própria pasta com os seus componentes, como por ex. controllers, serviços, models e views. Reutilização de Código: Estrutura de pastas que promova a reutilização de código. Identificar os componentes comuns ou utilitários que podem ser compartilhados em diferentes partes da aplicação e colocá-los em pastas ou módulos separados. Escalabilidade e Crescimento: Considere a escalabilidade e o crescimento futuro do projeto. A estrutura de pastas deve ser capaz de acomodar novos recursos, componentes ou camadas sem se tornar excessivamente complexa ou confusa. Ela deve facilitar a adição ou modificação de funcionalidades à medida que o projeto evolui. Convenções de Nomenclatura: A estrutura deve seguir convenções claras e consistentes de nomenclatura para pastas e ficheiros. Facilitando na navegação do código e na compreensão do propósito de cada pasta ou ficheiros. Configuração e Recursos: Separar arquivos de configuração, recursos estáticos (como imagens ou ficheiros de estilo) e outros ficheiros não relacionados ao código-fonte em pastas apropriadas. Colaboração e Estrutura da Equipa: Considerar a estrutura da equipa de desenvolvimento e como eles colaboram no projeto. A estrutura de pastas deve estar alinhada com o fluxo de trabalho da equipe e facilitar o desenvolvimento simultâneo, controle de versão e processos de revisão de código.

Compartilhar