Sains Dibalik Migrasi Drupal 7 hingga 9 yang Berhasil (dan mengapa beberapa di antaranya gagal)
Diterbitkan: 2021-12-15Ingat bahwa situs web hebat yang disukai semua orang di perusahaan Anda (atau setidaknya menoleransi) bahwa Anda terpaksa bermigrasi ke sistem yang lebih baru? Dan tim yang Anda percayai untuk melakukannya mungkin menggigit lebih dari yang bisa mereka kunyah? Apa yang dulunya merupakan situs web yang tampak sangat bagus dan fungsional, sekarang menjadi berantakan karena masalah aneh, kinerja buruk, atau terkadang, situs yang hampir tidak dapat digunakan.
Jika ini terdengar familier dan Anda mengalami masalah aneh setelah Anda memutakhirkan situs Drupal 7 (atau 6) ke Drupal 9 (atau 8), silakan baca artikel ini sampai akhir . Kami akan membahas masalah umum yang dihadapi pemilik situs setelah mereka memutakhirkan Drupal 7 (atau 6) ke Drupal 9 (atau 8) dan bagaimana cara mengatasinya. Ini tidak akan mencakup semua masalah yang kami lihat ketika kami datang untuk penyelamatan migrasi, tetapi setidaknya harus membawa Anda ke titik di mana Anda bisa tidur di malam hari.

Peningkatan Drupal 7 hingga 9 - Tantangan Mendasar
Pertanyaan pertama yang mungkin Anda tanyakan pada diri sendiri adalah, “Mengapa?” Memutakhirkan dari Drupal 7 ke Drupal 9 (Drupal 8 sekarang telah dihentikan) sepertinya tidak terlalu sulit dari perspektif platform.
Nah, Drupal 8 mengubah segalanya. Itu memiliki perombakan arsitektur yang lengkap sehingga CMS bisa lebih berkelanjutan, relevan, dan lebih mudah dipahami dalam jangka panjang. Adopsi teknologi dan kerangka kerja modern seperti pemrograman berorientasi objek, Symfony, Twig, versi PHP terbaru dan (banyak lagi), juga memungkinkan komunitas Drupal tumbuh secara eksponensial dengan mengakomodasi berbagai keterampilan yang lebih luas untuk membantu membangun Drupal. Artinya, sekarang lebih mudah untuk menemukan ahli untuk membangun dan memelihara situs web Drupal Anda. Kabar baiknya adalah bahwa memutakhirkan ke versi Drupal yang akan datang (seperti Drupal 8 ke Drupal 9) setelah migrasi awal itu sangat mudah dan tidak memerlukan pembangunan kembali.
Tetapi kembali ke masalah yang dihadapi, banyak organisasi masih bermigrasi dari Drupal 7 ke 9 yang melibatkan pembangunan kembali situs web secara menyeluruh. Pembangunan kembali itu sendiri cukup kompleks tanpa mempertahankan struktur konten saat ini yang dapat diberikan kepada pengembang yang paling berpengalaman. Dan dalam kebanyakan kasus, situs web yang lebih besar membutuhkan lebih banyak perhatian karena mereka cenderung memiliki beberapa modul kontribusi dan kustom yang tidak memiliki jalur peningkatan yang lurus. Semua itu bersama-sama membuka peluang tak terbatas untuk kesalahan.
Untuk tim yang belum mencoba migrasi jenis ini, lebih sering daripada tidak, kesalahan migrasi Drupal 7 hingga 9 pertama adalah kurangnya persiapan. Langkah pertama dan paling signifikan untuk migrasi Drupal yang sukses adalah melakukan audit migrasi menyeluruh untuk menganalisis setiap detail kecil dari struktur situs web saat ini . Laporan ini tidak hanya membantu Anda menilai implikasi migrasi, tetapi juga akan memberi Anda wawasan tentang bidang-bidang yang perlu ditingkatkan. Langkah terpenting berikutnya adalah memutuskan apakah akan mengizinkan mitra pengembangan Drupal khusus (seseorang yang menghirup Drupal hari demi hari) untuk melakukan migrasi. Sama seperti Anda lebih memilih ahli bedah jantung untuk melakukan operasi bypass daripada ahli bedah ortopedi; memiliki perusahaan khusus yang berfokus pada Drupal untuk membangun situs web Drupal Anda akan menghasilkan migrasi yang berhasil.

