TDC2018SP | Trilha Go - Clean architecture em Golang

tdc-globalcode 417 views 30 slides Aug 22, 2018
Slide 1
Slide 1 of 30
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30

About This Presentation

TDC2018SP | Trilha Go - Clean architecture em Golang


Slide Content

CLEAN ARCHITECTURE EM
GO
Elton Minetto
@eminetto

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

Premissas
-Independente de frameworks
-Testável
-Independente de UI
-Independente de Database
-Independente qualquer agente externo

Divide nosso código em 4
camadas

-Entities: representam as entidades das regras de
negócio
-Use Cases: as regras de negócio da aplicação

-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

Clean architecture em Go

No pacote entity estão nossas entidades

No pacote user encontram-se outras camadas da
arquitetura

No arquivo interface.go temos a definição das
interfaces dos Use Case e repositório, onde a
entidade vai ser armazenada

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

O service.go é a implementação dos Use Case

No diretório api temos a implementação da camada
Controller

No trecho a seguir, do api/main.go podemos ver
como usar o serviço

Podemos também ter diferentes controllers, como
linha de comando, lambdas, bots, etc.

Podemos facilmente testar nossos pacotes, camada
a camada

pkg/user/service_test.go

api/handler/user_test.go

Exemplo completo
https://github.com/eminetto/clean-architecture-go

Perguntas
http://eltonminetto.net
@eminetto
http://asemanago.com.br