Slide 1

Slide 1 text

ARQUITETURA DE SOFTWARE E A CLEAN ARCHITECTURE

Slide 2

Slide 2 text

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.

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

Exemplo completo

Slide 46

Slide 46 text

https://github.com/eminetto/clean-architecture- go-v2

Slide 47

Slide 47 text

Referências

Slide 48

Slide 48 text

๏ 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

Slide 49

Slide 49 text

Perguntas https://eltonminetto.dev https://twitter.com/eminetto [email protected]