Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[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
24
[Womakers] Domain Storytelling
camilacampos
0
79
[Codecon Ladies] Arquitetura Baseada em Eventos
camilacampos
0
72
[Trem on Rails] Como não odiar seus testes
camilacampos
0
71
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
160
[Atlas Meetup] Como não odiar seus testes
camilacampos
0
62
[Refactory - IME/USP - Jun/2025] Responsabilidade de Software Engineers
camilacampos
0
69
[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
73
Other Decks in Programming
See All in Programming
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
240
[PyCon KR 2026] More Variants, More Diversity for AI Accelerators
achimnol
0
100
引き算の組織 ― アウトカムとAIに全振りするために辞めたこと ― / Organization by Subtraction
hirokiyamamoto14
PRO
0
280
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
190
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
250
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.9k
Oxlintはいいぞ(続)
yug1224
1
400
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
510
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
220
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
140
Press start. Python's next generation.
willingc
PRO
2
100
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
140
Featured
See All Featured
Writing Fast Ruby
sferik
630
63k
Documentation Writing (for coders)
carmenintech
77
5.5k
The Spectacular Lies of Maps
axbom
PRO
1
940
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
660
HDC tutorial
michielstock
2
810
New Earth Scene 8
popppiees
3
2.5k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
280
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
680
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.8k
Embracing the Ebb and Flow
colly
88
5.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Technical Leadership for Architectural Decision Making
baasie
3
520
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