Framework e CMS: le principali differenze

Pregi e difetti dei due principali ecosistemi utilizzati per sviluppare siti ed applicazioni web

Avere un proprio spazio nel World Wide Web è ormai un requisito fondamentale sia per lo sviluppo di progetti semplici che per la maggior parte delle attività imprenditoriali. E quando questa esigenza si palesa esistono due principali approcci allo sviluppo di un sito web: utilizzare un CMS oppure scrivere codice tramite framework. Come per ogni tecnologia, ciascuno dei due strumenti comporta vantaggi e svantaggi. Questo articolo vuole darti una linea guida per capire i punti di forza e di debolezza di entrambi e permetterti di fare la scelta che più risponde alle tue esigenze.

I CMS: vantaggi e svantaggi

Un CMS, o Content Management System, è un software installato su di un server web e che raggruppa e coordina automaticamente diversi altri software, esponendo un’interfaccia di gestione semplice e veloce. I CMS più famosi e utilizzati sono Joomla, Drupal, Magento e soprattutto il popolarissimo WordPress, ma ne esistono tanti altri meno famosi.
Per completezza, riporto anche l’esistenza degli headless CMS, ai quali nel corso di quest’articolo non faremo riferimento per ragioni di sintesi sui concetti più rilevanti. Infatti, come vedremo, a differenza dei CMS tradizionali, gli headless CMS non offrono al creatore del sito web un sistema di template tra i quali scegliere: il frontend, ossia il contenuto visibile a chi utilizza un sito web, deve essere creato da uno sviluppatore.

I loghi di Wordpress, Magento, Drupal e Joomla

WordPress è il leader indiscusso nel mercato dei CMS per i siti web, a volte affiancato da Magento di IBM, quando necessita una struttura per un ecommerce. Altre alternative a WordPress sono Joomla e Drupal.

Per loro intrinseca natura, i CMS portano con sé alcuni evidenti vantaggi.

In primo luogo la facilità di utilizzo: i CMS sono stati progettati per permettere anche ad utenti non esperti in tecnologie web di poter realizzare e configurare velocemente un sito web, anche di complessità media. Ne è un esempio la famosa installazione in 5 minuti di WordPress.
Allo stesso tempo consentono l’inserimento di contenuti tramite un’interfaccia grafica che non richiede particolari conoscenze di programmazione.
Essendo molto utilizzati, dispongono di un elevato numero di temi e plugin che aggiungono funzionalità senza necessitare configurazioni complesse. Se è necessaria una funzionalità, molto probabilmente qualcuno l’ha già sviluppata e messa a disposizione.
Da questi vantaggi ne discende un altro: il basso costo. Un sistema che non richiede un utente esperto di programmazione e nel quale le funzionalità più comuni sono già state sviluppate richiede poco tempo per essere configurato adeguatamente. E siccome il tempo è denaro, come si suol dire, meno tempo richiesto equivale ad una spesa inferiore.

Al contempo, i vantaggi di un CMS generano i suoi stessi svantaggi.

Per immediatezza espositiva, prendiamo ad esempio WordPress: il funzionamento di questo strumento sottostà a delle convenzioni predefinite. Se da un lato rendono lo strumento facile da utilizzare, perché astraggono gli strumenti di base di un CMS, dall’altro implicano il loro rispetto da parte di plugin e temi.

Proprio per questo si ha difficoltà ad apportare modifiche. Nel caso in cui il sito web da sviluppare richieda una particolare funzionalità e non si trovi un plugin in grado di soddisfarla, oppure ne esista già uno ma che non riesce a coprire esattamente l’esigenza di sviluppo, si può agire in due modi: affidarsi a un esperto di sviluppo web che provvederà ad realizzare un nuovo plugin, o contattare il team che si occupa della manutenzione di quello già presente e chiederne una versione modificata a pagamento. In entrambi i casi, il risultato è sempre lo stesso: si dovrà sostenere un costo iniziale e prevedere una serie di costi nel tempo per mantenere aggiornato il proprio plugin (o la sua versione ad hoc).

Questo aspetto ci introduce al secondo problema: gli aggiornamenti di un CMS. Se da un lato gli aggiornamenti sono necessari per eliminare le falle di sicurezza, dall’altro possono sollevare problemi di funzionamento se i temi e i plugin risultano non più compatibili con le versioni successive del CMS. Gli stessi plugin, poiché sviluppati da programmatori differenti, potrebbero interferire con il reciproco funzionamento.

