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
28
[Womakers] Domain Storytelling
camilacampos
0
79
[Codecon Ladies] Arquitetura Baseada em Eventos
camilacampos
0
77
[Trem on Rails] Como não odiar seus testes
camilacampos
0
74
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
170
[Atlas Meetup] Como não odiar seus testes
camilacampos
0
63
[Refactory - IME/USP - Jun/2025] Responsabilidade de Software Engineers
camilacampos
0
73
[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
74
Other Decks in Programming
See All in Programming
XHTMLが残したもの
yosuke_furukawa
PRO
2
640
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
280
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
What We Talk About When We Talk About XP
m_seki
2
450
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.9k
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
300
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
120
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
120
Press start. Python's next generation.
willingc
PRO
3
330
Intent as Code
shoppingjaws
5
720
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
490
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
820
30 Presentation Tips
portentint
PRO
1
390
Being A Developer After 40
akosma
91
590k
A Modern Web Designer's Workflow
chriscoyier
699
190k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
Navigating Weather and Climate Data
rabernat
0
510
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Accessibility Awareness
sabderemane
1
210
WENDY [Excerpt]
tessaabrams
13
39k
4 Signs Your Business is Dying
shpigford
187
23k
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