Elton Minetto
๏ Escrevo códigos, sou professor, palestrante, e
escritor
๏ Escrevo no https://eltonminetto.dev e no
twitter
๏ Sou tech manager na Trybe
Slide 3
Slide 3 text
Arquitetura
de software
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
!
Uma biblioteca!
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
!
uma aplicação Rails?
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
!
uma aplicação Laravel?
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
!
uma aplicação Django?
Slide 12
Slide 12 text
O que sua arquitetura
"grita"?
Slide 13
Slide 13 text
Olhando para a estrutura de diretórios do seu
projeto, ele fala
sou um sistema de contabilidade?
ou
sou um projeto Rails/Laravel/Django?
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
!
O sistema de uma biblioteca!
Slide 16
Slide 16 text
Arquiteturas de software não são (ou não
deveriam ser) sobre frameworks. Arquiteturas
não deveriam ser fornecidas por frameworks.
Frameworks são ferramentas para serem usadas.
Slide 17
Slide 17 text
Arquiteturas de software deveriam falar sobre o
sistema, não sobre os frameworks usados.
Slide 18
Slide 18 text
Arquiteturas de software são estruturas que
suportam os "use cases" do projeto.
Slide 19
Slide 19 text
Uma boa arquitetura de software permite
decisões como frameworks, bancos de dados,
servidores, serem adiadas.
Uma boa arquitetura de software permite que
mudanças nestas decisões sejam fáceis de serem
tomadas.
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
Clean
Architecture
Slide 22
Slide 22 text
๏ The Clean Architecture
๏ Arquitetura Limpa: o Guia do Artesão Para
Estrutura e Design de Software
Slide 23
Slide 23 text
Premissas
๏ Independente de frameworks
๏ Testável
๏ Independente de UI
๏ Independente de Database
๏ Independente qualquer agente externo
Slide 24
Slide 24 text
Divide nosso código em
4 camadas
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
Entities
Encapsulam as regras de negócios de toda a
empresa. Uma entidade pode ser um objeto com
métodos ou um conjunto de estruturas de dados e
funções. Não importa, desde que as entidades
possam ser usadas por muitos aplicativos
diferentes na empresa.
Slide 27
Slide 27 text
Use Cases
O software nesta camada contém regras de
negócios especí
fi
cas do aplicativo. Ele encapsula e
implementa todos os casos de uso do sistema
Slide 28
Slide 28 text
Interface Adapters
Adaptam e convertem os dados do formato usado
pelas entidades e use cases para agentes externos
como bancos de dados , web, etc
Slide 29
Slide 29 text
Framework & Driver
Frameworks e ferramentas como bancos de dados,
frameworks web, etc. Esta camada é para onde
vão todos os detalhes.
Slide 30
Slide 30 text
No content
Slide 31
Slide 31 text
No content
Slide 32
Slide 32 text
Clean architecture em
Go
Slide 33
Slide 33 text
Camada
Entity
Slide 34
Slide 34 text
No content
Slide 35
Slide 35 text
Neste pacote temos a definição das entidades, das
regras de negócio relacionada a elas e seus testes
unitários
Slide 36
Slide 36 text
Camada
UseCase
Slide 37
Slide 37 text
No content
Slide 38
Slide 38 text
Aqui implementamos as regras de negócio do
nosso produto.
Slide 39
Slide 39 text
Camada
Framework &
Driver
Slide 40
Slide 40 text
No content
Slide 41
Slide 41 text
Camada
Interface
Adapters
Slide 42
Slide 42 text
๏ Numa aplicação podem existir diferentes
formas de acesso aos UseCases.
๏ Um exemplo seria através de um aplicativo de
linha de comando e a outro é usando uma API.
๏ Screaming Architecture
๏ The Clean Architecture
๏ Arquitetura Limpa: o Guia do Artesão Para
Estrutura e Design de Software
๏ Clean Architecture, 2 anos depois
๏ Links sobre arquitetura de software