Arquitetura simples e efetiva 📐
A ideia principal da Vertical Slice Architecture (VSA) é organizar seu código por funcionalidade e não por camadas.
Como exemplo, temos a funcionalidade de criar um curso, mostrada na imagem abaixo.
A CreateCourseController possui:
- Autorização (apenas usuários Academic podem acessar)
- Rota (POST /academic/courses)
- Documentação + exemplos de requests, responses e erros
- Chamada do CreateCourseService que executa lógica de negócio
O CreateCourseService possui:
- Validação do input usando FluentValidation
- Uso de Result Pattern para retornar sucesso ou erro
- SykiDbContext para operações no banco de dados
- Mapper para converter a entidade de domínio em DTO de resposta
Os objetos de input e output do endpoint possuem um método que retorna exemplos com valores, usados na documentação.
Por fim, é extremamente fácil entender e encontrar as coisas no projeto, pois todos os arquivos relacionados com uma determinada funcionalidade possuem o mesmo prefixo, inclusive os de testes automatizados.
Você já utilizou essa arquitetura em algum projeto? Comente abaixo!