SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Il cielo è sempre più Azure
Regole di buona programmazione per favorire la
migrazione ad Azure
Relatori
Denis Nani
4 novembre 2015
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
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
Configurazione On Premise
3/13
Configurazione su Azure (Paas)
4/13
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
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
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
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
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
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
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
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
Domande? 13/13

Weitere ähnliche Inhalte

Was ist angesagt?

SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload ProfilingGianluca Hotz
 
SQL Server Modern Query Processing
SQL Server Modern Query ProcessingSQL Server Modern Query Processing
SQL Server Modern Query ProcessingGianluca Hotz
 
Come utilizzare AWS DMS per migrare SQL Server ad Amazon Aurora
Come utilizzare AWS DMS per migrare SQL Server ad Amazon AuroraCome utilizzare AWS DMS per migrare SQL Server ad Amazon Aurora
Come utilizzare AWS DMS per migrare SQL Server ad Amazon AuroraGianluca Hotz
 
Una web farm bilanciata e scalabile con Microsoft Azure
Una web farm bilanciata e scalabile con Microsoft AzureUna web farm bilanciata e scalabile con Microsoft Azure
Una web farm bilanciata e scalabile con Microsoft AzureDavide Benvegnù
 
SQL Server Data Virtualization with Polybase
SQL Server Data Virtualization with PolybaseSQL Server Data Virtualization with Polybase
SQL Server Data Virtualization with PolybaseGianluca Hotz
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossaGian Maria Ricci
 
Caso di Studio - Porting da ASP.NET 3.5 a 4.0
Caso di Studio - Porting da ASP.NET 3.5 a 4.0Caso di Studio - Porting da ASP.NET 3.5 a 4.0
Caso di Studio - Porting da ASP.NET 3.5 a 4.0Sinergia Totale
 
Dot netcampus2015 green-template
Dot netcampus2015 green-templateDot netcampus2015 green-template
Dot netcampus2015 green-templateDotNetCampus
 
Installing and Administering MOSS
Installing and Administering MOSSInstalling and Administering MOSS
Installing and Administering MOSSDotNetMarche
 
SQL Server Modern Query Processing
SQL Server Modern Query ProcessingSQL Server Modern Query Processing
SQL Server Modern Query ProcessingGianluca Hotz
 
Managing configuration in Drupal 8 - SIDCamp 2015
Managing configuration in Drupal 8 - SIDCamp 2015Managing configuration in Drupal 8 - SIDCamp 2015
Managing configuration in Drupal 8 - SIDCamp 2015Kelyon Srl
 
Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databasesGianluca Hotz
 
SQL Server Data Virtualization with polybase
SQL Server Data Virtualization with polybaseSQL Server Data Virtualization with polybase
SQL Server Data Virtualization with polybaseGianluca Hotz
 
Internet information services
Internet information servicesInternet information services
Internet information servicesGiusy Scopelliti
 
Azure SQL Database Ledger
Azure SQL Database LedgerAzure SQL Database Ledger
Azure SQL Database LedgerGianluca Hotz
 
Best Practices on SQL Server
Best Practices on SQL ServerBest Practices on SQL Server
Best Practices on SQL ServerGianluca Hotz
 

Was ist angesagt? (17)

SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload Profiling
 
SQL Server Modern Query Processing
SQL Server Modern Query ProcessingSQL Server Modern Query Processing
SQL Server Modern Query Processing
 
Come utilizzare AWS DMS per migrare SQL Server ad Amazon Aurora
Come utilizzare AWS DMS per migrare SQL Server ad Amazon AuroraCome utilizzare AWS DMS per migrare SQL Server ad Amazon Aurora
Come utilizzare AWS DMS per migrare SQL Server ad Amazon Aurora
 
Una web farm bilanciata e scalabile con Microsoft Azure
Una web farm bilanciata e scalabile con Microsoft AzureUna web farm bilanciata e scalabile con Microsoft Azure
Una web farm bilanciata e scalabile con Microsoft Azure
 
SQL Server Data Virtualization with Polybase
SQL Server Data Virtualization with PolybaseSQL Server Data Virtualization with Polybase
SQL Server Data Virtualization with Polybase
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossa
 
Caso di Studio - Porting da ASP.NET 3.5 a 4.0
Caso di Studio - Porting da ASP.NET 3.5 a 4.0Caso di Studio - Porting da ASP.NET 3.5 a 4.0
Caso di Studio - Porting da ASP.NET 3.5 a 4.0
 
