Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Clean architecture em Go - v2

146 views

Published on

Atualização da palestra Clean Architecture em Go

Published in: Technology
  • Be the first to comment

Clean architecture em Go - v2

  1. 1. CLEAN ARCHITECTURE EM GO Elton Minetto @eminetto
  2. 2. O que é Clean Architecture? → https://8thlight.com/blog/uncle-bob/2012/08/13/ the-clean-architecture.html → https://www.amazon.com/Clean-Architecture- Craftsmans-Software-Structure/dp/0134494164
  3. 3. Premissas → Independente de frameworks → Testável → Independente de UI → Independente de Database → Independente qualquer agente externo
  4. 4. Divide nosso código em 4 camadas
  5. 5. → Entities: representam as entidades das regras de negócio → Use Cases: as regras de negócio da aplicação
  6. 6. → Controller: adaptam e convertem os dados do formato usado pelas entidades e use cases para agentes externos como bancos de dados , web, etc → Framework & Driver: frameworks e ferramentas como bancos de dados, frameworks web, etc
  7. 7. Clean architecture em Go
  8. 8. No pacote entity estão nossas entidades
  9. 9. No pacote user encontram-se outras camadas da arquitetura
  10. 10. No arquivo interface.go temos a definição das interfaces dos Use Case e repositório, onde a entidade vai ser armazenada
  11. 11. Nos arquivos repository_inmem.go e repository_mongodb.go temos implementações da interface que define um repositório, onde as entidades são armazenadas. Neste caso o repositório representa parte da camada Framework & Driver
  12. 12. O service.go é a implementação dos Use Case
  13. 13. No diretório api temos a implementação da camada Controller
  14. 14. No trecho a seguir, do api/main.go podemos ver como usar o serviço
  15. 15. Podemos também ter diferentes controllers, como linha de comando, lambdas, bots, etc.
  16. 16. Podemos facilmente testar nossos pacotes, camada a camada
  17. 17. pkg/user/service_test.go
  18. 18. api/handler/user_test.go
  19. 19. Exemplo completo https://github.com/eminetto/clean-architecture-go
  20. 20. Perguntas http://eltonminetto.net @eminetto http://asemanago.com.br

×