Umbraco su Windows Azure. Come e Perchè (1 Parte)

Questo articolo è il secondo intervento relativo ai “Cloud Scenari”, una iniziativa volta a definire dei casi di studio utili e concreti che evidenzino l’utilizzo di Windows Azure in contesti reali per le applicazioni e le necessità comuni delle PMI. Nel primo “scenario” si è mostrato un efficace utilizzo di Windows Azure Storage (servizi Blob) per implementare una soluzione affidabile di Web Storage (servizio anch’esso ospitato su Windows Azure) con i benefici del Cloud Computing.

In questo secondo scenario Roberto Freato parlerà dell’importanza dei CMS OpenSource e il loro effettivo utilizzo negli ambienti commerciali che ne hanno decretato l’adozione di massa da parte di realtà di diverse dimensioni.

Partiremo con una panoramica dei CMS OpenSource sviluppati in ambiente .NET, evidenziando come essi siano nativamente compatibili con Windows Azure a meno di alcune customizzazioni oltre al perché sia una scelta ragionevole “portare” il proprio CMS sul Cloud Computing, di qualsiasi vendor esso sia, con particolare focus su Windows Azure. Infine ci focalizzeremo su Umbraco CMS per capire quali siano le sue caratteristiche in un ambiente distribuito e quali I medoti di deployment su Windows Azure.

 

Panoramica dei CMS OpenSource in ambiente .NET

Di progetti CMS in ASP.NET in circolazione ce ne sono parecchi, in particolare progetti OpenSource ospitati su CodePlex. Spesso però i progetti Open nascono con le migliori intenzioni e finiscono (magari dopo pochi emozionanti attimi) con la bocciatura dal mondo community che non mostra interesse e/o non supporta il progetto. Questo non significa che ci siano prodotti oggettivamente migliori di altri, ma che per la natura community-based dei progetti Open-Source, spesso quelli diventati popolari lo sono diventati grazie anche ad un insieme di fattori che ne hanno determinato l’interesse delle aziende e il coinvolgimento gradualmente crescente della community di sviluppatori.

Uno di questi esempi è certamente DotNetNuke, uno dei più popolari CMS multi-site e uno dei progetti dal retaggio più corposo, oggi in circolazione e utilizzo. DotNetNuke permette la creazione di un Site Host e di N Portal Sites subordinati, il che facilita enormemente quegli scenari in cui un’ azienda di servizi deve centralizzare il controllo di molte infrastrutture a portale per clienti diversi. Il concetto di “moduli” permette l’estensione di DotNetNuke con discreta facilità, utilizzando Visual Studio e ASP.NET.

Il debuttante Orchard CMS è stato oggetto di notevole investimento da parte di Microsoft nell’ultimo anno ed ha visto la luce da relativamente poco. Essendo basato sulle ultime tecnologie ed essendo già molto adottato e ben recepito dalla community di sviluppatori, Orchard è oggi il CMS scritto in .NET che più si potrà avvicinare al competitor Wordpress, per la sua facilità di gestione, di layouting e di provisioning dei plugin.

Infine trattiamo Umbraco, lasciato per ultimo solo perché da qui partiremo in una indagine più approfondita volta a dimostrare la sua semplicità di deployment in un ambiente “super-distribuito” come quello del Cloud Computing di casa Microsoft, Windows Azure.

 

Panoramica su Umbraco

clip_image002Umbraco è un CMS molto popolare, scritto completamente in C# e basato su architetture e tecnologie Microsoft. Prima della versione 4.5 Umbraco era rilasciato con una combinazione di licenze Open-Source, mentre oggi è interamente rilasciato sotto licenza OSI approved MIT License. La sua storia decennale ebbe inizio nel 2000, quando fu sviluppato per la prima volta, raggiungendo l’apice del successo nel 2010, quando la sua popolarità (misurata in numero di download), era seconda solo a DotNetNuke. Il backend di Umbraco è distribuito tra IIS e Microsoft SQL Server e attualmente può girare in Full Trust e Medium Trust (Esiste una versione staccata (branched) da quella mainstream che supporta il Medium Trust).

