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
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
18
[Womakers] Domain Storytelling
camilacampos
0
75
[Codecon Ladies] Arquitetura Baseada em Eventos
camilacampos
0
66
[Trem on Rails] Como não odiar seus testes
camilacampos
0
64
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
150
[Atlas Meetup] Como não odiar seus testes
camilacampos
0
58
[Refactory - IME/USP - Jun/2025] Responsabilidade de Software Engineers
camilacampos
0
62
[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
62
Other Decks in Programming
See All in Programming
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
210
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
160
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
580
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
220
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
360
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
150
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
8.9k
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.7k
初めてのKubernetes 本番運用でハマった話
oku053
0
120
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
840
symfony/aiとlaravel/boost
77web
0
120
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.3k
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
107
250k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
The SEO Collaboration Effect
kristinabergwall1
1
500
Amusing Abliteration
ianozsvald
1
220
Marketing to machines
jonoalderson
1
5.6k
Accessibility Awareness
sabderemane
1
150
Building Applications with DynamoDB
mza
96
7.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
210
sira's awesome portfolio website redesign presentation
elsirapls
0
300
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