Dot netcampus2015 green-template
Dot netcampus2015 green-templateDot netcampus2015 green-template
Dot netcampus2015 green-template
 
SQL Server in AWS
SQL Server in AWSSQL Server in AWS
SQL Server in AWS
 
Installing and Administering MOSS
Installing and Administering MOSSInstalling and Administering MOSS
Installing and Administering MOSS
 
SQL Server Modern Query Processing
SQL Server Modern Query ProcessingSQL Server Modern Query Processing
SQL Server Modern Query Processing
 
Managing configuration in Drupal 8 - SIDCamp 2015
Managing configuration in Drupal 8 - SIDCamp 2015Managing configuration in Drupal 8 - SIDCamp 2015
Managing configuration in Drupal 8 - SIDCamp 2015
 
Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databases
 
SQL Server Data Virtualization with polybase
SQL Server Data Virtualization with polybaseSQL Server Data Virtualization with polybase
SQL Server Data Virtualization with polybase
 
Internet information services
Internet information servicesInternet information services
Internet information services
 
Azure SQL Database Ledger
Azure SQL Database LedgerAzure SQL Database Ledger
Azure SQL Database Ledger
 
Best Practices on SQL Server
Best Practices on SQL ServerBest Practices on SQL Server
Best Practices on SQL Server
 

Andere mochten auch

Keep calm and deploy
Keep calm and deployKeep calm and deploy
Keep calm and deployKlab
 
On working in Particular
On working in ParticularOn working in Particular
On working in ParticularMauro Servienti
 
Code metrics
Code metricsCode metrics
Code metricsKlab
 
Croce e delizia del lavoro remoto
Croce e delizia del lavoro remotoCroce e delizia del lavoro remoto
Croce e delizia del lavoro remotoMauro Servienti
 
SOA, DDD e microservices
SOA, DDD e microservicesSOA, DDD e microservices
SOA, DDD e microservicesMauro Servienti
 
Universal app ma universal per davvero
Universal app ma universal per davveroUniversal app ma universal per davvero
Universal app ma universal per davveroKlab
 
THE ROAD TO A SERVICE ORIENTED ARCHITECTURE (SOA)
THE ROAD TO A  SERVICE ORIENTED ARCHITECTURE (SOA)THE ROAD TO A  SERVICE ORIENTED ARCHITECTURE (SOA)
THE ROAD TO A SERVICE ORIENTED ARCHITECTURE (SOA)Mauro Servienti
 
Single Sign On con IdentityServer
Single Sign On con IdentityServerSingle Sign On con IdentityServer
Single Sign On con IdentityServerMauro Servienti
 
There is a bot for that
There is a bot for thatThere is a bot for that
There is a bot for thatKlab
 

Andere mochten auch (11)

Keep calm and deploy
Keep calm and deployKeep calm and deploy
Keep calm and deploy
 
On working in Particular
On working in ParticularOn working in Particular
On working in Particular
 
Code metrics
Code metricsCode metrics
Code metrics
 
Services UI composition
Services UI compositionServices UI composition
Services UI composition
 
Pub/Sub Basics
Pub/Sub BasicsPub/Sub Basics
Pub/Sub Basics
 
Croce e delizia del lavoro remoto
Croce e delizia del lavoro remotoCroce e delizia del lavoro remoto
Croce e delizia del lavoro remoto
 
SOA, DDD e microservices
SOA, DDD e microservicesSOA, DDD e microservices
SOA, DDD e microservices
 
Universal app ma universal per davvero
Universal app ma universal per davveroUniversal app ma universal per davvero
Universal app ma universal per davvero
 
THE ROAD TO A SERVICE ORIENTED ARCHITECTURE (SOA)
THE ROAD TO A  SERVICE ORIENTED ARCHITECTURE (SOA)THE ROAD TO A  SERVICE ORIENTED ARCHITECTURE (SOA)
THE ROAD TO A SERVICE ORIENTED ARCHITECTURE (SOA)
 
Single Sign On con IdentityServer
Single Sign On con IdentityServerSingle Sign On con IdentityServer
Single Sign On con IdentityServer
 
There is a bot for that
There is a bot for thatThere is a bot for that
There is a bot for that
 

Ähnlich wie Il cielo è sempre più azure

Web app slots and WebAPI versioning
Web app slots and WebAPI versioningWeb app slots and WebAPI versioning
Web app slots and WebAPI versioningNicolò Carandini
 
