Nei precedenti post abbiamo introdotto Azure Traffic Manager, il bilanciatore per endpoint creati all'interno della piattaforma cloud di Microsoft.
Abbiamo visto che tramite questo servizio è possibile bilanciare le richieste ad applicazioni e/o macchine virtuali, secondo certi algoritmi, attraverso un singolo endpoint di entrata alla risorsa richiesta.
Bene, dovete sapere che questo meccanismo può essere tranquillamente applicato ad un'app SharePoint Online (Office 365) sviluppata ovviamente seguendo le regole dell'App Model di SharePoint 2013. Vediamo come.

Per prima cosa dobbiamo sviluppare l’App :)
Sviluppiamo una Provider-Hosted App ovviamente, perché è l'unica tipologia di App SharePoint Online che prevede una web application che gira al di fuori del contesto di SharePoint.
Secondo passaggio è quello di registrare l'App all'interno di SharePoint Online e farci quindi generare il ClientId e il ClientSecret utili alla connessione dell’applicazione con Office 365.


Come avrete notato, abbiamo già specificato l'indirizzo *.trafficmanager.net per la nostra applicazione.

Una volta pronta l'applicazione e registrata all'interno di SharePoint Online, modifichiamo l'App Manifest così da specificare il ClientId generato e la URL della nostra applicazione esterna del tipo *.trafficmanager.net (con specificate le querystring di default utili a permettere il collegamento tra Office 365 e l’applicazione stessa):

<?xml version="1.0" encoding="utf-8" ?>
<App xmlns=http://schemas.microsoft.com/sharepoint/2012/app/manifest
     Name="d4so365appsazuretrafficmanager"
     ProductID="{819a0b91-e9c7-4159-a5f9-b5bc64d9e160}"
     Version="1.0.0.0"
     SharePointMinVersion="16.0.0.0">
  <Properties>
    <Title>Test azure traffic manager</Title>
    <StartPage>https://d4s-testtrafficmanager.trafficmanager.net/Default.aspx?{StandardTokens}</StartPage>
  </Properties>
  <AppPrincipal>
    <RemoteWebApplication ClientId="1d7d89ef-0470-4acf-8059-0791abae505a" />
  </AppPrincipal>
</App>

Ora che la nostra applicazione è completa, possiamo effettuare il deploy della stessa applicazione sui differenti endpoint che abbiamo creato (per questo esempio faccio riferimento al precedente articolo in cui abbiamo creato un primo endpoint nell'area Europea ed un secondo nell'area Asiatica).





Nella prima immagine ho importato il file di pubblicazione della "Web app" Azure, che avevo precedentemente scaricato dal portale. Fate lo stesso per tutti gli endpoint che volete configurare.

Ok, ora abbiamo l'applicazione esterna correttamente installata su tutti gli endpoint che abbiamo precedentemente creato all'interno della nostra sottoscrizione Azure. Dobbiamo quindi passare all'installazione dell’App all’interno di Office 365.
Effettuiamo quindi un package dell'App, specificando di nuovo la URL e il ClientId (questa è una delle novità degli ultimi update di Visual Studio 2013).





Facciamo l'upload dell'App all'interno dell'App Catalog ed installiamola su un qualsiasi sito della site collection.





Una volta installata, potete fare click sull'App e verificarne il corretto funzionamento.


In questo caso, io ho scelto il metodo di bilanciamento "Performance" quindi verrà eseguita l'applicazione installata nell'area Europea, visto che io ho fatto una richiesta dall'Italia.

Configurazione HTTPS
Come avete visto dall'ultima immagine, abbiamo la nostra applicazione funzionante in HTTPS (Office 365 e in generale il nuovo App-Model di SharePoint 2013 ci obbliga ad avere applicazioni di tipo Provider-Hosted che girano in HTTPS).
Per raggiungere questo obiettivo ci è bastato configurare Azure Traffic Manager per funzionare in HTTPS.



Come vi dicevo nel precedente post, al dominio *.trafficmanager.net non è stato assegnato un certificato valido da Microsoft e quindi il browser continuerà a segnalare un errore di certificato non valido.
Questo problema può essere risolto creando un certificato apposito per l'applicazione e lavorando con le entry di DNS.
Nel frattempo, ho creato una issue all'interno dello user voice di Azure:
http://feedback.azure.com/forums/34192--general-feedback/suggestions/7601493-add-a-valid-ssl-certificate-for-urls-trafficmana 

Perché utilizzare Azure Traffic Manager in un’App SharePoint?
A mio parere è solamente una questione legata a chi dovrà utilizzare la vostra App SharePoint e al carico di richieste che vi aspettate.
Dal punto di vista di molte aziende italiane, che si affacciano da poco ad Azure, i vantaggi del cloud vengono spesso ridotti ad un risparmio della banda di rete interna a favore di un utilizzo maggiore della rete internet.
Vero, ma non è solo questo. In ogni caso andiamo subito incontro ad un altro problema.
Il nostro utente che accede alla intranet SharePoint Online dalla Cina non ha alcun problema a navigare la intranet, in quanto SharePoint Online già applica delle regole di bilanciamento in base alla locazione scelta per l’utente all’interno del portale Office 365, ma quando lo stesso utente tenta di accedere all’interno della nostra applicazione (che magari abbiamo creato solamente nella zona Europea) deve aspettare tempi molto lunghi per qualsiasi richiesta.
Azure Traffic Manager risolve questo problema con pochi click di configurazione.