La migrazione di Web Signage su Windows Azure

Edisonweb, l’azienda per cui lavoro come direttore tecnico, ha come prodotto di punta Web Signage: una soluzione SaaS per il digital signage, la gestione di kiosk interattivi, l’audio diffusione ed il marketing di prossimità. Web Signage è una complessa web application sviluppata utilizzando il framework .NET e progettata in modo da poter scalare liberamente verso l’alto. I dati e le configurazioni sono conservati su un database SQL Server. Su questo sono presenti una serie di stored procedure che permettono di nascondere alla web application la complessità delle operazioni sul data store.

Grazie al fatto che Edisonweb è un Microsoft Gold Certified Partner, ho avuto la possibilità di provare e studiare Windows Azure molto prima del suo rilascio. Il cloud computing ha dei vantaggi enormi per l’attività di un ISV, in particolare per quelli che si occupano di segmenti di mercato molto verticali, di conseguenza abbiamo seriamente valutato l’opportunità di migrare l’applicazione sul cloud. Windows Azure ci avrebbe permesso di abbassare i costi d’infrastruttura e di migliorare la nostra offerta verso i mercati esteri, con notevoli vantaggi in termini di competitività. A questo si univa il fatto che non esisteva nessuna soluzione per il digital signage su Azure: se avessimo battuto la concorrenza nella corsa avremmo aggiunto anche una bella freccia al nostro marketing. L’obiettivo era ormai chiaro: dovevamo migrare Web Signage su Windows Azure battendo sul tempo la concorrenza preservando un progetto unitario e mantenendo tutte le caratteristiche della soluzione on premises.

Compatibilità del database
Il primo passo nel processo di migrazione è stato quello della valutazione di potenziali incompatibilità del codice T-SQL utilizzato nel data store con SQL Azure. Il risultato fu che, a parte alcune porzioni di codice in cui veniva utilizzato il costrutto SELECT INTO e i nomi di colonna nella forma schema.tabella.colonna, tutto il codice delle stored procedure era perfettamente funzionante su SQL Azure. Dopo una attività di revisione del codice incriminato eravamo in grado di attivare una sessione applicativa di Web Signage con l’application on premises e il data store sul cloud.

Compatilità dell’applicazione
Web Signage è stato progettato per poter lavorare in una web farm con una serie di front-end server in bilanciamento di carico. L’applicazione è stateless, di conseguenza il fatto di passare da una batteria di server fisici ad una serie di istanze di Web Role e Worker Role non avrebe avuto un impatto particolare.
Nel processo di migrazione è stato, invece, necessario:

  • Rimuovere codice legacy (DLL COM ed interop)
  • Rivedere le porzioni di codice utilizzanti funzioni GDI+
  • Implementare i meccanismi di utilizzo del cloud storage

Web Signage è un progetto basato su Web Automation: il framework role based per la gestione dell’auditing, delle utenze e dei criteri di manipolazione e condivisione degli oggetti sviluppato da Edisonweb. Quando Web Automation fu sviluppato con il framework .NET 1.1 erano stati importate delle porzioni di codice non gestito come COM Interop. Questo codice, mantenuto solo per garantire la backward compatibility, richiede la registrazione di librerie COM e quindi attività per le quali è necessario avere un profilo di amministrazione sul server.
Piuttosto che attuare dei meccanismi di attivazione side-by-side della libreria, visto che il codice legacy è a tutti gli effetti inutilizzato, si è preferito rimuovere gli interop e sostituire le componenti potenzialmente utilizzate con versioni in codice gestito.

Alcuni componenti (per fortuna pochi) utilizzanti funzioni di manipolazione d’immagine di GDI+, se eseguiti in Windows Azure scatenano invariabilmente un’eccezione OutOfMemoryException. E’ un problema tristemente noto.
Web Signage, per sua natura effettua manipolazioni di file multimediali, ma per fortuna il codice non compatibile è limitato ad alcune funzioni specifiche che sono state sostituite con codice WPF.

Web Signage distribuisce ai display i contenuti multimediali che vengono riprodotti da Web Signage Player. In una installazione on premises questi sono contenuti in una SAN visibile dai front-end server. La migrazione a Windows Azure richiede la sostituzione di questo storage condiviso con il cloud storage.
Tutte le operazioni di manipolazione dei file sono effettuate sul local storage di ogni istanza, era quindi necessario implementare dei meccanismi tali da garantire la robustezza del servizio e l’integrità dei dati, mantenendo al tempo stesso la compatibilità con una installazione on premises. A questo scopo è stata creata una classe in grado di gestire in modo trasparente le operazioni sui contenuti, indipendentemente dalla tipologia di installazione.

Il processo di migrazione è stato completato nei tempi pianificati e l’applicazione finale è, a parte una nota accanto il numero di versione, indistinguibile da quella erogata dall’infrastruttura in IDC. Web Signage è stata la prima soluzione professionale per il digital signage in grado di essere eseguita su Windows Azure e tutt’ora è l’unica soluzione disponibile. I vantaggi della presenza nel cloud si sono evidenziati immediatamente dopo il rilascio, con una maggiore visibilità e competitività sui mercati esteri.

Il processo di migrazione, partendo da applicazioni sviluppate sul framework .NET e con del codice di buona qualità, è relativamente veloce e permette l’accesso a benefici significativi. Il mio consiglio è sicuramente quello di valutare seriamente questa opportunità. Se volete intraprendere questa via e desiderate pormi qualche domanda, non esitate a contattarmi.

Se siete curiosi riguardo Web Signage ed in particolare sulla versione per Windows Azure, troverete tutte le informazioni sul sito websignage.eu/it.

Questa voce è stata pubblicata in Cloud computing e contrassegnata con , , , , , , , , . Contrassegna il permalink.

2 risposte a La migrazione di Web Signage su Windows Azure

  1. Beppe Andrianò ha detto:

    Grazie mille Vittorio per questo interessantissimo excursus tecnico sullo sviluppo di WebSignage.. ho potuto cogliere pochi punti ma la sensazione generale è di una assoluta competenza supportata da invincibile passione.

    La stesssa passione che ho da subito riconosciuto come caratteristica di Edisonweb e che una volta di più mi fa ricordare che il Team (*) è fondamentale per il successo.

    Complimenti ancora

    Beppe

    (*)
    Pochi sanno che team è un acronimo ed indica “Together Everyone Achieves Miracles” ed Edisonweb lo dimostra 😉

    "Mi piace"

  2. vpolizzi ha detto:

    Ciao Beppe,
    grazie a te per il commento.
    Hai proprio fatto centro: è la passione che ci muove, che ci fa essere visionari e che ci spinge alla ricerca per la realizzazione delle visioni…
    Se poi i visionari si mettono insieme …

    Grazie ancora.

    "Mi piace"

Lascia un commento

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.