La versione corrente è la 4.7.1 anche se la release 5 “Jupiter” è in fase Alpha 2 (la nuova versione è una riscrittura completa del framework di Umbraco in ASP.NET MVC).

 

Perché utilizzare Windows Azure per un CMS

Sebbene sembri almeno pretestuoso in questo contesto, nulla è più indicato al deployment nel Cloud di un CMS. Il perché sta nell’obiettivo che la stragrande maggioranza dei CMS ha, ovvero fornire un portale scalabile cercando di ridurre al minimo lo sforzo per renderlo tale e per attuare il ridimensionamento dell’infrastruttura in seguito ad eventi esterni. Infatti è noto l’utilizzo dei CMS per le grandi testate giornalistiche, le grandi riviste di moda e non solo; i blog e le fonti di informazione secondarie e tutto un ecosistema di player dell’online publishing, il cui scopo è fornire il servizio (l’informazione) al suo lettore. Molti CMS vengono anche utilizzati nelle piccole intranet aziendali, ma non è questo il caso in cui Windows Azure e il Cloud Computing in generale possano essere sfruttati al meglio.

A latere della scelta strategica del CMS da utilizzare per la propria soluzione è infatti noto che al crescere delle richieste, delle “page-views”, degli utenti unici e più in generale, del traffico internet, si dovranno allocare maggiori risorse, operazione che tolti i problemi minori, introduce un effort amministrativo notevole per la riconfigurazione di tutta l’infrastruttura a supporto delle logiche web-farm. Se poi questo ridimensionamento dovesse essere variabile nel tempo, anche con granularità giornaliera (si pensi alle testate giornalistiche nei periodi di elettorali, per esempio) lo sforzo diventerebbe difficilmente sostenibile, oppure a discapito di un altro fattore importante: il costo.

Windows Azure si interpone tra la scelta strategica e quella IT relativa all’ambiente di deployment, perché incapsula già un notevole risparmio intrinseco dovuto al deployment forzato in ambiente web-farm e, trattandosi di Cloud, perché il modello di billing rispecchierà l’effettivo carico del nostro sistema. Ma rimane ancora un problema: come dobbiamo configurare un prodotto come Umbraco, rilasciato pronto per funzionare su ambiente single-server, per farlo funzionare con Windows Azure, in completa assenza di controllo sulla/e macchina/e destinazione e senza le semplificazioni del FileSystem? La complessa soluzione è contenuta e mascherata da un altro progetto Open: l’acceleratore di Umbraco per i deployment su Windows Azure o Windows Azure Accelerator for Umbraco.

 

Acceleratore di Umbraco per Windows Azure

L’acceleratore di Umbraco per Windows Azure è stato sviluppato per fare in modo che le applicazioni Umbraco venissero facilmente distribuite su Windows Azure, beneficiando quindi del ridotto effort amministrativo di Azure, della sua alta affidabilità garantita[1] e della scalabilità by-design fornita.

La Figura 1 mostra come funziona l’acceleratore. Esso è una semplice applicazione che sincronizza le istanze di Umbraco tra l’Hosted Service e il Blob Storage di Windows Azure. Inoltre, avvalendosi della struttura Full IIS di Azure (a partire dalla versione 1.3), è possibile ospitare più siti web nella stessa Hosted Application. L’acceleratore si prenderà carico della sincronizzazione di ogni nuovo Web Site, nel momento in cui esso verrà caricato nell’Azure Storage.

 

clip_image002[5]

Figura 1 - Architettura dell'acceleratore per Umbraco

Per utilizzare gli script che stiamo andando ad elencare ed analizzare è necessario avere installato:

· Visual Studio 2010 e .NET 4.0

· Windows Azure SDK e Visual Studio Tools for Windows Azure 1.4 (o superiore)

· SQL Express 2008 R2 (con SQL Server Management Studio)

· Windows Azure Accelerator for Umbraco

Una volta eseguito l’archivio autoestraente dell’acceleratore, si devono seguire questi passi che descriveremo nel prossimo post:

1) Creazione dello storage account per Umbraco

2) Esecuzione dello script di setup

3) Deployment dell'acceleratore su Azure

4) Creazione di un server SQL Azure

5) Configurazione di Umbraco nello script di setup

 (Leggi la seconda parte)

Roberto Freato