Blog | SparkFabrik

Upgrade a Drupal 9: perché e come farlo

Scritto da SparkFabrik Team | Sep 17, 2020 7:30:00 AM

Il 9 giugno 2020 ha sancito la nascita di Drupal 9, naturale evoluzione tecnologica di Drupal.
Un avvenimento annunciato già da molto tempo, che solleva diverse domande in chi fa attualmente uso di una versione precedente del famoso CMS. Conviene fare l’aggiornamento? E come farlo nel modo meno impattante possibile da un punto di vista di tempi e costi?

In questo articolo affrontiamo il tema, introducendo brevemente Drupal 9 e analizzando poi le vie migliori per passare a questa ultima versione. Prima di iniziare, se ancora non conosci tutti i vantaggi e le funzionalità di Drupal ti consigliamo di leggere "Perché scegliere Drupal per siti aziendali complessi".

 

 

Le novità introdotte da Drupal 9

Durante il DrupalCon tenutasi ad Amsterdam a ottobre 2019, Dries Buytaert ha esposto i pilastri su cui si fonda quest’ultima versione della piattaforma, che può dare un importante contributo alla crescita digitale delle aziende. In sintesi, ecco i quattro obiettivi strategici che hanno guidato la creazione di Drupal 9:

  • Ridurre i costi e l’effort: l’obiettivo è quello di continuare ad investire sugli strumenti che permettano una gestione e manutenzione del sito a costi più ridotti e con un effort più basso, come ad esempio gli aggiornamenti automatici del core o dei moduli contrib oppure un configuration management più efficiente
  • Semplificare l’esperienza dei principianti: chi usa Drupal per la prima volta spesso lo trova complesso, ma col tempo se ne innamora. Drupal 9 mira a ridurre le barriere all’ingresso per i nuovi utenti, in modo da facilitare l’apprendimento.
  • Open Web: il focus di Drupal 9 è su accessibilità, inclusività, sicurezza, privacy e interoperabilità.
  • Essere il miglior data engine: rendendo Drupal un content repository sempre più avanzato con un API flessibile e che sia pronto ad adattarsi ad un futuro con più contenuti, più integrazioni, più dispositivi e più canali.

Ma come si concretizzano questi obiettivi a livello di feature di prodotto? Ecco alcune delle novità che hanno caratterizzato gli ultimi aggiornamenti di Drupal.

  • Layout Builder: introdotto con Drupal 8, permette di creare layout di pagine customizzati, in cui inserire poi i componenti necessari. Storicamente, in Drupal 7, per farlo occorreva utilizzare moduli contrib come Panels o Display Suite.
  • I Blocks, contenitori generici configurabili e posizionabili, sono ora fieldable e riutilizzabili (cosa che fino a Drupal 7 richiedeva un modulo contrib come Bean).
  • Editor WYSIWYG disponibile nativamente nel core, senza necessità di installare moduli contrib o librerie di terze parti.
  • Views è ora nel core, e la maggior parte delle custom lists nel core ora sono completamente personalizzabili
  • La Gestione Media non è più un add-on, ma una parte integrante della piattaforma
  • JSON-API nel core per utilizzare Drupal in approcci API-First oppure Headless
  • I workflow editoriali custom sono ora disponibili nel core, senza più necessità di usare moduli contrib come Workbench Moderation or Workflow.

Drupal 9: è davvero necessario fare l’aggiornamento?

Per rispondere a questa domanda dobbiamo analizzare due diverse situazioni: quella di chi usa attualmente Drupal 7 e quella di chi invece ha già effettuato il passaggio a Drupal 8.

Partendo da Drupal 8

Questo caso è il più semplice da affrontare: per chi ha una piattaforma Drupal 8, infatti, l’aggiornamento sarà (quasi) indolore.

Drupal 9.0 comporta la rimozione del codice deprecato e l'aggiornamento delle dipendenze di terze parti (Symfony 3.0 → 4.5), ma non introduce nuove funzionalità. Si tratta di fatto della stessa codebase (stabile e ampiamente testata) che caratterizza Drupal 8, dunque l'aggiornamento avrà lo stesso impatto di un aggiornamento da una minor release all'altra, a patto che il core sia aggiornato all'ultima versione disponibile.

Possiamo quindi affermare che Drupal 9 sia semplicemente una nuova release di Drupal 8. D'altronde, da Drupal 8 in avanti tutti gli aggiornamenti saranno frequenti e di minor impatto, rappresentando infatti la naturale continuazione di un processo di sviluppo iterativo e seguendo un modello di "rolling release" dove nuove funzionalità potranno essere introdotte anche tra una minor release e l’altra nello stesso ramo di sviluppo.

