Posts | CMS

23/05/13

Top 15 Drupal performance tips

Per continuare la carrellata sui CMS, di seguito alcuni accorgimenti che possono aiutare a migliorare le performances di un sito realizzato con Drupal. Benchè Drupal sia un ottimo sistema, non è conosciuto per essere particolarmente performante. Fortunatamente, con un po’ di attenzione, si possono ottenere dei buoni risultati.

  • Pianificazione: occorre scegliere accuratamente quali moduli installare o disinstallare, la scelta di installarli “tutti” non è mai quella migliore
  • Aggiornamenti: in genere mantenere aggiornato il sistema (core e moduli) può aiutare
  • Pressflow: è una particolare versione di Drupal, patchata per l’utilizzo di componenti terze-parti. Versione consigliata a chi utilizza Drupal6, diverse modifiche della quale sono state inserite in Drupal7
  • APC (Alternative PHP Cache): una cache php che può offrire ottime prestazioni se usata con Drupal
  • Memcache: un ottimo modulo per Drupal6 e Drupal7
  • Varnish: può essere installato sul web server (Apache, nginx or lighttpd) e aumentare le performanche di Drupal per quanto riguarda soprattutto gli accessi degli utenti anonimi
  • Boost: un’ottima alternativa a Varnish, quanto quest’ultimo non è installabile (hosting condiviso ad esempio)
  • CDN: può aiutare nel caso di risorse statiche come immagini, documenti, css e javascript
  • Views: è uno dei moduli più potenti e versatili di Drupal, ma occore saper utilizzare bene le varie opzioni per non rischiare di ottenere query molto lente. Alcuni moduli aggiuntivi possono aiutare (Views lite pager, Views cache)
  • Block cache: un altro modulo di Drupal che può migliorare di molto le performance, specialmente se utilizzato con Memcache
  • Ottimizzazioni del filesystem: quando le risorse statiche sono molte può essere utile organizzare il file system in path organizzati per data. A tale scopo può essere utile il modulo File(field) Paths
  • Fast 404: un altro modulo molto utile nel caso di “pagine non trovate”: soprattutto quando si ha un nuovo sito in fase di sviluppo
  • Moduli scadenti: benchè in genere molto rari, nel core di Drupal ci sono 3 moduli con performanche piuttosto scarse. In genere è bene disattivarli (Database logging, Statistics, PHP Filter)
  • Monitoraggio delle performance: utile soprattutto in fase di sviluppo. Devel è sicuramente un modulo utile, New Relic un servizio terze-parti che funziona bene con Drupal
  • Frontend: è certamente utile abilitare l’opzione di aggregazione delle risorse css e javascript offerte dai vari moduli e ridurre le dimensioni delle immagini caricate (Image cache, Image profiles)

Per approfondimenti:

24/04/13

WordPress vs Drupal: User’s Edition

Drupal o WordPress? Cosa è meglio? Come sempre dipende da quali sono i nostri obiettivi.

Vuoi creare un blog?
Non credo ci siano dubbi: la scelta di elezione è senza dubbio WordPress, in fondo è nato proprio per questo! In più è facile da installare, da configurare e utilizzare anche da parte del neofita. Il problema sorge semmai quando il sito cresce e si vogliono aggiungere altre feature di tipo diverso. In questo caso WordPress potrebbe non rivelarsi più all’altezza.

Semplicità vs complessità
E’ opinione comune che WordPress sia semplice in tutti i suoi aspetti, mentre Drupal sia decisamente più complesso e, anche se ciò è vero, è chiaro che le due piattaforme non sono paragonabili. Drupal è anche molto più potente, ha pagine di amministrazione più curate, un’interfaccia più pulita, è più sicuro, ha un sistema di permessi decisamente flessibile e risulta adatto anche all’uso in contesti entreprise.

Moduli vs plugin
Un plugin è un pezzo di codice già pronto, destinato ad uno scopo ben preciso. Si può espandere WordPress in molti modi utilizzando gli appositi plugin, ma difficilmente si potrà fare qualcosa di più di ciò che i plugin consentono di fare. I moduli di Drupal invece superano questi limiti e per la loro struttura possono essere combinati tra loro in vari modi (o modificati) in modo da poter espandere il sistema praticamente all’infinito.

