Procesul de migrare: trecerea de la RequireJS la Webpack
Necesitatea de a face trecerea de la RequireJS la Webpack a fost clară, dar amploarea întreprinderii a însemnat că se așteptau ca procesul să dureze cel puțin un an și să implice multă complexitate și lățime de bandă de inginerie. Gândul la acea vreme era că va trebui să parcurgem sistematic baza codului secțiune cu secțiune și să migrăm manual totul, ceea ce ar fi fost cu adevărat oneros.
Descoperirea mea, dacă vreți să o numiți așa, a fost să realizez că aș putea scrie cod capabil să modifice în bloc codul tabloului de bord Braze printr-un proces automat – și, de asemenea, să nu modific codul nostru, dacă ar fi nevoie să anulăm aceste modificări. repede. Am ajuns să fac o demonstrație de concept în urma proiectului meu de hack day, doar pentru a arăta că ar putea funcționa, apoi am continuat să lucrez la el în timpul meu liber ca un fel de proiect pasional.
Acestea fiind spuse, lucrurile nu au demarat cu adevărat până când Greg Beaver, care este inginer senior software în echipa Braze Dashboard, s-a implicat. El a putut să ia scripturile pe care le scrisesem ca parte a demonstrației mele de concept și să le încorporeze într-un instrument pe care l-am putea împărtăși cu alți ingineri. Asta, la rândul său, a însemnat că am putea migra de la RequireJS la Webpack fără a forța toți inginerii care lucrează la codul legat de tabloul de bord să se oprească în timp ce o făceam; în schimb, au putut folosi instrumentul pentru a aduce automat orice cod la care lucrau în sincronizare cu modificările generale.
Instrumentul a ajuns să fie atât de rapid – durează doar două minute pentru a rula – și a funcționat atât de bine încât, în timp ce ne pregătim pentru migrare, am avut de fapt un inginer să-l folosească ca o soluție pentru versiunile lente asociate cu RequireJS. Tocmai și-au convertit ramura în Webpack, au făcut schimbarea pe care trebuiau să o facă și apoi au convertit-o înapoi, astfel încât să poată să o comite în vechiul cod.
Având la dispoziție această nouă capacitate, planul nostru de migrare a fost să rulăm instrumentul lui Greg pe filiala noastră principală în fiecare seară, timp de câteva săptămâni, și să îi facem pe oameni să verifice manual în mediul QA din acea sucursală, doar pentru a vedea dacă s-a stricat ceva. Odată ce am fost încrezători că totul arată bine, am informat restul organizației despre actualizarea planificată, i-am explicat cum își pot migra codul de la RequireJS la Webpack și le-am informat cu privire la câteva considerente cheie înainte de a ajunge. în curs de desfăşurare.
Datorită abordării noastre, un proiect care era de așteptat să dureze peste un an a ajuns să fie încheiat în doar trei săptămâni, ceea ce este destul de incredibil. Și mai neașteptat a fost impactul migrării - în special, procesul de construire pe Webpack acum durează în general doar aproximativ o secundă, reducând timpul necesar pentru fiecare verificare a codului cu mai mult de 99%.