SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Matando um legado de 18 anos
Brunno dos Santos / Pedro Tavares
+40
produtos
4
produtos
50
repositórios
55%
faturamento
A Locaweb possui
mais de 40 produtos
Atender inicialmente
os produtos de
hospedagem
(site, email, domínio e
banco de dados)
Hospedagem é
responsável por 55%
do faturamento da
empresa e é o produto
mais antigo
Só hospedagem
possui mais de 50
repositórios
Cenário
O problema do legado
Diversidade grande de
linguagens de
programação e
linguagens legadas
Aplicações pouco
atualizadas, versões
antigas de libs
9 camadas de
aplicações
Muitos paineis
diferentes de operação
Diversidade grande de
linguagens de
programação e
linguagens legadas
Aplicações pouco
atualizadas, versões
antigas de libs
9 camadas de
aplicações
Muitos paineis
diferentes de operação
Diversidade grande de
linguagens de
programação e
linguagens legadas
Aplicações pouco
atualizadas, versões
antigas de libs
9 camadas de
aplicações
Muitos paineis
diferentes de operação
Diversidade grande de
linguagens de
programação e
linguagens legadas
Aplicações pouco
atualizadas, versões
antigas de libs
9 camadas de
aplicações
Muitos paineis
diferentes de operação
Alto nível de
acoplamento com
banco de dados
Modelo de dados
confuso e
desestruturado
O design das aplicações
não acompanhou a
diversificação do
modelo de negócio
Fácil acesso para
intervenções manuais
Alto nível de
acoplamento com
banco de dados
Fácil acesso para
intervenções manuais
Modelo de dados
confuso e
desestruturado
O design das aplicações
não acompanhou a
diversificação do
modelo de negócio
Alto nível de
acoplamento com
banco de dados
Modelo de dados
confuso e
desestruturado
O design das aplicações
não acompanhou a
diversificação do
modelo de negócio
Fácil acesso para
intervenções manuais
Alto nível de
acoplamento com
banco de dados
Modelo de dados
confuso e
desestruturado
O design das aplicações
não acompanhou a
diversificação do
modelo de negócio
Fácil acesso para
intervenções manuais
Lógica de negócio
duplicada em
aplicações diferentes
Chamadas assíncronas
encadeadas
Inconsistência entre
camadas física e lógica
Muito caro criar
produtos novos
Lógica de negócio
duplicada em
aplicações diferentes
Chamadas assíncronas
encadeadas
Inconsistência entre
camadas física e lógica
Muito caro criar
produtos novos
Lógica de negócio
duplicada em
aplicações diferentes
Chamadas assíncronas
encadeadas
Inconsistência entre
camadas física e lógica
Muito caro criar
produtos novos
Lógica de negócio
duplicada em
aplicações diferentes
Chamadas assíncronas
encadeadas
Inconsistência entre
camadas física e lógica
Muito caro criar
produtos novos
Consequência: aumento no
tempo de provisionamento
A solução proposta
Legado
06.
Gerenciador de receita
05.
Gerenciador de produtos
Proposta
01.
Painel do cliente
02.
Checkout de pagamento
03.
SAP/ERP
05.
Provisioning workers
04.
SAP feed consumer
06.
Fila
07.
Provisioning hosting
08.
Scripts internos
09.
API’s de recursos
01.
Painel do cliente
02.
Checkout de pagamento
03.
SAP/ERP
04.
Feed processor
07.
API’s de recursos
Legado
06.
Gerenciador de receita
05.
Gerenciador de produtos
Proposta
01.
Painel do cliente
02.
Checkout de pagamento
03.
SAP/ERP
05.
Provisioning workers
04.
SAP feed consumer
06.
Fila
07.
Provisioning hosting
08.
Scripts internos
09.
API’s de recursos
01.
Painel do cliente
02.
Checkout de pagamento
03.
SAP/ERP
04.
Feed processor
07.
API’s de recursos
Técnicas de arquitetura utilizadas
Adaptive Object Model
Metadado
Features
Instância
Site
Instância
Servidor
Instância
Login
Metadado
Configuration
sync newold
- Não utilizamos `sidekiq`
- Gem `concurrent-ruby`
- Leitura híbrida
Sincronização do legado com o novo
01
02
03
https://github.com/mperham/sidekiq/wiki/FAQ#how-can-i-process-a-certain-queue-in-serial

"You can't, by design."
Feature toggle
Utilizamos essa técnica para controlar os
fluxos que vão para o legado ou para o
sistema novo. Fazemos uso extensivo de
regexp para escrever as regras de controle.
01 Toggle Server
É uma aplicação que
persiste as regras
para cada feature
02 Shadow deploy
Tornou mais segura
a forma que fazemos
deploy
03 Toggle Tracker
Para persistirmos o
estado da primeira
vez que toggle foi
utilizado
Feature Toggle
App1 App2
API

