SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
Transformando um legado
front-end em uma SPA com
React
Christiano Martins Milfont
Rivendel / São Paulo, Brasil
@cmilfont
Kete Martins Rufino
GreenMile / Ceará, Brasil
@ketemr
143 clientes
8 países
3 idiomas
250 servidores na AWS
1bi requisições/mês
90k linhas JS
2012 - 2017
Backbone (ecossistema completo em
2012) - Leaflet - Grunt - jQuery - Slick Grid
- Técnicas mistas de Dev
Greenmile Live
Acoplamento - Testes - Controle manual
do DOM - PERFORMANCE
Greenmile Live - Problemas
Solução - V1
Sentimentos do Time
Precisamos mudar!
1
2
34
Solução 1
Regra do escoteiro (Clean Code):
Deixar o lugar mais limpo do que
estava quando você chegou
Solução 1
Regra do escoteiro (Clean Code):
Deixar o lugar mais limpo do que
estava quando você chegou
Resolved: 12/Dec/16 5:17 PM
299
299
+10 Bugs resolvidos
Funciona!
Solução 1
Solução 1
Planejado: 2 semanas
Realizado: 2 meses
Solução 1
- Infraestrutura do legado
- Acoplamento de funcionalidades
- Interação com outros componentes
- Impacto de outros componentes na lista
Solução 2
Congelar a versão
atual e começar tudo
do zero com React
Solução 3
1. Levantar quais partes do sistema são mais
usadas (Princípio de Pareto)
2. Criar componentes React para essas partes
3. Importar os componentes como libs
4. Cada componente é um projeto novo no git
5. Substituir os componentes novos nas telas
Principais
componentes
19 Elementos
Mapa && Toolbar
48 Componentes
Form Builder
Telas Customizadas
26
Telas
8 com mapas
2 principais do
sistema
Solução 3 - Migrar tela mais crítica
Planejado: 2 meses.
Realizado: 3 meses e não completado.
Solução 3.1
Inverter o controle do Backbone para React
React Router assumindo as requisições e despachando
para novos containers ou controllers do Backbones do
legado (sim, código de "negócio" dentro do controller)
Estratégia
Lições Aprendidas
1. Inverter o controle para coordenar o
acoplamento e aumentar a coesão.
2. Trabalhar nas poucas Features que representam
+80% de operações dos usuários
3. Injetar pequenos universos de React no legado.
4. CI/CD 100% automatizado.
5. Testes automatizados
Obrigad@!

Weitere ähnliche Inhalte

Mehr von React Conf Brasil

Matheus Lima - O que tem de funcional no React
Matheus Lima - O que tem de funcional no ReactMatheus Lima - O que tem de funcional no React
Matheus Lima - O que tem de funcional no ReactReact Conf Brasil
 
Matheus Marsiglio - Isomorphic React + Redux App
Matheus Marsiglio - Isomorphic React + Redux AppMatheus Marsiglio - Isomorphic React + Redux App
Matheus Marsiglio - Isomorphic React + Redux AppReact Conf Brasil
 
Sebastian Ferrari - Why React is good for business
Sebastian Ferrari - Why React is good for businessSebastian Ferrari - Why React is good for business
Sebastian Ferrari - Why React is good for businessReact Conf Brasil
 
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything togetherSashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything togetherReact Conf Brasil
 
João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)
João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)
João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)React Conf Brasil
 
Raphael Amorim - Scrating React Fiber
Raphael Amorim - Scrating React FiberRaphael Amorim - Scrating React Fiber
Raphael Amorim - Scrating React FiberReact Conf Brasil
 
James Baxley - Statically typing your GraphQL app
James Baxley - Statically typing your GraphQL appJames Baxley - Statically typing your GraphQL app
James Baxley - Statically typing your GraphQL appReact Conf Brasil
 
Marcelo Camargo - Let's dive into Babel: how everything works
Marcelo Camargo - Let's dive into Babel: how everything worksMarcelo Camargo - Let's dive into Babel: how everything works
Marcelo Camargo - Let's dive into Babel: how everything worksReact Conf Brasil
 
Fernando Daciuk - The magic world of tests with Jest
Fernando Daciuk - The magic world of tests with JestFernando Daciuk - The magic world of tests with Jest
Fernando Daciuk - The magic world of tests with JestReact Conf Brasil
 

Mehr von React Conf Brasil (9)

Matheus Lima - O que tem de funcional no React
Matheus Lima - O que tem de funcional no ReactMatheus Lima - O que tem de funcional no React
Matheus Lima - O que tem de funcional no React
 
Matheus Marsiglio - Isomorphic React + Redux App
Matheus Marsiglio - Isomorphic React + Redux AppMatheus Marsiglio - Isomorphic React + Redux App
Matheus Marsiglio - Isomorphic React + Redux App
 
Sebastian Ferrari - Why React is good for business
Sebastian Ferrari - Why React is good for businessSebastian Ferrari - Why React is good for business
Sebastian Ferrari - Why React is good for business
 
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything togetherSashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
 
João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)
João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)
João Gonçalves - Show do Milhão PWA com React (Caso de Sucesso)
 
Raphael Amorim - Scrating React Fiber
Raphael Amorim - Scrating React FiberRaphael Amorim - Scrating React Fiber
Raphael Amorim - Scrating React Fiber
 
James Baxley - Statically typing your GraphQL app
James Baxley - Statically typing your GraphQL appJames Baxley - Statically typing your GraphQL app
James Baxley - Statically typing your GraphQL app
 
Marcelo Camargo - Let's dive into Babel: how everything works
Marcelo Camargo - Let's dive into Babel: how everything worksMarcelo Camargo - Let's dive into Babel: how everything works
Marcelo Camargo - Let's dive into Babel: how everything works
 
Fernando Daciuk - The magic world of tests with Jest
Fernando Daciuk - The magic world of tests with JestFernando Daciuk - The magic world of tests with Jest
Fernando Daciuk - The magic world of tests with Jest
 

Kete Rufino e Christiano Milfont - Transformando um front-end legado em uma React Single Page Application