Questo nuovo paradigma si riflette anche nella limitata durata del supporto previsto per Drupal 8, che infatti terminerà già a novembre 2021, dal momento che l’upgrade alla versione 9 è molto più semplice rispetto a quello dalla 7 alla 8.

Partendo da Drupal 7

Chi usa attualmente Drupal 7 deve considerare che l’ultima release supportata di questa versione, dopo ben 10 anni di supporto, sta andando in “EOL” (End of life). Di conseguenza non si avrà più a disposizione supporto ufficiale di sicurezza, con tutti i relativi rischi di security che questo comporta. Va da sé che carenze sotto questo punto di vista possono causare gravi effetti sulla continuità di business, nonché rischi di data breach e multe anche molto salate.

La fine del supporto coincide anche con lo stop alla creazione di nuove feature, con la cessazione di supporto dei moduli contrib, di miglioramenti e di bug fix: in altre parole, per avere un sito sicuro, performante e moderno l’aggiornamento a Drupal 9 è un must. E senza considerare ovviamente tutte le nuove funzioni relative all'ultima release – precedentemente elencate – che rappresentano il vero motivo per effettuare il “salto”.

Inizialmente la cessazione del supporto per Drupal 7 era previsto per Novembre 2021, ma a causa dell'emergenza Covid la deadline è stata estesa a Novembre 2022. Ci sono quindi ancora diversi mesi per organizzare il passaggio alla versione più aggiornata e sicura di Drupal.

Il passaggio dalla release 7 alla release 8 oppure 9 significa, nella maggior parte dei casi, affrontare un’intera riscrittura del sito o dell’applicazione web; per questo è importante prendersi tutto il tempo necessario per progettare con attenzione l'upgrade.

Di seguito vediamo come farlo.

Come passare a Drupal 9 partendo da Drupal 8

Come abbiamo già avuto modo di anticipare, il principale vantaggio di passare da Drupal 8 a Drupal 9 consiste nel non dover affrontare un grande progetto di migrazione, quanto piuttosto un upgrade incrementale. Occorre quindi prestare attenzione ad alcuni aspetti e seguire delle semplici istruzioni per poi procedere all’aggiornamento.

1. Assicurati che il tuo ambiente sia compatibile con Drupal 9

Parlando di infrastruttura server, il primo passo è essere sicuri che il proprio hosting, qualora non fosse aggiornato, abbia i requisiti minimi dei servizi richiesti per Drupal 9.

Più nel dettaglio, Drupal 9 richiede PHP 7.3 o superiore (anche il 7.4 è supportato ma non richiesto), MySQL 5.7.8 +, MariaDB 10.3.7 +, SQLite 3.26 +, PostgresSQL 10 + con estensione pg_trgm attiva.

Per chi usa Drush, è bene sapere che solo Drush 10 è compatibile con Drupal 9.

2. Aggiorna il core Drupal all’ultima versione

Partendo da Drupal 8, il passaggio a Drupal 9 è indolore se hai aggiornato sempre all’ultima minor release (8.9.6, alla data di scrittura). Assicurati inoltre di rimuovere le dipendenze che non stai utilizzando.

3. Verifica che i moduli contrib siano aggiornati

Il modulo Upgrade Status e lo strumento Drupal Check permettono di verificare se i moduli contrib che stai utilizzando nel tuo sito sono stati già aggiornati a Drupal 9. Questi tool non sono solo utili per analizzare lo status quo ma permettono anche di andare a verificare che il codice scritto per gli eventuali moduli custom sia compatibile con Drupal 9.

Risolvendo i problemi rilevati dai due tool sarai certo di avere codice compatibile sia con Drupal 8 sia con Drupal 9: puoi scegliere di farlo manualmente o di usare degli strumenti utili come Drupal-rector o anche l’interfaccia utente Upgrade Rector.

4. Esegui l’aggiornamento

Una volta aggiornato Drupal 8 all’ultima minor release, verificato e aggiornati moduli contrib ed eventuale codice custom, allora è possibile procedere all’upgrade senza problemi.

Come passare a Drupal 9 partendo dal 7

Migrare da Drupal 7 a Drupal 9 richiede una completa riscrittura, come lo è passare da Drupal 7 a Drupal 8.

Da Drupal 7 a Drupal 9… passando da Drupal 8?

Molti si chiedono quindi se sia meglio passare dalla release 7 direttamente alla 9, oppure se convenga passare prima dalla 8. Posto che non c’è una risposta universalmente valida, un ragionamento da fare è quello che riguarda la disponibilità di moduli e temi.