Temi
WordPress fornisce molti temi di ottima qualità completamente free e immediati da utilizzare, ma tutto sommato abbastanza statici, ovvero composti di regioni fissi nelle quali piazzare widget a piacimento. All’occorrenza può risultare abbastanza difficile uscire da questi schemi. I temi di Drupal invece sono organizzati in regioni piuttosto flessibili nelle quali si possono piazzare a piacimento i vari moduli. Inoltre esistono diversi temi di base che possono essere espansi o configurati a piacimento (Bootstrap, Omega, Zen).

Conclusioni
In conclusione, ancora una volta, se le intenzioni sono quelle di andare oltre al semplice blog o poco più (per il quale WordPress è la scelta perfetta) è bene pensare fin da subito a Drupal, che rappresenta una scelta migliore e più duratura nel tempo.

23/04/13

Drupal vs Joomla vs WordPress

cms-logos

Con questo post cercherò di analizzare i punti di forza e di debolezza di alcuni dei CMS più diffusi come Drupal, Joomla/Mambo e WordPress.

Drupal
Vantaggi

  • codice molto pulito
  • buon controllo del progetto da parte di Aquia
  • ottimi sviluppatori
  • è strutturato in modo che sia quasi impossibile programmarlo male
  • è piuttosto scalabile e quindi efficiente lato server

Svantaggi

  • meno plugin già pronti che in altri CMS (relativamente)
  • interfaccia di default piuttosto vasta
  • pochi sviluppatori
  • sviluppatori più costosi

Joomla/Mambo
Vantaggi

  • buon sistema di menu
  • struttura fortemente statica delle pagine
  • offre nativamente il supporto per membri e community
  • è da molto tempo sul mercato

Svantaggi

  • performace piuttosto scadenti
  • url predefiniti orribili
  • debole sezione weblog
  • è difficile applicare temi (tutti i siti fatti con Joomla/Mambo tendono ad assomigliarsi tra loro)
  • caratteritiche SEO poco curate
  • pessimo codice, difficile da riparare
  • comunità divisa (dopo la separazione tra Joomla e Mambo nel 2006)
  • molti dei plugin migliori sono a pagamento
  • sviluppatori piuttosto mediocri

WordPress
Vantaggi

  • enorme comunità
  • le performanche possono essere ottimizzate facilmente grazie ad appositi plugin
  • è molto facile applicare dei temi personalizzati
  • ottima architettura a plugin
  • ci sono plugin di ogni tipo
  • molti sviluppatori professionali
  • ciclo di sviluppo veloce, ci sono cambiamenti ogni anno
  • leadership attiva e buona gestione del team grazie a Mark Jaquith

Svantaggi

  • codice non all’altezza di Drupal, ma migliore di Joomla e in costante miglioramento
  • molti sviluppatori improvvisati
  • molti plugin popolari con performanche piuttosto scadenti
  • diversi temi commerciali scadenti che possono anche compromettere le performanche del sito
  • debole gestione delle pagine statiche, che però può essere compensata dai plugin
  • ciclo di aggiornamenti molto rapido, occorre prestare attenzione in caso di aggiornamenti

Quindi Drupal risulta essere la piattaforma ideale per progetti ampi e strutturati, per la sua stabilità, ottimizzabilità e programmbilità. Le funzionalità base possono essere estese praticamente senza limiti grazie ai moduli. I costi di gestione possono essere superiori, ma questo di solito non è un problema per le grandi aziende. WordPress si adatta bene alle realtà piccole e medie (o anche grandi) e ad una grande varietà di progetti (weblog, corporate site, ecommerce ecc ecc) per la sua facilità d’uso e la ricca dotazione di plugin. In genere invece la principale ragione per utilizzare Joomla/Mambo risulta la semplicità o l’esistenza di progetti legacy difficili da migrare verso altre piattaforme.

Per approfondimenti:

14/06/08

CMS war… finding the right one

