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.

TDC2018SP | Trilha Go - Clean architecture em Golang

153 views

Published on

TDC2018SP | Trilha Go - Clean architecture em Golang

Published in: Education
  • Be the first to comment

TDC2018SP | Trilha Go - Clean architecture em Golang

  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

×