Arquitetura em camadas x hexagonal (ports & adapters)
Pergunta
Qual a diferença entre uma arquitetura em camadas tradicional e a hexagonal (ports and adapters), e que problema a hexagonal tenta resolver?
Resposta esperada
Em camadas (apresentação → aplicação → domínio → infraestrutura), a dependência flui de cima pra baixo e o domínio geralmente acaba dependendo da camada de dados (ex: entidades que sabem de ORM). Hexagonal inverte isso: o domínio fica no centro e define 'ports' (interfaces) do que precisa; 'adapters' na borda implementam esses ports para HTTP, banco, filas, etc. A regra é que as dependências apontam pra dentro — o domínio não conhece Postgres nem Express, só interfaces. O problema resolvido é testabilidade e troca de tecnologia: você testa o domínio com adapters fake e troca o banco sem tocar na regra de negócio. O custo é mais indireção e boilerplate de interface.
Por que perguntam isso
Pergunta pleno/sênior. Resposta forte cita 'dependências apontam pra dentro' e o trade-off (boilerplate). Reconhecer que hexagonal, clean e onion são variações do mesmo princípio é bônus.