Процесс миграции: переход с RequireJS на Webpack
Необходимость перехода с RequireJS на Webpack была очевидна, но масштаб мероприятия означал, что они ожидали, что этот процесс займет не менее года и потребует больших усилий и инженерной пропускной способности. В то время считалось, что нам придется систематически просматривать кодовую базу раздел за разделом и вручную все мигрировать, что было бы очень обременительно.
Моим прорывом, если вы хотите это назвать, стало осознание того, что я могу написать код, способный массово изменять код панели управления Braze с помощью автоматизированного процесса, а также не изменять наш код, если нам нужно откатить эти изменения. быстро. Я закончил тем, что сделал доказательство концепции после моего проекта дня взлома, просто чтобы показать, что он может работать, а затем продолжил работать над ним в свободное время как своего рода проект страсти.
Тем не менее, дела по-настоящему не шли, пока не вмешался Грег Бивер, старший инженер-программист в команде Braze Dashboard. Он смог взять сценарии, которые я написал как часть проверки концепции, и включить их в инструмент, которым мы могли поделиться с другими инженерами. Это, в свою очередь, означало, что мы могли перейти с RequireJS на Webpack, не заставляя всех инженеров, работающих над кодом, связанным с приборной панелью, останавливаться, пока мы это делали; вместо этого они могли использовать инструмент для автоматической синхронизации любого кода, над которым они работали, с общими изменениями.
Инструмент оказался настолько быстрым — его запуск занимает всего около двух минут — и работал так хорошо, что, пока мы готовились к миграции, у нас был инженер, который использовал его как обходной путь для медленных сборок, связанных с RequireJS. Они просто преобразовали свою ветку в Webpack, внесли необходимые изменения, а затем преобразовали их обратно, чтобы они могли зафиксировать их в старом коде.
Имея в своем распоряжении эту новую возможность, наш план миграции заключался в том, чтобы запускать инструмент Грега в нашей основной ветке каждую ночь в течение нескольких недель и заставлять людей вручную проверять в среде контроля качества этой ветки, просто чтобы посмотреть, не сломалось ли что-нибудь. Как только мы убедились, что все выглядит хорошо, мы проинформировали остальную часть организации о запланированном обновлении, рассказали им, как они могут перенести свой код с RequireJS на Webpack, и предупредили их о нескольких ключевых соображениях, прежде чем они получили в стадии реализации.
Благодаря нашему подходу проект, который, как ожидалось, займет больше года, был завершен всего за три недели, что довольно невероятно. Еще более неожиданным было влияние миграции — в частности, процесс сборки в Webpack теперь обычно занимает всего около секунды, что сокращает время, необходимое для каждой проверки кода, более чем на 99%.