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
Devolta ao Monolito
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
reinaldob
March 28, 2016
Programming
0
64
Devolta ao Monolito
Uma discussão sobre Microserviços e Monolito
reinaldob
March 28, 2016
Tweet
Share
More Decks by reinaldob
See All by reinaldob
Sistemas Distribuidos Escaláveis com Microserviços
reinaldob
0
58
Home Office
reinaldob
0
87
QCon SP 2013 - Legado Vale Ouro
reinaldob
0
58
Other Decks in Programming
See All in Programming
Fluid Templating in TYPO3 14
s2b
0
130
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
170
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
560
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
210
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
AI巻き込み型コードレビューのススメ
nealle
1
210
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
230
Implementation Patterns
denyspoltorak
0
280
Data-Centric Kaggle
isax1015
2
770
Grafana:建立系統全知視角的捷徑
blueswen
0
330
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
430
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
590
Featured
See All Featured
A designer walks into a library…
pauljervisheath
210
24k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
Designing Experiences People Love
moore
144
24k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Code Review Best Practice
trishagee
74
20k
Navigating Weather and Climate Data
rabernat
0
100
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
170
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
77
Automating Front-end Workflow
addyosmani
1371
200k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Unsuck your backbone
ammeep
671
58k
Balancing Empowerment & Direction
lara
5
890
Transcript
De volta ao monolito
@reinaldob • Mais de 20 anos de experiência em desenvolvimento
• Programador na Spree Commerce Inc. • Empresa focada em eCommerce • Equipe distribuída • 99% home office
None
Nossa Equipe • Washington-EUA(HQ) • Vermont-EUA • Polônia • São
Paulo • Piauí
2 times
Antes de começar…
None
Como era no início?
Store (Rails, Repo) • Acessado por um volume de usuários
específico • Tem mecanismo de cache diferente • Requisitos diferentes de disponibilidade
Admin (Rails, Repo) • Acessado só pelo administrador • Baixo
acesso • Disponibilidade relaxada
Checkout (Rails, Repo) • Unico app para todas as lojas
• Requisitos de segurança diferentes • Mais simples, menos deploys
Site (Rails, Repo) • App para autenticação • Segurança alta
• Utilizado para o Store e Admin
• Nova feature, temas! • Separar para poder ser feito
fora • Reuso Themes (Gem, Repo)
• Reuso • Duplicação • Sem lugar definido • API
Core (Gem, Repo)
Core (Gem, Repo) Themes (Gem, Repo) Admin (Rails, Repo) Store
(Rails, Repo) Checkout (Rails, Repo) Site (Rails, Repo)
Infra • Docker para cada Rails • Git repo para
cada projeto • Git Flow • AWS (elb, ec2, s3, etc..) • DynamoDB
1 Devops
None
None
Mas as coisas começaram a mudar
Deploy demorado • Tempo para rodar CI • Gerar imagem(AMI)
• Publicar • Montar servidores(EC2, ELB, etc) • 15min por projeto(4 projetos)
Dependencias • 5 projetos • Nova versão, 5 tags, 5
releases, 5 … • 1 Bug = Git flow hell
Duplicação • I18n • Assets • Presenters • Tool (CodeClimate)
FTW
Evolução Rápida • Startup • Features ortogonais a todo o
tempo • Time to Market • Times Pequenos
None
Mesmo assim ta tudo bem…
None
Passo 1
Criar apenas 1 repo • Crazy Ideas • Similar à
Open Source • Sem julgamento
Criar apenas 1 repo • Tag para 1 repo •
Melhor visão (encontrando problemas) • Sem sofrimento para bugs
Passo 2
Deploy • Processo de rodar o CI • Como geramos
as imagens (AMI) • Normalizamos as apps para usarem a mesma estrutura e assim reutilizar as configs
None
Passo 3
Admin + Site • A app site estava meio perdida,
ai margeamos com o Admin • Um passo seguro
Passo 4
Infra • A infra foi toda redesenhada • Tudo imutável
• Evidenciou nossos problemas • Ficou muito pior do que estava
Passo 5
Mergear Tudo • Crazy Ideas de novo • Todos os
projetos viraram 1 só • Rotas, views, assets, etc
Como ficou?
Themes (pasta) Admin Store Site Checkout (Rails) Core (pasta) Repo
• I18n centralizada • Assets centralizados • Packages/Namespaces melhores • Melhores specs
Admin Store Site Checkout (Rails) AMI • CI em 8min
(mesmo com o dobro de features) • Deploy 10min • Scripts de infra simplificados • Arquitetura 100% imutável (inclusive o banco de dados)
E estamos felizes no momento =)
Mas não mudamos só código!
Arquitetura tem que ser baseada no negócio e nas pessoas.
Conway Law
Reavalie seu ambiente com olhos de fora sempre que possível
Ouça seu time
Experimente, experimente e experimente…
Ouça o mercado também, mas não muito…
Obrigado :) Dúvidas?