Web app slots and webapi versioning
Web app slots and webapi versioningWeb app slots and webapi versioning
Web app slots and webapi versioningNicolò Carandini
 
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-servicePower BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-serviceMarco Pozzan
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DotNetCampus
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSopencityplatform
 
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiAndrea Dottor
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migrationAndrea Cirioni
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
 
Win05 accesso ai dati in win 8
Win05   accesso ai dati in win 8Win05   accesso ai dati in win 8
Win05 accesso ai dati in win 8DotNetCampus
 
Quanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseQuanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseMarco Pozzan
 
Pomeriggio Entity Framework - WP7 e SQL Compact Edition
Pomeriggio Entity Framework - WP7 e SQL Compact EditionPomeriggio Entity Framework - WP7 e SQL Compact Edition
Pomeriggio Entity Framework - WP7 e SQL Compact EditionDomusDotNet
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Andrea Agnoletto
 
Business Intelligence & Analytics
Business Intelligence & AnalyticsBusiness Intelligence & Analytics
Business Intelligence & AnalyticsDavide Mauri
 

Ähnlich wie Il cielo è sempre più azure (20)

Web app slots and WebAPI versioning
Web app slots and WebAPI versioningWeb app slots and WebAPI versioning
Web app slots and WebAPI versioning
 
Web app slots and webapi versioning
Web app slots and webapi versioningWeb app slots and webapi versioning
Web app slots and webapi versioning
 
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-servicePower BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
 
Power bi
Power biPower bi
Power bi
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppo
 
Datamart.pdf
Datamart.pdfDatamart.pdf
Datamart.pdf
 
Datamart.pptx
Datamart.pptxDatamart.pptx
Datamart.pptx
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
 
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi reali
 
Data flow
Data flowData flow
Data flow
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
 
Google AppEngine
Google AppEngineGoogle AppEngine
Google AppEngine
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
OCP Paas_ultima
OCP Paas_ultimaOCP Paas_ultima
OCP Paas_ultima
 
Win05 accesso ai dati in win 8
Win05   accesso ai dati in win 8Win05   accesso ai dati in win 8
Win05 accesso ai dati in win 8
 
Quanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseQuanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless Synapse
 
Pomeriggio Entity Framework - WP7 e SQL Compact Edition
Pomeriggio Entity Framework - WP7 e SQL Compact EditionPomeriggio Entity Framework - WP7 e SQL Compact Edition
Pomeriggio Entity Framework - WP7 e SQL Compact Edition
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?
 
Business Intelligence & Analytics
Business Intelligence & AnalyticsBusiness Intelligence & Analytics
Business Intelligence & Analytics
 

Mehr von Klab

Building an app from scratch
Building an app from scratchBuilding an app from scratch
Building an app from scratchKlab
 
Azure Application Insights
Azure Application InsightsAzure Application Insights
Azure Application InsightsKlab
 
Introduzione a git
Introduzione a gitIntroduzione a git
Introduzione a gitKlab
 
Database under source control
Database under source controlDatabase under source control
Database under source controlKlab
 
The five dysfunctions of a team
The five dysfunctions of a teamThe five dysfunctions of a team
The five dysfunctions of a teamKlab
 
Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Klab
 
Introduzione a ReactiveX
Introduzione a ReactiveXIntroduzione a ReactiveX
Introduzione a ReactiveXKlab
 
Don’t await … try async/await !
Don’t await … try async/await !Don’t await … try async/await !
Don’t await … try async/await !Klab
 
Errore umano. no, cattiva progettazione
Errore umano. no, cattiva progettazioneErrore umano. no, cattiva progettazione
Errore umano. no, cattiva progettazioneKlab
 

Mehr von Klab (9)

Building an app from scratch
Building an app from scratchBuilding an app from scratch
Building an app from scratch
 
Azure Application Insights
Azure Application InsightsAzure Application Insights
Azure Application Insights
 
Introduzione a git
Introduzione a gitIntroduzione a git
Introduzione a git
 
Database under source control
Database under source controlDatabase under source control
Database under source control
 
The five dysfunctions of a team
The five dysfunctions of a teamThe five dysfunctions of a team
The five dysfunctions of a team
 
Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)
 
Introduzione a ReactiveX
Introduzione a ReactiveXIntroduzione a ReactiveX
Introduzione a ReactiveX
 
Don’t await … try async/await !
Don’t await … try async/await !Don’t await … try async/await !
Don’t await … try async/await !
 
Errore umano. no, cattiva progettazione
Errore umano. no, cattiva progettazioneErrore umano. no, cattiva progettazione
Errore umano. no, cattiva progettazione
 

Il cielo è sempre più azure

  • 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