Anche sulle prestazioni del sito web ci sono da fare due considerazioni. In primo luogo, installare tanti plugin in molti casi comporta un maggiore carico di lavoro per il client (talvolta anche per il server), con la conseguente riduzione delle prestazioni del sito. Questo aspetto varia molto da plugin a plugin e dipende dalle funzionalità che può aggiungere. Per esempio, se questo aggiunge specifici pezzi di codice (es. dichiarazione di stile, librerie, etc.) anche nelle pagine non li usano, si avranno dei rallentamenti inutili nella fruizione delle suddette pagine.

La seconda considerazione riguarda la struttura stessa dei CMS: per come sono stati progettati, richiedono sempre l’installazione di servizi e programmi che consumano risorse sul server web. Ad esempio, un sito WordPress avrà sempre bisogno del linguaggio di programmazione PHP e di un database. Questo si traduce generalmente in un costo maggiore per l’hosting del sito stesso. Costo che si può evitare nel caso in cui il sito web sia abbastanza semplice da prevedere solo contenuti statici.

A tutti questi aspetti se ne aggiunge un altro: la sicurezza. I CMS come WordPress e Joomla sono open source e molto utilizzati, che è allo stesso tempo un pregio e un difetto. Il loro sviluppo è costantemente attivo e il rilascio di patch di sicurezza avviene periodicamente, ma la loro popolarità li rende un bersaglio molto interessante per i cracker (non gli hacker). Anche i componenti aggiuntivi possono presentare delle vulnerabilità interne che, a loro volta, possono essere sfruttate per infettare il sito web o fargli eseguire azioni nocive. Per questo motivo gli aggiornamenti del sistema sono fondamentali. Inoltre WordPress, con le sue configurazioni standard, espone gli utenti inesperti alla possibilità di fornire involontariamente l’accesso del proprio sito web a malintenzionati. Un esempio banale: in un’installazione WordPress tradizionale, il pannello di accesso si trova sempre allo stesso indirizzo e l’utente iniziale ha sempre admin come username. Se tale nome non viene cambiato in un username più complicato o semplicemente diverso, si sta facilitando un eventuale cracker ad accedere al proprio sito web, in quanto già conosce un’informazione preziosissima per ottenere l’accesso. Esistono alcuni accorgimenti da mettere in pratica per evitare questi errori comuni ed è facile trovare online articoli specifici al riguardo.

Da tutti questi problemi ci accorgiamo che i CMS non consentono lo sviluppo di tool e applicazioni web complesse. Per queste tipologie di software, si rende necessario l’utilizzo di un framework.

I framework: punti di forza e di debolezza

In informatica, un framework è uno strato di codice basato su di un linguaggio di programmazione (ed eventualmente altri framework) il cui compito è facilitare il programmatore nello sviluppo del software, fornendogli strumenti e best practice da seguire. Facendo un paragone con l’edilizia: il terreno e i materiali da costruzione sono il linguaggio di programmazione, le fondamenta dell’edificio e le tecniche di costruzione rappresentano il framework, mentre la costruzione dei piani superiori consiste nel lavoro del programmatore.

Concentriamoci sui framework per le tecnologie web. Per quanto riguarda il frontend, i framework principali sono tre: Vue, React e Angular. Per il backend, il codice che viene eseguito unicamente sul server, attualmente il linguaggio di scripting più utilizzato è PHP e in Dreamonkey utilizziamo il suo framework più famoso: Laravel.

Da sinistra a destra, i loghi di Vue.js, React, Angular e Laravel

Per essere precisi, React non è propriamente un framework, ma una libreria di codice; tuttavia, essendo attualmente il leader di settore, è doveroso includerlo in questa lista. Tutti questi strumenti sono accomunati dall'essere progetti open source.

I primi due vantaggi derivati dall’utilizzo di un framework sono la flessibilità e la performance. I framework permettono di realizzare un sito web ottimizzato in termini di performance (com’è nostra abitudine) e completamente adattabile alle esigenze del design e della comunicazione. Questo aspetto diventa particolarmente rilevante nel momento in cui si manifestano delle esigenze di sviluppo particolari per un sito o un’applicazione web, come può essere l’integrazione con dati e software di terze parti. Inoltre, tramite appositi strumenti basati su questi framework, è possibile creare un sito detto statico, ossia un sito in cui l’unico compito del server è quello di restituire delle pagine pre-costruite. Un sito statico generalmente ha alcuni vantaggi: una portabilità maggiore, una performance migliore e un consumo minore di risorse (di calcolo e di memoria).

