SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
Izabela Guerreiro
Arquitetura
Limpa
Izabela Guerreiro
Desenvolvedora Backend
izaguerreiro
izaguerreiro
/in/izabela-dos-santos-guerreiro/
www.izaguerreiro.me
Quem sou eu?
AGENDA
Arquitetura Limpa
Organização de
projeto
01
02
03
04
Bora pro código
Conclusão
Arquitetura Limpa
01
"Uma boa arquitetura deve possibilitar que o sistema nasça como
monolito, seja implantado em um único arquivo e, então cresça
como um conjunto de unidades independentemente implantáveis,
incluindo serviços independentes e/ou microsserviços. Mais
tarde, com as mudanças, deve permitir a reversão dessa
progressão e o retorno ao estado monolito."
Robert C. Martin
● Primeira publicação no post do Uncle Bob em 2012
● Primeira publicação do livro em 2017
● Principal objetivo separação de responsabilidade
● Princípios SOLID
Arquitetura Limpa
● Independência de framework
● Testabilidade
● Independência da UI
● Independência de banco de dados
● Independência de qualquer agência externa
Principais características
Organização de projeto
02
● A mais simples abordagem de design
● Segundo Martin Fowler, é uma boa maneira de começar
● Maneira rápida de fazer funcionar sem muita complexidade
Desvantagens:
● Quando o software escala e ganha complexidade pode demandar a criação de mais
camadas
● As camadas não dizem nada sobre o domínio do negócio
● A camada de web pode se comunicar diretamente com a camada data
Pacote por camada
Pacote por recurso
● Um único pacote
● Pacote com base nos recursos relacionados ao domínio
● Potencialmente mais fácil encontrar o código
● OBS: Nenhum item fora do pacote pode acessar as informações sem passar pela View
(Controller)
Portas e adaptadores
● Separada entre dentro (domínio) e fora (infraestrutura)
● Dentro: contém tudo que é relacionado ao domínio
● Fora: contém as interações externas (UI, banco de dados, etc..)
● Principal regra é o que está fora depende do que está dentro e nunca o contrário
Pacote por componente
● Abordagem híbrida para todas as descritas anteriormente
● Objetivo as responsabilidade um componente em um único pacote
● Somente uma entrada para o componente
Bora pro código
03
Conclusão
04
CREDITS: This presentation template was created by Slidesgo, including
icons by Flaticon, and infographics & images by Freepik.
Please keep this slide for attribution.
That's all folks!

Mais conteúdo relacionado

Mais procurados

WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7George Gastaldi
 
Do monolito ao micro serviço
Do monolito ao micro serviçoDo monolito ao micro serviço
Do monolito ao micro serviçoElton Minetto
 
React e reactividade Meetup Facebook Developer Circles
React e reactividade Meetup Facebook Developer CirclesReact e reactividade Meetup Facebook Developer Circles
React e reactividade Meetup Facebook Developer CirclesJosé Barbosa
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 
Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Elton Minetto
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...Emmanuel Neri
 

Mais procurados (7)

WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7
 
Do monolito ao micro serviço
Do monolito ao micro serviçoDo monolito ao micro serviço
Do monolito ao micro serviço
 
React e reactividade Meetup Facebook Developer Circles
React e reactividade Meetup Facebook Developer CirclesReact e reactividade Meetup Facebook Developer Circles
React e reactividade Meetup Facebook Developer Circles
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 
Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
 

Semelhante a Arquitetura limpa

Clean architecture em Go - v2
Clean architecture em Go - v2Clean architecture em Go - v2
Clean architecture em Go - v2Elton Minetto
 
Arquitetura evolutiva - DNAD 2013
Arquitetura evolutiva - DNAD 2013Arquitetura evolutiva - DNAD 2013
Arquitetura evolutiva - DNAD 2013Denis Ferrari
 
Slide 02 introdução ao code igniter, utilização do bootstrap
Slide 02   introdução ao code igniter, utilização do bootstrap Slide 02   introdução ao code igniter, utilização do bootstrap
Slide 02 introdução ao code igniter, utilização do bootstrap Raniere de Lima
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
DevInCachu 2013: Arquitetura evolutiva
DevInCachu 2013: Arquitetura evolutivaDevInCachu 2013: Arquitetura evolutiva
DevInCachu 2013: Arquitetura evolutivaDenis Ferrari
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Embarcados
 
Web components para o seu design system
Web components para o seu design systemWeb components para o seu design system
Web components para o seu design systemNicole Oliveira
 
Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoFlávio Lisboa
 
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...tdc-globalcode
 