Il problema di trovare un buon cms open-source mi ha sempre affascinato. La gestione dei contenuti (e dei documenti) ad oggi è un problema tutt’altro che nuovo. In rete si trovano davvero centinaia, se non migliaia di alternative sviluppate sulla piattafoma LAMP, piuttosto che in Python, Java o .NET e c’è anche un sito che si è preso la briga di catalogarle e confrontarle (quasi) tutte. Ma in tutta questa varietà come si fa ad orientarsi? E perchè tante alternative? E come mai la scelta vincente è spesso il php, tantochè addirittura molti portali che trattano di Java si basano proprio su cms php?

Le alternative sono molteplici ma tra tutte sembrano proprio Mambo, Joomla e Drupal a suscitare il maggiore interesse nella comunity. Perchè sono in effetti davvero facili da usare, user-friendly e potenti al tempo stesso. Richiedono una semplice installazione, c’è una ricchissima dotazione di plugin e il costo di hosting e gestione in molti casi è davvero ridicolo.

Più complesse le soluzioni Java (Alfresco, Magnolia per citarne alcune) che richiedono risorse e tempi di startup più consistenti. Inoltre questi cms sono più orientati alla gestione documentale piuttosto che alla gestione/publicazione dei contenuti sul web. Anche Plone (basato su Python/Zope) richiede competenze maggiori ed è giustificato generalmente in contesti Enterprise.

Alcune alternative che ho trovato interessanti perchè ben si avvicinano ai cms php ma offrono alcune caratteristiche enterprise proprie di Java (supporto multi-db, clustering, versioning, chiara separazione e riuso dei contenuti rispetto alla presentation logic, livelli di autorizzazione sul singolo componente, esportazione dei contenuti in formato xml…) sono dotCMS e OpenCms. Tra l’altro dotCMS è costruito su LifeRay probabilmente il più promettente e potente portlet container sviluppato in Java, che come Riot offre una sorta di framework (c’è da stupirsi?) per lo sviluppo di portali Java. Molti interessanti, se non altro perchè utilizzano al loro interno il meglio della tecnologia Java attualmente disponibile 🙂

18/04/08

Java, LAMP, .NET…

Allo stato attuale chi vince la “battaglia del web”? E chi ha più chanches per il futuro?
A mio modo di vedere (e in questo condivido gli articoli) bisogna fare distinzione in base al “target”: un conto è il sito web per uso personale, un conto è il blog per il social networking, un conto è il portale basato su CMS, diversa ancora è l’applicazione Enterprise (CRM, ERP, reporting, document management…) che utilizza il web solo come strato di presentation. I contendenti? Java, LAMP, .NET, RoR, Grails e la lista potrebbe proseguire…

Alcuni aspetti secondo me sono essenziali:

  • LAMP e RoR hanno dalla loro parte la facilità d’uso e l’immediatezza; PHP ad esempio é una soluzione C-based. L’approccio è quello di un processo per ogni richiesta differente. Ciò porta a notevole efficienza nelle performances. La facilità nel linguaggio deriva dal fatto che sono orientati allo “scripting” (ma supportano il paradigma OO)
  • Java si basa sul concetto di Virtual Machine (thread piuttosto che processi), non nasce per il web ma aggiunge il supporto web tramite il J2EE e numerosi frameworks: JSF, Struts, Spring MVC… la scelta è vasta è richiede un lungo tempo di apprendimento. I benefici si vedono nelle applicazioni di grandi dimensioni, nella sicurezza, nella portabilità, nell’interoperabilità, nel design…
  • .NET rappresenta una scelta più “organizzata” in quanto alla base vi è un unico produttore. L’approccio della VM nasce con Java nel 1996, .NET lo fa suo in tempi più recenti e sviluppa un buon framework con numerosi componenti (in Java invece le scelte sono molteplici e possono essere anche disorientanti!) che in alcuni casi nascono evidentemente dall’esperienza Java (NHibernate, log4net…)

Alla luce di queste considerazioni non deve stupire più di tanto che quindi molti siti (portali) che promuovano prodotti Java come TheServerSide, JavaLobby o Spring siano sviluppati usando Drupal ovvero un CMS PHP! Oppure che il portale TheServerSide.NET (versione di TheServerSide per il mondo .NET) non sia scritto in .NET 🙂
Per approfondire: