Proses Migrasi: Pindah dari RequireJS ke Webpack
Kebutuhan untuk beralih dari RequireJS ke Webpack sudah jelas, tetapi skala usaha berarti bahwa mereka mengharapkan proses tersebut memakan waktu setidaknya satu tahun dan melibatkan banyak kerumitan dan bandwidth rekayasa untuk dicapai. Pikiran pada saat itu adalah bahwa kami harus secara sistematis menelusuri basis kode bagian demi bagian dan memigrasikan semuanya secara manual, yang akan sangat memberatkan.
Terobosan saya, jika Anda ingin menyebutnya begitu, adalah menyadari bahwa saya dapat menulis kode yang mampu mengubah kode dasbor Braze secara massal melalui proses otomatis—dan juga tidak mengubah kode kami, jika kami perlu memutar kembali perubahan ini dengan cepat. Saya akhirnya melakukan pembuktian konsep setelah proyek hack day saya, hanya untuk menunjukkan bahwa itu bisa berhasil, dan kemudian terus mengerjakannya di waktu luang saya sebagai semacam proyek gairah.
Yang mengatakan, hal-hal tidak benar-benar lepas landas sampai Greg Beaver—yang merupakan Insinyur Perangkat Lunak Senior di tim Dasbor Braze—terlibat. Dia mampu mengambil skrip yang saya tulis sebagai bagian dari bukti konsep saya dan memasukkannya ke dalam alat yang dapat kami bagikan dengan insinyur lain. Itu, pada gilirannya, berarti kami dapat bermigrasi dari RequireJS ke Webpack tanpa memaksa semua insinyur yang mengerjakan kode yang terkait dengan dasbor untuk berhenti saat kami melakukannya; sebagai gantinya, mereka dapat menggunakan alat ini untuk secara otomatis membawa kode apa pun yang sedang mereka kerjakan selaras dengan perubahan keseluruhan.
Alat tersebut menjadi sangat cepat—hanya membutuhkan waktu sekitar dua menit untuk berjalan—dan bekerja dengan sangat baik sehingga saat kami membuat persiapan untuk migrasi, kami sebenarnya memiliki seorang insinyur yang memanfaatkannya sebagai solusi untuk pembangunan lambat yang terkait dengan RequireJS. Mereka baru saja mengonversi cabang mereka ke Webpack, membuat perubahan yang perlu mereka buat, dan kemudian mengonversinya kembali sehingga mereka bisa mengkomitnya dalam kode lama.
Dengan kemampuan baru yang kami miliki, rencana migrasi kami adalah menjalankan alat Greg di cabang utama kami setiap malam selama beberapa minggu dan membuat orang meninjau secara manual di lingkungan QA dari cabang itu, hanya untuk melihat apakah ada yang rusak. Setelah kami yakin bahwa semuanya tampak baik, kami memberi tahu seluruh organisasi tentang pembaruan yang direncanakan, memandu mereka melalui bagaimana mereka dapat memigrasikan kode mereka dari RequireJS ke Webpack, dan memberi mereka petunjuk tentang beberapa pertimbangan utama sebelum mereka mendapatkannya. berlangsung.
Berkat pendekatan kami, sebuah proyek yang diperkirakan akan memakan waktu lebih dari satu tahun akhirnya diselesaikan hanya dalam tiga minggu, yang sangat luar biasa. Yang lebih tidak terduga adalah dampak migrasi—khususnya, proses pembuatan di Webpack sekarang umumnya hanya membutuhkan waktu sekitar satu detik, mengurangi waktu yang diperlukan untuk setiap pemeriksaan kode hingga lebih dari 99%.