Contamos a nossa experiência em implementar o React em nosso projeto monólito em Rails, nossa motivação, processo de decisão, como iniciamos, o ganhos com essa abordagem e o que aprendemos com todo o processo.
2. Graduado em Adm. Empresas, pós-graduado em
Análise, Projeto e Gerência de Sistemas.
John W. M. Carneiro
Dev. Full-Stack na Checkplant Sistemas S/A
- Ruby (Rails)
- Python (Django/Flask)
- PHP
Linguagens:
- JS
- React
- Vue e etc.
@johnwmcarneiro
4. - Monólito.
- Frontend em Rails (erb, jquery e etc), Angular.js e Sprockets.
- Dificuldade de manutenção para o Dev.
- Divisão de responsabilidade.
- Hype da atualização do Rails.
- Novo Design System e uma nova funcionalidade.
Motivação
6. Why React?
- Equipe.
- Mercado.
- Outros projetos internos já desenvolvidos com React e
React Native.
- React Hooks (State, Effect, Memo, Context e etc) e
sem classes.
10. Reuniões e Regras
- Reunião para apresentar a ideia.
- Reunião entre com os times de tecnologia.
- Deveria ter separação do código. Sem uso de gems que
gerem dependência;
- Comunicação deveria ser via API;
- Inclusão do JS e CSS no layout do projeto, múltiplos
entrypoints e múltiplos apps.
- Integração com CI e deploy junto do Rails.
Definição
- Ficar acoplado como a implementação do Angular.js.
Preocupação
17. Não usamos o CRA.
Webpack
customizado.
FIRST VERSION
MVP
18. MVP First Version
- E quando vamos de uma página de listagem para uma
página de cadastro ou outra?
- E quando vários pontos precisam dos mesmos dados?
- Override de CSS.
Problemas:
25. O que ganhamos…
- Evolução gradual do frontend, implementação do
React sem refazer todo o frontend;
- Aplicação do novo Design System;
- Melhora na experiência do usuário:
- Desempenho no carregamento da tela;
- Elementos já carregados;
- Resposta por api e cache;
- Assíncrono.
- Backend:
- Simplificação;
- API interna com cache;
- Serialização;
- Testes e documentação.
- Motivação da equipe.
27. Aprendizado
- Inclua toda equipe no processo e principalmente quem lida
com o cliente (CS, Suporte,...).
- Planeje antes!
- Ao criar um nova tela, relacione tudo que se espera.
- Ao refazer uma tela, relacione todas as regras existentes e
esperadas.
- Verifique antes outras páginas que utilizam as mesmas
funcionalidades.
- Não exclua o código antigo, deixe para o final.
- Comece arrumando a casa e construa os componentes.
- Usou pela segunda vez, faça um componente.
- Instale o Lint e siga as regras.
- Principalmente, pense fora da caixa e não se apegue que
deve ser do jeito “certo".
- Feito é melhor que perfeito.
29. Próximos desafios
- Integrar as funcionalidades em React com as
funcionalidades antigas em Angular.js;
- Continuar evoluindo o código e migrar outras telas,
- Manter a organização e qualidade de código;
- I18n;
- Isolamento da CSS.