case-study

Monrif Net: QNLocal, la piattaforma editoriale distribuita

Monrif Net, da sempre pioniere dello sviluppo tecnologico dell’editoria, abbina la ricerca e l’innovazione con la grande tradizione dei principi e valori alla base dei quotidiani più antichi d’Italia.
Monrif Net ci ha scelto per realizzare QNLocal, un’unica piattaforma cloud dove accogliere editori indipendenti geograficamente distribuiti. La piattaforma abbina la semplicità di un sistema editoriale WordPress a soluzioni avanzate di SEO e di advisoring.

Dall’esigenza alla soluzione

Una delle sfide affrontate è stata la gestione dell’eterogeneità e del differente scaling fra le testate, esse infatti possono variare dai centomila ai 2 milioni di visitatori.
Docker ci è parso subito l’ambiente più adatto, poiché ci garantiva il giusto livello di scaling ed isolamento richiesto, combinato ad un ottimo grado di environment parity.
Abbiamo analizzato il flusso di sviluppo, dalle prime fasi fino alla produzione, introducendo concetti di environment parity e metodi come la Continuous Integration e la Continuous Deployment.
Abbiamo poi automatizzato la creazione delle risorse IT all’ingresso di ogni nuova testata.

Scalare orizzontalmente con il file system distribuito

Una seconda sfida posta da Monrif Net, era il non dover dipendere dal file system distribuito (NFS), che per esecuzioni multiple di WordPress spesso è un must. Un classico approccio per scalare orizzontalmente WordPress è quello di rendere la sua web folder condivisa fra tutte le sue esecuzioni tramite NFS. Tuttavia NFS introduce un ulteriore grado di latenza alla nostra infrastruttura.
Da sempre si è cercato di attenuare questa mancanza di prestazioni lato file system distribuito tramite una CDN a monte, con Monrif Net invece si è cercata una soluzione on-the-edge, per eliminare questa pesante dipendenza.
Il file system distribuito per WordPress è necessario proprio per sincronizzare tra le varie istanze:

  • upload dei media;
  • modifiche al template da backend.

Per risolvere l’upload dei media e non utilizzare NFS, ci viene in aiuto WP Offload S3 con il quale possiamo direttamente somministrarli da bucket S3, o meglio da CDN con Origin il bucket stesso.
Per il template, le modifiche lato backend sono effettuate solo in fase di setup della piattaforma e mantenute sotto controllo di versione, che ci permette quindi di fornirlo staticamente anche questo attraverso CDN.

Database: come renderlo più leggero e performante

Un’esigenza espressa sin dai primi sviluppi, è stata quella legata alle performance optimization, sia a livello infrastrutturale – costruendo diversi layer di caching – sia a livello software – utilizzando strumenti di APM. Nel caso di Monrif Net, le attività necessarie a migliorare la scalabilità della piattaforma sono state due:

  • analisi delle query tramite strumento di APM;
  • rimozione di plugin inadatti.

L’APM (Application Performance Management) è in grado di evidenziare gli errori e i colli di bottiglia di qualsiasi piattaforma web: nel caso di Monrif Net, è stato usato New Relic che consente anche una facile integrazione con WordPress.

Il plugin Shield Security fornisce un’ottima serie di funzionalità legate alla security di WordPress tra cui recaptcha al login, whitelist/blacklist IP e protezioni da attacchi di tipo SQL injection/XSS.
Tuttavia, come si vede dalle immagini, questo plugin porta con sé un tempo di caricamento e un numero di queries notevoli; questo ci ha spinto a trovare un’altra soluzione.

Shield security tempo caricamento

Shield Security, tempo di caricamento

Shield security n. query

Shield Security, numero di query

Pur rinunciando al plugin, non volevamo abbassare il livello di sicurezza della piattaforma quindi, per mantenere lo standard raggiunto, abbiamo riportato le funzionalità che erano in capo a Shield Security lato web server, su Nginx. Questa operazione ha consentito di scaricare il database da centinaia di queries.

Il rilascio su AWS dei nuovi bilanciatori di layer 7 ci ha permesso di migrare da un Classic Load Balancer per testata ad un solo Application Load Balancer per tutta la piattaforma, con un risparmio di risorse fino al 90%.

Siamo orgogliosi di contribuire a QNLocal, fiduciosi nella sua ulteriore espansione e di poter affrontare insieme nuove sfide.

Uno degli aspetti più critici del progetto Localmente è rappresentato dall’eterogeneità delle esigenze dei singoli editori partecipanti ed Ideato si è rilevato il partner ideale per affrontare tempestivamente e con la necessaria flessibilità ogni problema ed ogni richiesta.

Cesare Navarotto, COO di Monrif Net

Team