La scalabilità è un altro fattore importante. Un sito o una web app costruiti tramite l’utilizzo di molteplici framework garantiscono la possibilità di aggiornare separatamente il software che si occupa del backend e quello che gestisce il frontend. In questo scenario, l’aggiunta di funzionalità risulta più semplice ed il problema della compatibilità viene ridotto notevolmente, evitando al contempo di compromettere la performance. Questi strumenti sono stati progettati per adattarsi ed essere applicati in progetti sia su piccola che su larga scala.

Un ulteriore fattore da non sottovalutare, è ancora una volta la questione sicurezza. Essendo sistemi a sé stanti e molto utilizzati, i problemi relativi alla sicurezza vengono sempre tenuti sotto controllo e le eventuali falle riparate immediatamente. In più forniscono agli sviluppatori le pratiche migliori da seguire per evitare di creare potenziali brecce nella sicurezza dell’applicazione o sito web.

Tutti questi vantaggi si ottengono, tuttavia, a scapito di due fattori principali: la facilità di utilizzo e il tempo necessario allo sviluppo.

Per sua natura, un framework richiede lo studio e la comprensione dei concetti sui quali si fonda e, per quanto a volte metta a disposizione delle interfacce grafiche per configurare alcuni aspetti comuni, il suo utilizzo si basa sulla scrittura di codice. Di conseguenza sono necessarie competenze tecniche specifiche per poter utilizzare al meglio uno strumento di questo tipo.
Pur facilitando e velocizzando la scrittura di codice rispetto all’utilizzo delle tecnologie base di un linguaggio di programmazione, e nonostante la possibilità di aggiungere componenti e codice di terze parti, l’utilizzo di un framework per la stesura di un sito web richiede più tempo rispetto all’impiego di un CMS con l’aggiunta di plugin. Infatti il lavoro di sviluppo e verifica del corretto funzionamento del codice è completamente a carico del team che se ne occupa.
Da questi due svantaggi, se ne deduce immediatamente un altro: competenze tecniche e più tempo di sviluppo si traducono in un maggiore costo da dover sostenere.

CMS o framework: cosa scegliere

Come abbiamo visto, i due strumenti sono complementari tra loro. A questo punto, l’unica cosa da fare è stabilire quando conviene utilizzare uno oppure l’altro.

Mojo che si interpella su quale tecnologia scegliere

CMS o Framework? Dobbiamo sempre sapere dove vogliamo andare, prima di scegliere a quale tecnologia affidarci. Nessuno escluso, anche Mojo, la nostra mascotte.

I CMS esprimono la loro forza in particolar modo quando devono gestire un sito:

  • di piccole o medie dimensioni con funzionalità ben conosciute e ampiamente supportate, come un piccolo ecommerce o un blog;
  • che non ha abbastanza pagine da giustificare una soluzione su larga scala, ma a sufficienza per affidarne la gestione a uno strumento automatico;
  • che richiede aggiornamenti frequenti da parte di personale senza conoscenze tecniche;
  • la cui performance è relativamente importante se messa a confronto con il budget a disposizione.

Al contrario dei CMS, i framework:

  • esprimono la loro potenzialità su progetti complessi o che devono essere estremamente personalizzabili in base alle esigenze di progetto, o su siti con poche pagine e statici.
  • permettono il controllo capillare sui vari aspetti del sito; sono fondamentali per lo sviluppo di applicazioni web e quando la performance è un cardine centrale del progetto.
  • conviene utilizzarli al posto di un CMS se il SEO è un vincolo di progetto. In caso di scarsa performance, l’algoritmo per l’indicizzazione di Google assegnerà un voto più basso, e quindi una rilevanza minore del sito web rispetto ad altri risultati con una performance migliore.

Ora che hai una panoramica sufficientemente chiara degli strumenti utilizzabili e dei relativi vantaggi e svantaggi, non ti resta che valutare attentamente i requisiti del vostro progetto di sito web e scegliere consapevolmente un framework o un CMS.

L’eccezione è il caso in cui il progetto sia una web app, altro servizio di cui ci occupiamo. In tal caso, è estremamente probabile che un CMS non sia sufficiente a soddisfare le esigenze del committente, che si tratti di un’azienda, un’associazione o un privato.

Grazie per l’attenzione e al prossimo articolo.