1. Il cielo è sempre più Azure
Regole di buona programmazione per favorire la
migrazione ad Azure
Relatori
Denis Nani
4 novembre 2015
2. Perché passare ad Azure?
• Partire da una applicazione già sviluppata per il cliente e modificarla in
modo che possa funzionare sia On Premise (su server interno) sia su
Azure in configurazione PaaS (Platform As A Service) solo
modificandone la configurazione.
• Che cos’è Azure PaaS?
• “PaaS is a shared and elastically scalable application development and
deployment platform delivered as a service.”
1/13
3. Azure (Platform As A Service)
• Vantaggi di Azure PaaS:
• Scalabilità orizzontale
• Facilità di deploy
• Gestione dell’hardware non più a carico del cliente
• semplificazione del processo di sviluppo delle applicazioni esulando
però dai problemi di costo e complessità legati all’ acquisto ed alla
gestione dello strato hardware/software sottostante
• Tratto da https://msdn.microsoft.com/it-it/library/jj573926.aspx:
• Nel PaaS la competenza IT necessaria viene ridotta al minimo, e il software deve
essere scritto “bene”, altrimenti sul PaaS, semplicemente, non gira.
2/13
6. Sessione e Application Cache
Situazione iniziale:
- Utilizzo della Session come «repository» per tutto ciò che va memorizzato tra le pagine (anche
file!), scarsa propensione a svuotare le variabili in memoria.
Problema:
- Necessità di utilizzare una tipologia di sessione condivisa tra più macchine (scalabilità
orizzontale)
Cosa abbiamo fatto:
- Integrazione Kernel Aziendale) su Azure utilizziamo la Redis Cache (garantisce affidabilità e
utilizzo in web farm). E’ importante che gli oggetti memorizzati in sessione siano serializzabili!
Best Practices:
- Utilizzare la cache con scrupolo
- non sovraccaricarla di variabili inutili
- utilizzare oggetti semplici
- svuotare le variabili quando non servono
5/13
7. Excel
Prima:
- Utilizzo di automazione di Excel per esportazioni in Excel particolari (che richiedono
template) e dei driver di OLEDB per excel per importare velocemente righe da Excel
Problema:
- Sono richiesti componenti esterni da installare sul server
- Non possibile per una configurazione Azure PaaS, sconsigliato per una
configurazione On Premise
Cosa abbiamo fatto:
- Utilizzo di un framework basato sullo standard OpenXML (ClosedXML) per utilizzare
Excel senza necessità di avere installato sul server Offfice o driver particolari
Best Practices:
- Non utilizzare automazioni che richiedono componenti esterni all’applicativo da
installare sul server
6/13
8. Autenticazione Utenti
Prima:
- Utilizzo della autenticazione di Windows per loggare automaticamente un utente
Problema:
- Azure non supporta l’autenticazione di Windows
Possibili soluzioni:
- Autenticazione tramite Form
- Authority esterne di autenticazione
Cosa abbiamo fatto:
- (Integrazione Kernel Aziendale) utilizzo di Office365 e Oauth 2.0 per gestire
l’autenticazione utente mediante una Authority esterna
7/13
9. Gestione di File Fissi: AppData
Cosa abbiamo fatto:
- Utilizzo di indirizzi relativi per gestire i file fissi (template, help) inclusi nella
soluzione
- Posizionarli nella cartella AppData (ideata appositamente per questo)
Best Practices:
- Utilizzare sempre indirizzi relativi per gestire i file, così non è nemmeno
necessario modificare la configurazione in fase di deploy!
- Utilizzare le cartelle di Asp.Net come AppData che già automaticamente negano
l’accesso dei file esternamente al server
8/13
10. Gestione di File lato utente
Prima:
- Gestione dei file lato utente tramite utilizzo diretto della libreria .NET System.IO e File
System del server
Problema:
- Su Azure Paas non conosciamo il File System del server e nemmeno la capienza del
server
Cosa abbiamo fatto:
- (Integrazione Kernel Aziendale) Utilizzo di una interfaccia di File Repository come
interfaccia per la gestione dei file. Tramite config è possibile impostare la gestione
con Blob Storage per Azure o con File System per la release On Premise
Best Practices:
- Utilizzare una interfaccia di File Repository per gestire i file che possono essere
manipolati lato UI
9/13
11. DataBase
Prima:
- Utilizzo di sinonimi e Linked Server per ottenere agevolmente dati da tabelle di altri
database
Problema:
- I database di SQL Azure non consentono l’uso di sinonimi e linked server!
Cosa abbiamo fatto:
- I sinonimi che puntavano a tabelle sul db di log sono stati eliminati e le tabelle sono
state trasferite direttamente sul db di produzione
- I sinonimi che puntavano a tabelle di db esterni sono stati sostituiti da procedure
schedulate che copiano i dati dal db esterno al db di produzione
Best Practices:
- Evitare l’utilizzo di sinonimi per evitare dipendenze tra database!
10/13
12. Cubi e dwh
Prima:
- Utilizzo di Analysis Service per estrazione di dati, analizzabili tramite Excel
Possibili soluzioni:
- Microsoft sta sviluppando strumenti di DataWarehousing appositi per Azure
- Power BI permette di analizzare dati provenienti da un db di SQL Azure
- Situazione in continua evoluzione
Cosa abbiamo fatto:
- Utilizzo di WCF Odata per trasferire i dati su Excel senza l’utilizzo di Analysis Service
Problemi:
- È difficile filtrare preventivamente i dati: l’Excel è costretto a scaricarsi tutti i dati
prima di procedere all’elaborazione
- Eccessiva lentezza e pesantezza dati
11/13
13. Sicurezza
12/13
Prima:
• Applicativi e Database situati su rete interna
aziendale
• Connessione accessibile solo tramite VPN
• «Comfort Zone»
Dopo:
• Applicativi e Database situati su Azure,
quindi esterni alla rete aziendale
• Chiunque può accedere
• Necessità di maggiore protezione!
• Utilizzare connessioni protette (ssl)
• Autenticare i servizi