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
reinaldob
March 28, 2016
Programming
0
55
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
52
Home Office
reinaldob
0
79
QCon SP 2013 - Legado Vale Ouro
reinaldob
0
52
Other Decks in Programming
See All in Programming
敵対的ポイフル
futabato
0
130
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
170
Implementing Design Systems in Swift
seyfoyun
1
440
Domain-Driven Transformation
hschwentner
2
1.5k
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
280
Goのエラースタックトレースの歴史と今後
sonatard
10
1.8k
初心者のためのRubyKaigi入門/RubyKaigi Introduction
a_matsuda
8
1.4k
ServerAction で Progressive Enhancement はどこまで頑張れるか? / progressive-enhancement-with-server-action
takefumiyoshii
6
400
CREってこういうこと? 体験入社 - 提案資料 - / what-is-cre-trial-employment
shinden
1
500
Ruby Pattern Matching
bkuhlmann
0
930
FigmaとPHPで作る1ミリたりとも表示崩れしない最強の帳票印刷ソリューション
ttskch
43
19k
効率化に挑戦してみたらモバイル開発が少し快適になった話
ryunakayama
0
140
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
41
4.4k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
From Idea to $5000 a Month in 5 Months
shpigford
378
45k
The Invisible Side of Design
smashingmag
294
49k
Robots, Beer and Maslow
schacon
PRO
155
7.9k
The Brand Is Dead. Long Live the Brand.
mthomps
49
29k
RailsConf 2023
tenderlove
8
550
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
Visualization
eitanlees
137
14k
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?