Ajude-me a entender arquitetura de software
Olá pessoal, esses tempos estive estudando as arquiteturas de desenvolvimento de software, dentre as opções estudas foi "The Clean Architecture", MVC e "Hexagonal architecture".
Dentre todas elas, a arquitetura que mais me chamou a atenção foi a "The Clean Architecture" talvez devido às imagens associativas que encontramos assim que pesquisamos pelo termo, porem ainda assim, eu sinto que não é exatamente uma arquitetura onde se aplica no dia a dia, ou eu apenas estou no início de uma busca por algo que ainda não entendi ou encontrei.
A minha percepção é que o círculo de camadas ficou meio que invertido quem certo aspecto, deixe-me explicar melhor.
No meu dia a dia, eu uso um modelo (ORM) para fazer a representação de uma tabela no banco de dados, levando isso quem conta, eu a considero como uma entidade por si só, porem toda via também a mesma é um driver de conexão onde é visto no lado externo das camadas.
Outro ponto que eu não fico confortável é os controllers, por fora do caso de uso, talvez será só uma confusão dos entendimentos dos termos, mas considero sempre o oposto.
Onde o caso de uso é quem reconhece os controladores do modelo.
View/Resource -> UseCase -> Controller -> Model
Exemplo de como isso tudo se relaciona na minha cabeça: Diagrama
porem nesse modelo eu sinto que estou quebrando o princípio de que o framework deve ficar no lado externo das camadas, eu entendo que no caso de uma “lib” como Django/Flask/FastApi deve de fato ficar por fora, porem quando se fala dos ORM, eu fico pensando, qual o custo de complexidade que vai dar para a estrutura fazer um adaptador para manter o ORM do lado externo, ao ponto de que praticamente refazê-los com adaptes
alguém poderia me explicar o porquê que cheguei nessa conclusão? Oque eu deixai passar?