SlideShare uma empresa Scribd logo
1 de 26
Introdução a Clean
Architecture
Hello World!
Rafael Capuano
Desenvolvedor back-end desde 2011 (há 4 anos
na Praxio)
Um apaixonado por programação, fã de futebol,
movido pelo desafio de viver...
https://medium.com/@rafacapuano
3
Onde tudo começou...
• Hexagonal Architecture (Ports & Adapters)
• Onion Architecture
• Screaming Architecture
• DCI
• BCE
4
• Separação de responsabilidades
• Independência de frameworks, bancos de
dados, UI ou qualquer agente externo
• Redução do custo de mudança
• Código testável
• Facilidade para entender o que o sistema faz
5
6
Clean Architecture ao resgate...
O que é?
7
8
• Popularizado por Robert C. Martin (Uncle Bob)
• Unificação dos conceitos arquiteturais já
existentes
• O sistema é visto como um conjunto de
camadas que interagem seguindo “The
Dependency Rule”
9
“The outer circles are
mechanisms. The inner
circles are policies”
10
Uncle Bob
“This rule (The
Dependency Rule) says
that source code
dependencies can only
point inwards”
11
Entities
12
• Conceito existente no DDD (Domain Driven
Design)
• Representam os objetos do domínio
• São conduzidas pelo negócio, nunca por
frameworks
13
Use Case
14
• Descrevem o que o sistema faz
• Concentram as regras de negócio da aplicação
• Definido como um conjunto de etapas
(interações) para se alcançar o objetivo
• Ao escrever as classes, devemos dar atenção
ao Single Responsability Principle do SOLID
15
Interface Adapters
16
• Converte dados do Use Case para agentes
externos (como a Web, por exemplo) e vice-
versa
• Composto por componentes MVC já
conhecidos, como Controllers e Views, e os
Repositórios para acesso ao banco de dados
• O código deve ser o mais simples possível, sem
lógica de negócio
17
Frameworks &
Drivers
18
• É a composição dos agentes externos
(detalhes), como Web, banco de dados e
frameworks
• Não devem influenciar os modelos de negócio
19
20
Dependency Inversion
• A comunicação entre
as camadas deve se
dar por abstrações
(interfaces)
Data Transfer Objects
• Dados devem ser
transferidos entre as
camadas no modelo
adequado para elas
21
Não existe bala de prata;
Como qualquer conceito, você
pode adaptá-lo à sua realidade,
mas cuidado para não que
quebrar o princípio de
independência entre as camadas
do seu projeto.
Na dúvida, siga o SOLID, converse
com o time e acredite em você!
22
23
Dúvidas?
• Aplicando clean architecture no back-end
• Aplicando clean architecture no front-end
24
http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
https://blog.ndepend.com/introduction-clean-architecture/
https://proandroiddev.com/clean-architecture-data-flow-dependency-rule-
615ffdd79e29
https://www.freecodecamp.org/news/a-quick-introduction-to-clean-architecture-
990c014448d2/
http://www.plainionist.net/Implementing-Clean-Architecture-UseCases/
25
26
Por enquanto é só...
Obrigado!

Mais conteúdo relacionado

Semelhante a Introdução à Clean Architecture

Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edtedbrunoaalves
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_jsgustavobeavis
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareUFPA
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 
aula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdfaula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdfAntonio Lobato
 
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)Rafael Oliveira
 
Microservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e DesafiosMicroservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e DesafiosRyan Padilha
 
Workshop soa, microservices e devops
Workshop soa, microservices e devopsWorkshop soa, microservices e devops
Workshop soa, microservices e devopsDiego Pacheco
 
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...anybalrocha
 
Melhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingMelhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingDaniel Checchia
 
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
 
API management: um aliado para construção de APIs
API management: um aliado para construção de APIsAPI management: um aliado para construção de APIs
API management: um aliado para construção de APIsRafael de Paula Souza
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
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
 
Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoDarlan Segalin
 
Containers e DevOps
Containers e DevOps Containers e DevOps
Containers e DevOps Raul Leite
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftGraziella Bonizi
 

Semelhante a Introdução à Clean Architecture (20)

Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Corbawebserves
CorbawebservesCorbawebserves
Corbawebserves
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_js
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de Software
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
aula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdfaula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdf
 
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
 
Microservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e DesafiosMicroservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e Desafios
 
Workshop soa, microservices e devops
Workshop soa, microservices e devopsWorkshop soa, microservices e devops
Workshop soa, microservices e devops
 
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
 
Melhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingMelhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud Computing
 
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
 
API management: um aliado para construção de APIs
API management: um aliado para construção de APIsAPI management: um aliado para construção de APIs
API management: um aliado para construção de APIs
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
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
 
Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualização
 
Containers e DevOps
Containers e DevOps Containers e DevOps
Containers e DevOps
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack Microsoft
 

Introdução à Clean Architecture