Recurso
App3
Tracker
Toggle
Server
Painel
OPERATIONS
PANEL
Painel de operações unificado
Remote factory
e testes integrados
API’s concisas
Poucos endpoints e um
mesmo fluxo para todas
ações Métricas e
Monitoramento
InfluxDB + Grafana
Responsabilidades
bem definidas
arquitetura, aplicações e
dependências
Agile/Remoto
Refining,
documentação, code
review (open source)
Resultados
Mesmo com o projeto ainda não finalizado
conquistamos vários resultados positivos.
Banco de dados
Os tempos de provisionamento
pularam de até 30 min para
menos de 2 segundos
MVP em 3 meses
Adicionamos novos produtos ao
novo provisionamento em tempo
recorde
DÚVIDAS?
Brunno dos Santos
github.com/squiter
@squiter
Pedro Gomes Tavares
github.com/pgt
pgtnetwork@gmail.com
We’re hiring!

Mais conteúdo relacionado

Semelhante a Matando um legado de 18 anos

CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2Cauan Cabral
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
WordCamp 2011 - BuscaPé Developer
WordCamp 2011 - BuscaPé DeveloperWordCamp 2011 - BuscaPé Developer
WordCamp 2011 - BuscaPé DeveloperPaulino Michelazzo
 
Serviços OpenAIRE para Gestores de Repositórios - broker service & dashboard ...
Serviços OpenAIRE para Gestores de Repositórios - broker service & dashboard ...Serviços OpenAIRE para Gestores de Repositórios - broker service & dashboard ...
Serviços OpenAIRE para Gestores de Repositórios - broker service & dashboard ...Pedro Príncipe
 
E-book sobre HTML 5 (Devmedia)
E-book sobre HTML 5 (Devmedia)E-book sobre HTML 5 (Devmedia)
E-book sobre HTML 5 (Devmedia)Devmedia
 
Fisl10 MySql na Globo.com por Camila Dias
Fisl10 MySql na Globo.com por Camila DiasFisl10 MySql na Globo.com por Camila Dias
Fisl10 MySql na Globo.com por Camila DiasCamila Dias
 
Libere seus serviços! Transformando serviços existentes em APIs gerenciadas
Libere seus serviços! Transformando serviços existentes em APIs gerenciadasLibere seus serviços! Transformando serviços existentes em APIs gerenciadas
Libere seus serviços! Transformando serviços existentes em APIs gerenciadasWSO2
 
Case PHP como base de digital asset management arizona
Case PHP como base de digital asset management arizonaCase PHP como base de digital asset management arizona
Case PHP como base de digital asset management arizonaiMasters
 
Servidores Web
Servidores Web Servidores Web
Servidores Web bastosluis
 
Apresentação SpagoBI
Apresentação SpagoBIApresentação SpagoBI
Apresentação SpagoBIGrendene S/A
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPThiago Colares
 
Planode Aula
Planode AulaPlanode Aula
Planode Aulasofteam
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPCBA2012
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemastaniamaciel
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureFabrício Lopes Sanchez
 
Cake php selecaodeprojetos-apres-em-modelo
Cake php selecaodeprojetos-apres-em-modeloCake php selecaodeprojetos-apres-em-modelo
Cake php selecaodeprojetos-apres-em-modeloCBA2012
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...fabio perrella
 

Semelhante a Matando um legado de 18 anos (20)

CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
WordCamp 2011 - BuscaPé Developer
WordCamp 2011 - BuscaPé DeveloperWordCamp 2011 - BuscaPé Developer
WordCamp 2011 - BuscaPé Developer
 
PHP + Flex
PHP + FlexPHP + Flex
PHP + Flex
 
Serviços OpenAIRE para Gestores de Repositórios - broker service & dashboard ...
Serviços OpenAIRE para Gestores de Repositórios - broker service & dashboard ...Serviços OpenAIRE para Gestores de Repositórios - broker service & dashboard ...
Serviços OpenAIRE para Gestores de Repositórios - broker service & dashboard ...
 
E-book sobre HTML 5 (Devmedia)
E-book sobre HTML 5 (Devmedia)E-book sobre HTML 5 (Devmedia)
E-book sobre HTML 5 (Devmedia)
 
Fisl10 MySql na Globo.com por Camila Dias
Fisl10 MySql na Globo.com por Camila DiasFisl10 MySql na Globo.com por Camila Dias
Fisl10 MySql na Globo.com por Camila Dias
 
Libere seus serviços! Transformando serviços existentes em APIs gerenciadas
Libere seus serviços! Transformando serviços existentes em APIs gerenciadasLibere seus serviços! Transformando serviços existentes em APIs gerenciadas
Libere seus serviços! Transformando serviços existentes em APIs gerenciadas
 
Case PHP como base de digital asset management arizona
Case PHP como base de digital asset management arizonaCase PHP como base de digital asset management arizona
Case PHP como base de digital asset management arizona
 
Servidores Web
Servidores Web Servidores Web
Servidores Web
 
Apresentação SpagoBI
Apresentação SpagoBIApresentação SpagoBI
Apresentação SpagoBI
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHP
 
Web Tools Pt Br
Web Tools Pt BrWeb Tools Pt Br
Web Tools Pt Br
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
 
Arquitetura web
Arquitetura webArquitetura web
Arquitetura web
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHP
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemas
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 
Cake php selecaodeprojetos-apres-em-modelo
Cake php selecaodeprojetos-apres-em-modeloCake php selecaodeprojetos-apres-em-modelo
Cake php selecaodeprojetos-apres-em-modelo
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
 

Matando um legado de 18 anos