Tantangan Migrasi Drupal 7 hingga 9 Umum
Salah satu sumber frustrasi yang paling umum setelah migrasi Drupal 6/7 ke 8/9 adalah tidak tahu harus mulai dari mana saat menangani masalah. Bagaimana Anda, dengan atau tanpa keterampilan coding, mencari tahu di mana letak masalah sebenarnya? Mudah - periksa log kesalahan Anda. Saya tahu, sepertinya Anda membuka kaleng cacing lain untuk mencoba memahami apa yang dikatakan log, tetapi kami akan memandu Anda melalui yang umum di bawah ini.
Bagaimana cara menemukan log kesalahan saya?
|
Mari selami langsung ke beberapa masalah paling umum yang dihadapi oleh pemilik situs Drupal setelah migrasi Drupal 7 ke Drupal 9.
Situs web hampir tidak aktif / rusak
- Masalah server: Server Anda dapat disusupi jika Anda tidak memiliki izin yang cukup untuk mengakses server Anda. Melihat lebih dalam ke log kesalahan akan membantu Anda memahami dari mana masalah itu berasal. Jika ini adalah masalah server, pastikan Anda memiliki cukup hak untuk mengakses server Anda. Hubungi penyedia hosting Anda untuk meningkatkan batas memori jika Anda mengalami masalah kekurangan ruang. Jika itu tidak membantu, ajukan tiket dengan mereka yang menyebutkan masalah server Anda.
- Kode khusus: Jika situs web Drupal 6/7 Anda lebih kompleks dari yang diharapkan, kemungkinan alih-alih menilai kode khusus dan memetakannya dengan benar sebelum migrasi, peningkatan dan pergeseran biasa dilakukan. Jika Anda memiliki kondisi khusus yang menyala ketika halaman Anda dimuat dan tidak menemukan kode khusus yang terkait dengannya, Anda akan berakhir dengan halaman yang rusak. Hal pertama yang harus dilakukan adalah memeriksa untuk melihat apakah Anda telah menilai situs web dengan benar dalam audit migrasi Anda (jika Anda melakukannya) untuk memeriksa modul dan kode khusus. Jika masalahnya adalah karena kondisi kustom dan kode tidak ada, Anda memerlukan pengembang Drupal untuk membuat implementasi kode kustom. Idealnya, kode khusus harus dibuat sebelum konten apa pun dimigrasikan.
- Modul Inti/Kontribusi: Terkadang Anda dapat mengalami masalah yang diketahui pada inti Anda atau modul kontribusi yang sudah memiliki solusi/tambalan. Sedikit riset dapat membantu mengidentifikasi hal ini. Temukan dan terapkan tambalan dan Anda harus melakukannya dengan baik.
- Versi / pustaka PHP usang: Situs Drupal baru Anda mungkin masih menjalankan versi PHP yang lebih lama atau pustaka yang menjadi sandaran kode Anda. Pastikan situs web Anda mengimplementasikan versi terbaru PHP dan pustaka lainnya. Juga periksa apakah semua persyaratan dan konfigurasi sistem terpenuhi.
Tidak Dapat Mengedit Halaman (Masalah Izin)
- 500 error: Jika Anda tidak dapat mengedit halaman karena mengalami 500 Internal Server Error, hal itu bisa disebabkan oleh berbagai alasan (salah konfigurasi, kode buruk, pengindeksan salah, agregasi, dll.). Namun, salah satu alasan yang lebih umum adalah bahwa hal itu mungkin disebabkan oleh ketidakcocokan antara format bidang atau bidang yang hilang. Misalnya, jika bidang tanggal Anda dari situs Drupal 7 Anda tidak dimigrasikan dalam format yang benar atau nilainya tidak diubah ke format Drupal 9, itu akan menimbulkan kesalahan. Contoh lain adalah jika di Drupal 7 Anda telah menggunakan bidang Gambar tetapi, di Drupal 9, Anda menggunakan bidang media sebagai gantinya. Cara terbaik untuk memperbaikinya adalah dengan memperbaiki skrip migrasi untuk menyimpan data dengan benar. Jika hanya ada beberapa bidang untuk diedit, Anda juga dapat membuat pembaruan kait.
- Kesalahan 403: Seringkali, kesalahan 403 disebabkan oleh transfer izin yang salah. Periksa apakah izin diatur dengan benar. Jika Anda menggunakan modul untuk mengelola pengguna Anda, periksa apakah itu tersedia di Drupal 9. Terkadang, Anda mungkin memiliki kait atau pelanggan acara yang membatasi akses ke beberapa pengguna. Periksa kondisi ini dan pastikan itu juga diterapkan di instalasi baru Anda.
- Halaman izin tidak merespons: Situs Drupal Anda mungkin menerapkan beberapa kode khusus untuk menangani izin. Jika kode ini tidak diterapkan di situs baru Drupal 9, Anda mungkin tidak dapat melihat atau mengedit (atau keduanya) halaman izin. Terkadang kami melihat situasi di mana pengguna dimigrasikan secara massal tanpa memigrasikan peran dan profil pengguna mereka dengan benar. Sebagai praktik standar, sebelum memigrasikan izin, pengembang harus membuat izin khusus dan menetapkannya ke peran dari orang/izin.
Kinerja Situs Web yang Menyedihkan
- Modul yang tidak perlu: Modul adalah blok pembangun situs Drupal Anda, jadi Anda juga ingin memigrasikannya. Tetapi terkadang kita melihat modul Drupal 7 yang sudah usang dan tidak perlu dipindahkan ke Drupal 9 yang dapat menyebabkan berbagai masalah. Terutama karena mereka dapat membebani situs Anda. Berikut adalah beberapa alasan mengapa beberapa modul Anda tidak perlu dimigrasikan:
- Modul (atau fungsinya) telah dipindahkan ke Drupal Core. Misalnya, modul kontribusi Media dipindahkan ke inti di Drupal 8.5, yang menghilangkan kebutuhan untuk menggunakan modul kontribusi.
- Fungsionalitasnya sederhana dan dapat dimasukkan ke dalam modul khusus lainnya. Misalnya, jika modul node::postSave hanya digunakan untuk satu atau dua jenis konten untuk memilih ke mana pengguna harus pergi setelah node dibuat, mungkin saja untuk memindahkan kode ke modul kustom.
- Persyaratan untuk modul perlu dinilai ulang. Terkadang, perubahan kecil dalam kegunaan dapat sangat meningkatkan kinerja situs web. Misalnya, semua situs web tidak benar-benar membutuhkan modul Moderasi Konten kecuali jika tim pemasaran konten besar dan terdistribusi. Fitur alur kerja editorial inti Drupal (Draft, Publish) cukup baik untuk sebagian besar kebutuhan bisnis yang tidak memerlukan alur kerja yang rumit/detail.
- Terkadang, submodul dipasang bersama dengan modul tetapi jarang/tidak pernah digunakan. Submodul seperti itu harus dihapus.
- Mereplikasi arsitektur yang sama: Meskipun lebih mudah untuk mengangkat dan menggeser dan membersihkan tangan Anda dari migrasi, itu hampir tidak pernah merupakan pendekatan yang baik. Terutama jika arsitektur yang lebih lama (Drupal 6/7) berantakan dan kurang kokoh. Perubahan dalam logika/persyaratan bisnis juga membutuhkan arsitektur ulang yang lengkap. Audit situs menyeluruh akan memberi tahu Anda dengan tepat modul apa yang perlu disimpan dan apa yang dapat dihilangkan dengan aman.
Integrasi Pihak Ketiga Tidak Lagi Berfungsi
- Versi API kedaluwarsa: Jika situs web Anda terhubung ke alat pihak ketiga yang berbeda seperti Salesforce, Marketo, Mailchimp, dll, migrasi yang dijalankan dengan tidak benar dapat memengaruhi cara kerja integrasi ini. Seringkali API yang Anda panggil dalam modul integrasi Drupal adalah versi yang lebih lama. Satu-satunya perbaikan adalah integrasi harus ditulis dalam versi terbaru dari API pihak ketiga.
- Masalah modul integrasi: Anda perlu memeriksa apakah API pihak ketiga dipanggil dengan benar dalam modul integrasi. Apakah parameter dilewatkan dengan tepat? Periksa bagaimana mereka diatur dan diambil. Periksa antrean masalah untuk modul integrasi tersebut. Mungkin ada tambalan yang tersedia yang perlu diterapkan. Pengujian yang tepat perlu dilakukan untuk memastikan API telah di-porting dengan benar ke Drupal 9.
Masalah dan Perbaikan Umum Lainnya
- Instalasi modul: Selalu gunakan komposer untuk menginstal modul. Ini akan menghindari kesalahan karena dependensi yang tidak valid/tidak tersedia.
- Ketidakcocokan sumber migrasi: Apa pun sumber migrasi Anda (CSV, Database, JSON, XML), pastikan bidang sumber cocok dengan bidang tujuan. Jika Anda menggunakan CSV sebagai sumber Anda, ingatlah urutan pengimporan - prioritas penting untuk memetakan jenis konten.
- Jalur gambar: Sering kali, pengguna menambahkan gambar langsung di dalam konten CKEditor. Gambar-gambar ini tidak selalu menuju ke jalur yang ditentukan saat dimigrasikan karena lokasinya biasanya berbeda dari tempat file media lainnya berada. Migrasi yang direncanakan dengan cermat harus menangani masalah ini.
- SEO: Migrasi Drupal 7 hingga 9 yang lalai dapat memengaruhi SEO situs web Anda dalam banyak hal. Salah satu masalah paling signifikan adalah tautan rusak. Pastikan bahwa struktur URL dan navigasi yang ada dipertahankan karena perubahan apa pun dapat menyebabkan banyak tautan rusak. Audit SEO lengkap perlu dilakukan untuk memastikan tidak ada gundukan di jalan.
- Drupal 7 Style: Seringkali masalah migrasi Drupal 7 ke Drupal 9 (terutama masalah kinerja) muncul karena pengembang menggunakan gaya pengkodean yang sama dengan Drupal 7 alih-alih beradaptasi dengan perubahan yang dibawa oleh Drupal 8. Contoh, (a) cara Anda membunuh cache halaman sangat berbeda di Drupal 8. (b) Drupal 8 memiliki manajemen konfigurasi bawaan tetapi seringkali tidak diimplementasikan dengan cara yang benar atau dipelihara dengan baik di setiap lingkungan. (c) Kami juga menemukan contoh di mana proyek Drupal 8 masih menerapkan gaya kode prosedural.