O processo de migração: passando do RequireJS para o Webpack
A necessidade de fazer a mudança do RequireJS para o Webpack era clara, mas a escala do empreendimento significava que eles esperavam que o processo levasse pelo menos um ano e envolvesse muita complexidade e largura de banda de engenharia para alcançar. O pensamento na época era que teríamos que passar sistematicamente pela base de código seção por seção e migrar tudo manualmente, o que seria muito oneroso.
Minha descoberta, se você quiser chamá-lo assim, foi perceber que eu poderia escrever código capaz de modificar o código do painel Braze em massa por meio de um processo automatizado - e também não modificar nosso código, se precisássemos reverter essas alterações rapidamente. Acabei fazendo uma prova de conceito seguindo meu projeto de hack day, só para mostrar que poderia funcionar, e depois continuei trabalhando nele no meu tempo livre como uma espécie de projeto de paixão.
Dito isso, as coisas realmente não decolaram até que Greg Beaver – que é engenheiro de software sênior na equipe do Braze Dashboard – se envolveu. Ele conseguiu pegar os scripts que eu escrevi como parte da minha prova de conceito e incorporá-los em uma ferramenta que poderíamos compartilhar com outros engenheiros. Isso, por sua vez, significava que poderíamos migrar do RequireJS para o Webpack sem forçar todos os engenheiros trabalhando no código relacionado ao painel a parar enquanto fazíamos isso; em vez disso, eles puderam usar a ferramenta para trazer automaticamente qualquer código em que estivessem trabalhando em sincronia com as alterações gerais.
A ferramenta acabou sendo tão rápida - leva apenas cerca de dois minutos para ser executada - e funcionou tão bem que, enquanto estávamos nos preparativos para as migrações, um engenheiro a utilizou como uma solução alternativa para as compilações lentas associadas ao RequireJS. Eles apenas converteram sua ramificação para o Webpack, fizeram a alteração que precisavam fazer e depois a converteram de volta para que pudessem comitá-la no código antigo.
Com esse novo recurso à nossa disposição, nosso plano de migração era executar a ferramenta de Greg em nossa filial principal todas as noites por algumas semanas e fazer com que as pessoas revisassem manualmente o ambiente de controle de qualidade dessa filial, apenas para ver se algo estava quebrado. Quando estávamos confiantes de que tudo parecia bem, informamos o restante da organização sobre a atualização planejada, orientamos como eles poderiam migrar seu código do RequireJS para o Webpack e informamos algumas considerações importantes antes de obterem em andamento.
Graças à nossa abordagem, um projeto que deveria levar mais de um ano acabou sendo finalizado em apenas três semanas, o que é incrível. Ainda mais inesperado foi o impacto da migração – em particular, o processo de compilação no Webpack agora geralmente leva apenas cerca de um segundo, reduzindo o tempo necessário para cada verificação de código em mais de 99%.