Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
[MDP Day] Boas práticas de arquitetura
Search
Camila Campos
May 04, 2019
Programming
180
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[MDP Day] Boas práticas de arquitetura
Camila Campos
May 04, 2019
More Decks by Camila Campos
See All by Camila Campos
[Ruby on Rio - Jun-2026] Arquitetura baseada em eventos
camilacampos
0
34
[Womakers] Domain Storytelling
camilacampos
0
80
[Codecon Ladies] Arquitetura Baseada em Eventos
camilacampos
0
80
[Trem on Rails] Como não odiar seus testes
camilacampos
0
76
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
170
[Atlas Meetup] Como não odiar seus testes
camilacampos
0
68
[Refactory - IME/USP - Jun/2025] Responsabilidade de Software Engineers
camilacampos
0
76
[LoveCoding - Vindi - Ago/2023] Como entender o seu domínio por meio de histórias
camilacampos
0
140
[Meetup DDD - Dez/2022] Como entender o seu domínio por meio de histórias
camilacampos
1
78
Other Decks in Programming
See All in Programming
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
150
Workers Cache を知る
syumai
0
350
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
250
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
370
AWSに止められる覚悟してますか?
morizo_1984
2
530
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
1k
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.1k
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
590
golang-bob.pdf
iwatsukayura
0
130
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.3k
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Everyday Curiosity
cassininazir
0
350
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Embracing the Ebb and Flow
colly
88
5.2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
59k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
550
The Cult of Friendly URLs
andyhume
79
7k
Transcript
@camposmilaa Boas práticas de Arquitetura @camposmilaa #MDPDay
@camposmilaa CAMILA Faço uns códigos na Creditas Organizo o Rails
Girls São Paulo Organizo o Women Dev Summit Tô no twitter como @camposmilaa Campos
@camposmilaa Plataforma online Empréstimo com garantia Juros baixos pra você
<3 creditas.com.br vagas.creditas.com.br @CreditasBR
@camposmilaa Incluir mulheres em TI Workshop de Rails Inspiração railsgirls.com.br
fb.com/railsgirls.sp @RailsGirlsSP
@camposmilaa Junção de comunidades Incentivar mulheres em tech Palestras &
Oficinas & Painéis womendevsummit.com fb.com/womendevsummit @WomenDevSummit
@camposmilaa Boas práticas de Arquitetura @camposmilaa #MDPDay
@camposmilaa Clean Architecture @camposmilaa #MDPDay
@camposmilaa
@camposmilaa
@camposmilaa
@camposmilaa
@camposmilaa
@camposmilaa
@camposmilaa
@camposmilaa
@camposmilaa por quê?
@camposmilaa por quê?
@camposmilaa precisamos entregar logo. vamo assim mesmo! depois a gente
volta e arruma .
@camposmilaa big ball of mud
@camposmilaa
@camposmilaa
@camposmilaa the fact is that making messes is always slower
than staying clean. Uncle Bob
@camposmilaa arquitetura
@camposmilaa
@camposmilaa
@camposmilaa a good architecture screams intention
@camposmilaa
@camposmilaa
@camposmilaa domain driven design (DDD)
@camposmilaa
@camposmilaa linguagem ubíqua
@camposmilaa linguagem ubíqua cliente
@camposmilaa linguagem ubíqua usuário cliente
@camposmilaa linguagem ubíqua cif cliente
@camposmilaa linguagem ubíqua cliente
@camposmilaa linguagem ubíqua cliente cliente
@camposmilaa arquitetura em camadas
@camposmilaa presentation domain application rules infrastructure
@camposmilaa presentation domain application rules infrastructure
@camposmilaa presentation domain application rules infrastructure
@camposmilaa domain application presentation infra
@camposmilaa arquitetura clean
@camposmilaa arquitetura onion
@camposmilaa arquitetura hexagonal
@camposmilaa domain application presentation infra
@camposmilaa
@camposmilaa
@camposmilaa
@camposmilaa é tudo “igual”!
@camposmilaa qual a ideia?
@camposmilaa independente de frameworks
@camposmilaa independente de frameworks independente de ui
@camposmilaa independente de frameworks independente de ui independente de banco
de dados
@camposmilaa independente de frameworks independente de ui independente de banco
de dados independente de agentes externos
@camposmilaa independente de frameworks independente de ui independente de banco
de dados independente de agentes externos facilmente testável
@camposmilaa regras do jogo
@camposmilaa 1. respeita as camadas
@camposmilaa
@camposmilaa o que o sistema é o que o sistema
faz
@camposmilaa coisas que meu sistema “não liga”
@camposmilaa comunicação do mundo externo com o core
@camposmilaa 2. dependências só de fora pra dentro
@camposmilaa
@camposmilaa
@camposmilaa
@camposmilaa
@camposmilaa mundo externo
@camposmilaa mundo externo banco de dados
@camposmilaa mundo externo web
@camposmilaa mundo externo frameworks
@camposmilaa mundo externo jobs agendados
@camposmilaa mundo externo terminal
@camposmilaa core application
@camposmilaa
@camposmilaa core application
@camposmilaa o que faz o que é
@camposmilaa
@camposmilaa o que o sistema é (entidades) CLIENTE - cpf
- nome - data de nascimento
@camposmilaa o que o sistema é (entidades) IMÓVEL - rua
- número - bairro
@camposmilaa o que o sistema é (entidades) AUTOMÓVEL - placa
- modelo - marca
@camposmilaa o que o sistema é (entidades) GARANTIA - valor
- dívidas
@camposmilaa o que o sistema é (entidades) ANÁLISE DE RISCO
- data - resultado
@camposmilaa o que o sistema é (entidades)
@camposmilaa o que o sistema faz (use cases) criar
@camposmilaa o que o sistema faz (use cases) criar analisar
risco
@camposmilaa o que o sistema faz (use cases) criar descartar
analisar risco
@camposmilaa o que o sistema faz (use cases) criar conceder
crédito descartar analisar risco
@camposmilaa criar solicitação DADOS DE ENTRADA - dados do cliente
- dados da garantia (casa ou carro) - dados da solicitação (valores) FLUXO 1. cliente pede um empréstimo com os dados acima 2. sistema valida os dados 3. sistema cria uma solicitação 4. sistema envia um email ao cliente com dados da solicitação
@camposmilaa adapters
@camposmilaa adapters presenter controller use case interactor fluxo de controle
mundo externo
@camposmilaa adapters presenter controller use case interactor fluxo de controle
mundo externo
@camposmilaa e a regra da ordem das dependências?
@camposmilaa princípio da inversão de dependência presenter controller use case
interactor fluxo de controle use case input port use case output port I I
@camposmilaa princípio da inversão de dependência
@camposmilaa por que isso é importante?
@camposmilaa http://bit.ly/importancia-clean-arq
@camposmilaa @cynthiazanoni
@camposmilaa @juuh42dias
@camposmilaa @juuh42dias
@camposmilaa
@camposmilaa foco em entregar a coisa certa
@camposmilaa foco em entregar a coisa certa devs entendendo o
business
@camposmilaa foco em entregar a coisa certa devs entendendo o
business manutenabilidade
@camposmilaa foco em entregar a coisa certa devs entendendo o
business manutenabilidade felicidade das devs
@camposmilaa
@camposmilaa frases impactantes para finalizar com chave de ouro
@camposmilaa arquitetura [hexagonal/clean/etc] não é bala de prata
@camposmilaa the only way to go fast, is to go
well. Uncle Bob
@camposmilaa any fool can write code that a computer can
understand. good programmers write code that humans can understand. Martin Fowler
@camposmilaa Agradecida! bit.ly/mdp-camila camposmilaa
@camposmilaa Links legais (além dos livros citados) Clean Architecture -
Uncle Bob https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html Screaming Architecture - Uncle Bob https://8thlight.com/blog/uncle-bob/2011/09/30/Screaming-Architecture.html Hexagonal Architecture - Alistair Cockburn http://alistair.cockburn.us/Hexagonal+architecture Hexagonal Rails - Matt Wynne http://blog.mattwynne.net/2012/05/31/hexagonal-rails-objects-values-and-hexagons/ Domain Driven Rails - Yan Pritzker https://vimeo.com/106759024 Clean Architecture - Uncle Bob https://www.youtube.com/watch?v=Nltqi7ODZTM Clean Architecture and Design - Uncle Bob https://www.youtube.com/watch?v=Nsjsiz2A9mg Hexagonal Rails - Matt Wynne https://www.youtube.com/watch?v=CGN4RFkhH2M
@camposmilaa BONUS! . juntando tudo
@camposmilaa user requests resource
@camposmilaa user requests resource controller json
@camposmilaa user requests resource request model controller tradução
@camposmilaa user requests resource request model controller use case request
model
@camposmilaa user requests resource request model controller interação use case
entity entity aggregate entity entity domain service
@camposmilaa user requests resource request model controller repository database persistência
use case entity entity aggregate entity entity domain service
@camposmilaa user requests resource request model controller use case repository
database persistência dip entity entity aggregate entity entity domain service
@camposmilaa user requests resource request model controller result model repository
database tradução use case entity entity aggregate entity entity domain service
@camposmilaa user requests resource request model controller result model presenter
repository database result model use case entity entity aggregate entity entity domain service
@camposmilaa user requests resource request model controller result model presenter
repository database result model dip use case entity entity aggregate entity entity domain service
@camposmilaa user requests resource user gets resource back request model
controller entity entity aggregate entity entity result model domain service presenter repository database json use case
@camposmilaa BONUS 2! . exemplo organização pastas
@camposmilaa