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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Camila Campos
May 04, 2019
Programming
170
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
15
[Womakers] Domain Storytelling
camilacampos
0
75
[Codecon Ladies] Arquitetura Baseada em Eventos
camilacampos
0
65
[Trem on Rails] Como não odiar seus testes
camilacampos
0
60
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
150
[Atlas Meetup] Como não odiar seus testes
camilacampos
0
54
[Refactory - IME/USP - Jun/2025] Responsabilidade de Software Engineers
camilacampos
0
58
[LoveCoding - Vindi - Ago/2023] Como entender o seu domínio por meio de histórias
camilacampos
0
130
[Meetup DDD - Dez/2022] Como entender o seu domínio por meio de histórias
camilacampos
1
60
Other Decks in Programming
See All in Programming
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
180
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
250
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
250
Webフレームワークの ベンチマークについて
yusukebe
0
170
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
790
3Dシーンの圧縮
fadis
1
770
スマートグラスで並列バイブコーディング
hyshu
0
150
dRuby over BLE
makicamel
2
340
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.1k
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
340
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
130
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
The browser strikes back
jonoalderson
0
1.2k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
220
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Language of Interfaces
destraynor
162
27k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Fireside Chat
paigeccino
42
4k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
300
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
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