12 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 201812 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 2018Graziella Bonizi
 
Programação de Elite - Requisito dado é código implementado
Programação de Elite - Requisito dado é código implementadoProgramação de Elite - Requisito dado é código implementado
Programação de Elite - Requisito dado é código implementadoSamuel David
 
DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...
DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...
DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...Erick Bonnemasou Jaccoud
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Leandro Silva
 
Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017Denis Santos
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Renato Groffe
 
Microservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e DesafiosMicroservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e DesafiosRyan Padilha
 
06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docxJulioCesar371362
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golangtdc-globalcode
 
Apresentação Joomla! Day Brasília
Apresentação Joomla! Day BrasíliaApresentação Joomla! Day Brasília
Apresentação Joomla! Day Brasíliarafaelberlanda
 

Semelhante a Arquitetura limpa (20)

Clean architecture em Go - v2
Clean architecture em Go - v2Clean architecture em Go - v2
Clean architecture em Go - v2
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Arquitetura evolutiva - DNAD 2013
Arquitetura evolutiva - DNAD 2013Arquitetura evolutiva - DNAD 2013
Arquitetura evolutiva - DNAD 2013
 
Slide 02 introdução ao code igniter, utilização do bootstrap
Slide 02   introdução ao code igniter, utilização do bootstrap Slide 02   introdução ao code igniter, utilização do bootstrap
Slide 02 introdução ao code igniter, utilização do bootstrap
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
DevInCachu 2013: Arquitetura evolutiva
DevInCachu 2013: Arquitetura evolutivaDevInCachu 2013: Arquitetura evolutiva
DevInCachu 2013: Arquitetura evolutiva
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
 
Web components para o seu design system
Web components para o seu design systemWeb components para o seu design system
Web components para o seu design system
 
Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutenção
 
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
 
12 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 201812 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 2018
 
Programação de Elite - Requisito dado é código implementado
Programação de Elite - Requisito dado é código implementadoProgramação de Elite - Requisito dado é código implementado
Programação de Elite - Requisito dado é código implementado
 
DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...
DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...
DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013
 
Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
 
Microservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e DesafiosMicroservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e Desafios
 
06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
Apresentação Joomla! Day Brasília
Apresentação Joomla! Day BrasíliaApresentação Joomla! Day Brasília
Apresentação Joomla! Day Brasília
 

Arquitetura limpa

  • 5. "Uma boa arquitetura deve possibilitar que o sistema nasça como monolito, seja implantado em um único arquivo e, então cresça como um conjunto de unidades independentemente implantáveis, incluindo serviços independentes e/ou microsserviços. Mais tarde, com as mudanças, deve permitir a reversão dessa progressão e o retorno ao estado monolito." Robert C. Martin
  • 6. ● Primeira publicação no post do Uncle Bob em 2012 ● Primeira publicação do livro em 2017 ● Principal objetivo separação de responsabilidade ● Princípios SOLID Arquitetura Limpa
  • 7. ● Independência de framework ● Testabilidade ● Independência da UI ● Independência de banco de dados ● Independência de qualquer agência externa Principais características
  • 8.
  • 10. ● A mais simples abordagem de design ● Segundo Martin Fowler, é uma boa maneira de começar ● Maneira rápida de fazer funcionar sem muita complexidade Desvantagens: ● Quando o software escala e ganha complexidade pode demandar a criação de mais camadas ● As camadas não dizem nada sobre o domínio do negócio ● A camada de web pode se comunicar diretamente com a camada data Pacote por camada
  • 11. Pacote por recurso ● Um único pacote ● Pacote com base nos recursos relacionados ao domínio ● Potencialmente mais fácil encontrar o código ● OBS: Nenhum item fora do pacote pode acessar as informações sem passar pela View (Controller)
  • 12. Portas e adaptadores ● Separada entre dentro (domínio) e fora (infraestrutura) ● Dentro: contém tudo que é relacionado ao domínio ● Fora: contém as interações externas (UI, banco de dados, etc..) ● Principal regra é o que está fora depende do que está dentro e nunca o contrário
  • 13. Pacote por componente ● Abordagem híbrida para todas as descritas anteriormente ● Objetivo as responsabilidade um componente em um único pacote ● Somente uma entrada para o componente
  • 16. CREDITS: This presentation template was created by Slidesgo, including icons by Flaticon, and infographics & images by Freepik. Please keep this slide for attribution. That's all folks!