Cloudify Ninjacademy

Cloudify Ninjacademy

Ninja Academy si sposta nella nuvola di Microsoft

ninja-academy

Il Cliente

Ninja Academy è tra le realtà formative più dinamiche e innovative nel campo della formazione online. Propone corsi di alta specializzazione sulle teorie e tecniche più avanzate del marketing utilizzando modalità formative altamente innovative ed esperienziali. Ninja Academy ha la missione di aiutare aziende e professionisti ad affrontare l’evoluzione sociale ed economica trasferendo nuovi modelli, strumenti e tecniche di marketing e comunicazione. L’azienda, che gestisce anche il portale NinjaMarketing, di cui già parlammo tempo fa, ha deciso di spostare la loro soluzione nella piattaforma di Cloud Computing Pubblico di Windows Azure, aderendo al programma BizSpark di Microsoft Italia.

BizSpark è un programma internazionale di Microsoft per le Start-Up. Il programma fornisce gratuitamente software, supporto, visibilità, tools, per aiutare le StartUp nell’avere successo. In BizSpark ci sono attualmente più di 50,000 StartUp in più di 100 paesi, noi stessi facciamo da tempo parte della community di BizSpark. Tra le gratuità offerte da Microsoft c’è un consumo free mensile per tre anni sulla piattaforma di Windows Azure.

Il Problema

La piattaforma di e-commerce ed e-learning di Ninja Academy era ospitato in un unico server dedicato, di proprietà della software house che ha sviluppato il portale, grazie all’ingresso del gruppo dei Ninja nel programma BizSpark e grazie ad una volontà di ottimizzazione dei costi infrastrutturali, il gruppo dei Ninja ci ha richiesto di pianificare, progettare e migrare il portale sulla Cloud di Microsoft.

La migrazione richiedeva particolari attenzioni e criticità in quanto occorreva spostarsi da una realizzazione monolitica non distribuita ad una infrastruttura complessa e distribuita e ricca di servizi interconnessi quale Windows Azure. Pertanto abbiamo dapprima guidato gli sviluppatori ad approntare un minimo di modifiche al codice utili a consentirci la distribuzione dei servizi, eliminare le dipendenze e le criticità che impedissero la scalabilità, poi abbiamo esplorato e testato una prima migrazione in PaaS, successivamente su IaaS.

La soluzione

La soluzione implementata è una infrastruttura multi-tier (vedi figura) di VMs con server Web bilanciati in autoscalabilità, NFS e DB Server, chiusi in una Virtual Network con tre subnets.
Il sistema operativo utilizzato per le VMs è Ubuntu Server 12.10 64bit, preso dalle immagini ufficiali del marketplace di Azure, abbiamo scartato la versione LTS 12.04 (presente nel marketplace) in quanto ha qualche problema con i pacchetti nfs-common.

Le modifiche al codice che abbiamo suggerito e guidato sono state:

  • cambio del sistema di visualizzazione delle slide uploadate con soluzioni alternative che non prevedevano librerie di conversione lato server, ma con semplice javascript di visualizzazione lato client.
  • sostituzione dell’ MTA locale con SMTP server esterno gestito da terze parti (tipo gmail per intenderci)
  • sostituzione delle session php da file con session su db mysql, per evitare spiacevoli perdite di sessioni durante le normali attività dell’utente online sulla piattaforma
  • aggiunte di logiche di lockfile sui cronjob per evitare sovrapposizione di esecuzione dalle diverse istanze web

Inizialmente abbiamo valutato e testato il deploy del portale in WebSites di Azure, sfruttando lo spazio dati sincronizzato tra i webserver come spazio per i files dei corsi e tutto ciò che rappresenta i dati comuni, usando in questo caso il partner ClearDB per il database MySQL, ma a causa di alcune caratteristiche native del portale, quali, lo sviluppo nativo del portale in tecnologia LAMP, mentre la PaaS (websites) di Azure lavoracon il webserver IIS, le attuali dimensioni del database, che comporta un aggravio economico su ClearDB, la attuale dimensione della cartella dati e le crescite nel tempo di questi, le doverose modifiche al codice in vari punti e migrazioni dei dati vecchi nel blob Storage di Azure, le logiche dei cronjob lanciabili solo da sistema e per ultimo i tempi stretti, ci hanno fatto deviare verso una soluzione puramente IaaS su Azure.

Abbiamo cosi creato una Virtual Network con tre Subnets, dedicate ai WebServers, al DBServer ed all’ NFSServer. Abbiamo agito sulle ACL (recente strumento su Azure VMs per isolamento e security) per chiudere gli endpoints dall’esterno.
Abbiamo poi definito un LoadBalancingSet per i WebServers, questi si aggiornano automaticamente dal repository GIT, mediante chiavi di lettura private, hooks ed altro, cosi come avrebbero fatto con la comoda soluzione WebSites.

Come Roadmap futura abbiamo proposto una migrazione di tutti i files di dati nel blob Storage di azure per eliminare un possibile Point of Failure e ridurre l’uso delle VMs a vantaggio di un sistema di cloud storage molto più affidabile e scalabile in termini di spazio dati e contemporaneità di connessioni, inoltre renderebbe la soluzione più performante in quanto allegerirebbe i WebServer che non dovranno più erogare i files dei corsi via http.

Prima della messa online, abbiamo eseguito dei test di carico per misurare le performance mediante sessioni registrate su JMeter e moltiplicate per simulare n connessioni simultanee. I servizi tipo Apache sono stati ottimizzati mediante tuning e mediante moduli quali mod-pagespeed e mod mem_cache.

ninjacademy

I vantaggi

La scelta proposta ed implementata per il cliente garantisce economicità, elasticità, sicurezza, affidabilità, performance e scalabilità, gode dei classici vantaggi del cloud computing, gode della robustezza di un Cloud Provider costruito da Microsoft.
L’autodeploy del software da un repository con versioning come GIT, inoltre consente maggiore semplicità e velocità per le nuove implementazioni del SW.

E gode quindi anche dei vantaggi del programma BizSpark e del supporto diretto di Microsoft.

Testimonianza Cliente

Il cliente pubblica sul portale NinjaMarketing il seguente post come testimonianza della riuscita del progetto:

http://www.ninjamarketing.it/2014/02/11/ninja-academy-sulla-nuvola-di-microsoft-intervista-a-fabio-cecaro/

Be Sociable, Share!

Related Articles

1 Comment

  1. Shiori 20 dicembre 2015 at 22:35

    This makes me, personally, both ralley happy and ralley sad at the same time. Heartfelt thanks to Smarx for our conversations and guidance on moving to Windows Azure. We are ralley happy on the platform! But, I’m sad that Smarx has left Microsoft. We, of course, wish him well in his future endeavors, but will miss his passion, intelligence, and excellence that he brought to the Azure team.

Leave a reply

Your email address will not be published. Required fields are marked *