Windows Azure geo-location

Dal 30 aprile, anche nella CTP di Windows Azure, ci sono due novitò che riguardano appunto la geo-location.

Una applicazione ospitata su Windows Azure può essere composta da quello che viene definito un Hosted Service ovvero un servizio o una applicazione ASP.NET esposta su un endpoint pubblico che sfrutta il sistema operativo in the cloud, e/o da un Storage Account, ancora una volta un endpoint pubblico che può ospitare dati (Simple Table, Blob, Queue in queste prime CTP). Ho inserito "e/o" in quanto lo storage è comunque accessibile da una soluzione on-premise quindi potremmo avere una classica applicazione ASP.NET che teniamo in casa o presso qualunque provider che accede ai dati ospitati in the cloud.

La prima novità riguarda la possibilità di decidere la Region in cui ospitare la nostra applicazione. Nelle primissime CTP non ci era dato sapere dove fossero i server che ospitavano la nostra soluzione (non che ci interessasse visto che si trattava di una CTP su cui eseguire il test per imparare ad usare la piattaforma). Nella versione attuale e ovviamente nella versione finale è possibile decidere dove ospitare la nostra applicazione. Per adesso sono disponibili solamente USA-Nortwest, USA-Southwest o USA-Anywhere ma chiaramente sarà possibile scegliere poi il data center più consono per la nostra applicazione o per i nostri dati. Se la nostra applicazione ha vincoli legali dettati dalla comunità europea potremmo quindi decidere di ospitare la nostra applicazione e soprattutto i nostri dati in Europa.

La seconda novità riguarda la creazione di un "affinity group": è importante infatti tenere lo Storage Account ospitato sui server vicini rispetto al progetto Hosted Service per abbassare il più possibile la latenza nelle richieste alle risorse in the cloud rispetto all'applicazione in the cloud. Scegliere una Region identica non ci assicura che le risorse siano veramente vicine: sicuramente sono nella stessa region ma non è detto che siano nello stesso data center. L'affinity group che possiamo create consente di indicare a Windows Azure di tenere il più vicine possibile le risorse rispetto allo storage.

L'affinity group si può creare sia da un progetto Hosted Service che dal progetto Storage Account: gli affinity group creati sono condivisi ad entrambi i progetti.