Potresti infatti scoprire che i temi e i moduli di cui necessiti sono disponibili nella versione 8 ma non ancora nella 9: in questo caso conviene fare il passaggio all’ultima minor release di Drupal 8, che rappresenta la parte più impegnativa della migrazione, nell’attesa che moduli contrib, i temi e la documentazione aggiornata siano disponibili anche nella versione 9. A questo punto non resterà altro che seguire le istruzioni riportate poco sopra per passare dall’8 al 9.

Dal momento che Drupal 9 è di fatto un aggiornamento di Drupal 8, tra qualche mese l’ecosistema sarà pienamente compatibile e dunque sarà raccomandabile passare direttamente dalla versione 7 alla 9: gli sforzi sarebbero gli stessi, anzi si eviterebbe un passaggio inutile. Nel frattempo Acquia fornisce un tool interessante per vedere lo stato di avanzamento dei moduli compatibili con Drupal 9.

Tool utili per semplificare la migrazione

Ecco alcuni strumenti da conoscere e utilizzare per affrontare in modo efficace la migrazione:

  • Upgrade Status (versione Drupal 7): vi permetterà di capire in anticipo se i moduli contrib che state utilizzando hanno già delle versioni per Drupal 8/9 e in assenza se ci sono moduli di rimpiazzo
  • Drupal Module Upgrader: un tool a linea di comando, attraverso un’analisi automatica segnalerà le porzioni di codice che dovranno essere modificate così da renderlo compatibile con Drupal 8/9.
  • Core Migrate Suite: un’API pensata appositamente per la migrazione dei contenuti
  • Migration Planner: tool di grande aiuto per la pianificazione di tutti gli aspetti della migrazione
  • Drush pre-deploy: tool che abbiamo sviluppato in SparkFabrik utile in fase di rilascio degli upgrades. Immaginando che si è passati a Drush 10 e si sta già usando il nuovo comando drush deploy per rilasciare gli aggiornamenti sui vari ambienti, questo tool permette di scrivere degli hooks custom da eseguire prima del classico update:db (per esempio, fix di integrity issues, moduli da abilitare, etc)

Due strade per organizzare la migrazione

Indipendentemente dall’aiuto che possono fornire i tool, non va dimenticato che di fatto occorre fare una completa riscrittura e i tools menzionati possono essere un valido aiuto per affrontare le sfide di una migrazione così complessa.

Gli approcci previsti possono essere due:

  • Migrare automaticamente con l’ausilio del tool Migrate incluso nel core e avvalendosi dei moduli sopra menzionati, utilizzando i “migration path” già previsti per migrazioni da Drupal 6 e 7. Il modulo fornirà durante il processo di migrazione utili informazioni su come risolvere problematiche come ad esempio codice deprecato o incompatibile o problemi di migrazione.
    Questo approccio è consigliato solo in casi di siti molto semplici e con strutture dati semplificate, che utilizzano pochi moduli contrib e poco codice custom.
  • Migrare manualmente su una nuova installazione di Drupal 8 avvalendosi parzialmente delle migrazioni automatiche e procedere con migrazioni manuali dei contenuti, delle configurazioni, del codice custom e di tutto il resto. Si tratta sempre di una buona occasione per rivedere l’architettura del sito e ottimizzarla avvalendosi anche delle nuove possibilità offerte da Drupal 8/9.
    Questo approccio è sempre quello consigliato per siti complessi, che hanno molte personalizzazioni, che fanno uso di molto codice custom e moduli contrib.

Conclusione: perché Drupal?

Drupal è sicuramente la piattaforma più indicata per ottenere grande flessibilità nell’organizzazione e gestione dei contenuti, nonché semplicità nell’integrazione con l’ecosistema presente in azienda. Permette di gestire picchi di richieste elevatissimi, con un eccellente livello di sicurezza.

Garantisce un supporto a lungo termine costante, riducendo notevolmente il problema dell’obsolescenza: un sito in Drupal può vivere diversi anni sempre al massimo delle funzionalità e della sicurezza, a patto di ricevere la corretta manutenzione.

La sua natura open source rende la piattaforma estremamente customizzabile: non è lo strumento a dettare il modo di lavorare e i processi da seguire, ma viceversa è Drupal ad adattarsi perfettamente a ogni esigenza. Questo lo rende, in definitiva, la soluzione ideale per molte realtà di piccole, medie e grandi dimensioni.

Un ultimo consiglio per chi decide di avviare un progetto Drupal o di affrontare una grande migrazione è sicuramente quello di prendersi del tempo per scegliere il giusto partner. Se da un lato la totale libertà di personalizzazione rappresenta un vantaggio, infatti, dall’altro può anche rivelarsi un’arma a doppio taglio se in mani poco esperte. Affidandosi a chi conosce bene lo strumento si avrà la certezza di vedere applicate le best practice che permetteranno di ottenere un sito sicuro, performante e flessibile che abbia la possibilità di essere evoluto nel tempo.