Esporta (0) Stampa
Espandi tutto

Considerazioni di sviluppo per Servizi cloud di Azure

Aggiornamento: giugno 2014

Autori: Selcin Turkarslan

Revisori: Tim Wieman, Valery Mizonov, Avilay Parekh, Paolo Salvatori, Steve Howard

Prima di eseguire la migrazione delle applicazioni a Servizi cloud di Microsoft Azure, è necessario innanzitutto rivedere i dettagli di questi ultimi. Nell'articolo di introduzione ad Azure vengono fornite informazioni sui seguenti argomenti:

  • Componenti di Azure.

  • Modelli di esecuzione.

  • Gestione dati.

  • Funzionalità di rete.

  • SDK (Software Development Kit) di programmazione supportati.

In questo articolo vengono fornite informazioni introduttive sull'implementazione di un'applicazione Microsoft Azure mediante Servizi cloud di Microsoft Azure. A causa del numero praticamente infinito degli scenari di migrazione possibili, è opportuno che gli sviluppatori scelgano le tecniche e le soluzioni più appropriate per gli utenti e le applicazioni.

Nella migrazione di un'applicazione esistente a Azure sono incluse le operazioni seguenti:

  • Scelta del modello di esecuzione dei calcoli più adatto alle applicazioni in uso, ad esempio Servizi cloud, Siti Web, Macchine virtuali e così via. Leggere la sezione dell'articolo di introduzione ad Azure relativa ai modelli di esecuzione.

  • Aggiunta di una configurazione specifica di Azure e di codice personalizzato.

  • Archiviazione e gestione dei dati in Azure.

  • Riassemblaggio dell'applicazione esistente come applicazione Azure.

  • Distribuzione dell'applicazione in Azure.

Un'applicazione sviluppata in Servizi cloud di Microsoft Azure include il codice dell'applicazione stessa, la gestione dei dati e le relative impostazioni di configurazione. Quando si sviluppa un'applicazione per il cloud, è ancora possibile applicare i modelli di architettura generali. Gli sviluppatori, ad esempio, devono progettare le applicazioni per gestire disponibilità, scalabilità, affidabilità e sicurezza in un ambiente distribuito. Devono inoltre prendere in considerazione i seguenti fattori:

  • Contratti di servizio.

  • Pianificazione della capacità.

  • Fatturazione clienti.

  • Controllo.

  • Monitoraggio delle applicazioni.

  • Analisi del traffico.

  • Gestione dei costi.

  • Ridimensionamento: stabilire quando applicare una scalabilità verticale oppure orizzontale alle applicazioni cloud.

In un ambiente di data center privato tradizionale l'utente è responsabile dell'acquisto, della configurazione e della gestione dell'hardware per eseguire i servizi. Tramite Azure è possibile progettare e compilare applicazioni che possono essere scalate su richiesta allocando risorse virtualizzate. Alcune applicazioni locali possono essere eseguite in Azure senza alcuna modifica o con cambiamenti minimi. La progettazione e la definizione dell'architettura per il cloud, tuttavia, assicura innegabili vantaggi alla maggior parte delle applicazioni. Per sfruttare al meglio i vantaggi di Azure, prima di eseguire la migrazione si consiglia di modificare l'applicazione per l'uso di più ruoli.

Le applicazioni e i servizi Web ospitati nei data center legacy, ad esempio, combinano spesso più funzioni in un'unica applicazione, condizione che non consente una scalabilità ottimale. Diverse applicazioni Web, inoltre, archiviano lo stato dell'applicazione in un'unità disco locale, operazione non supportata nell'ambiente di Servizi cloud di Azure. Quando si esegue la migrazione da un'applicazione Web esistente ad Azure, per sfruttare appieno i vantaggi della scalabilità e dell'elasticità del cloud computing sono disponibili due opzioni:

In Servizi cloud di Azure ogni applicazione viene implementata come uno o più ruoli. In ogni ruolo sono contenute le informazioni sul codice e sulla configurazione necessarie per eseguire parte della funzionalità dell'applicazione. I servizi front-end e il codice che interagisce direttamente con i Web browser o con altri client HTTP sono ruoli Web. I ruoli Web vengono eseguiti su un server Web di Internet Information Services (IIS). Un ruolo di lavoro esegue attività di elaborazione e supporto in background. I servizi di livello intermedio sono in genere ruoli di lavoro.

In ogni ruolo possono essere presenti più istanze. Ciascuna istanza esegue lo stesso codice scritto per il ruolo, ma ciascuna di esse si trova in una macchina virtuale separata nel data center di Azure. Per ogni ruolo è possibile indicare le dimensioni desiderate della macchina virtuale che devono essere utilizzate dalle istanze del ruolo. Per altre informazioni, vedere la pagina relativa alla configurazione delle dimensioni dei servizi cloud.

Oltre alle differenze funzionali tra i ruoli, ogni ruolo funge da unità di scala per l'applicazione. È possibile, ad esempio, implementare 20 istanze del ruolo Web per gestire una maggiore quantità di traffico e solo 5 istanze del ruolo di lavoro per elaborare in modo asincrono le richieste del ruolo Web. Se si desidera creare un'applicazione ASP.NET, PHP, Node.js o un servizio WCF semplice, è possibile usare un ruolo Web. Si consiglia di sottoporre il servizio cloud a dettagliati test delle funzionalità e delle prestazioni. Questi test permetteranno di determinare il numero corretto di istanze del ruolo e le dimensioni ottimali della macchina virtuale prima di passare l'applicazione alla fase di produzione. Per altre informazioni sui concetti riguardanti il servizio cloud, vedere le pagine relative al centro di sviluppo di Azure e al centro di documentazione di Azure.

Le opzioni di archiviazione disponibili in Azure offrono numerosi vantaggi. Grazie all'uso di queste opzioni, la logica dell'applicazione risulta semplificata e vengono migliorate le prestazioni del servizio cloud. Quando si pianifica la migrazione dell'applicazione, è inoltre importante comprendere i limiti di ciascuna opzione di archiviazione dei dati ed essere in grado di identificare quella più appropriata per lo specifico servizio cloud. Per altre informazioni sulle opzioni di archiviazioni disponibili in Azure, vedere Panoramica dei servizi di gestione dati in Microsoft Azure.

È inoltre consigliabile usare il servizio Cache di Azure per assicurare alle applicazioni Azure un'archiviazione ad alta velocità basata sulla memoria. La memorizzazione nella cache assicura un miglioramento delle prestazioni attraverso l'archiviazione temporanea di informazioni provenienti da altre fonti back-end. È inoltre possibile ridurre i costi associati alle transazioni di accesso all'archiviazione del database nel cloud. Per ottenere migliori prestazioni, distribuire l'applicazione a data center che soddisfano i due criteri indicati di seguito:

  • Maggiore vicinanza alla maggioranza dei client.

  • Maggiore vicinanza al data center in cui sono ospitate le istanze dell'account di archiviazione o del database SQL di Azure.

Tuttavia, se esistono problematiche giurisdizionali o legali riguardanti i dati e la relativa collocazione, si consiglia di scegliere un data center più vicino all'azienda o ai dati. Per altre informazioni, vedere Considerazioni sulle prestazioni con il database SQL di Azure.

Prima di iniziare a implementare il servizio cloud di Azure, è necessario acquistare una sottoscrizione di Microsoft Azure. Per altre informazioni, visitare il sito Web di Microsoft Azure. A questo punto è necessario preparare l'ambiente di sviluppo. Attualmente Microsoft fornisce SDK specifici del linguaggio per .NET, Java, PHP, Node.js e Python e Ruby. Per informazioni aggiornate sulle piattaforme e i linguaggi di programmazione supportati, vedere la pagina relativa al centro di documentazione di Microsoft Azure. È inoltre possibile usare l'area download degli SDK e degli strumenti di Azure per accedere a tutte le librerie client, agli SDK e agli strumenti da riga di comando di Azure.

Microsoft Azure fornisce anche il servizio Siti Web di Azure per l'hosting di siti e applicazioni Web. Siti Web di Azure è una soluzione di piattaforma distribuita come servizio (PaaS, Platform as a Service) che consente di distribuire e ridimensionare applicazioni Web in pochi secondi. Per altre informazioni, vedere la pagina relativa a Siti Web di Azure.

Per abilitare la connessione a origini dati relazionali da parte di applicazioni client eseguite su differenti piattaforme, Microsoft ha scelto ODBC, l'API di connettività client standard per le applicazioni client native che eseguono la connessione al database SQL di Azure (database SQL). Il provider OLE DB di SQL Server Native Client verrà fornito per l'ultima volta con SQL Server 2012 e non sarà supportato nel database SQL.

Per la scrittura di applicazioni in Windows o Azure, usare .NET Data Provider per SQL Server. In alternativa, è possibile usare il driver ODBC di SQL Server Native Client fornito con SQL Server 2008 R2 o versioni successive. Si consiglia di adottare ODBC per lo sviluppo di versioni nuove e future dell'applicazione. Per quanto riguarda le applicazioni esistenti che usano OLE DB, si consiglia di eseguire la migrazione di tali applicazioni a ODBC per i progetti futuri. Per altre informazioni sulla conversione di un'applicazione OLE DB in un'applicazione ODBC, vedere la pagina relativa alla conversione di applicazioni SQL Server da OLE DB in ODBC. Per informazioni del team ADO.NET sull'inclusione di OLE DB tra gli elementi deprecati, vedere la pagina relativa all'annuncio dell'inclusione del provider OLE DB di Microsoft SQL Server tra le API deprecate.

Come nel caso di qualsiasi altro prodotto software, è necessario progettare l'applicazione in modo che sia in grado di gestire disponibilità, ripristino di emergenza e sicurezza in un ambiente cloud distribuito e multi-tenant. Per altre informazioni, vedere Considerazioni sulla disponibilità elevata e sul ripristino di emergenza con il database SQL di Azure e la pagina contenente informazioni aggiuntive sulla sicurezza di Azure. Si consiglia di verificare la conformità ai requisiti di sicurezza all'inizio del processo di sviluppo del software, prima di caricare l'applicazione in Azure.

Per altre informazioni sullo sviluppo di applicazioni in Azure, vedere Sviluppo di applicazioni Azure e Operatore alternativo: informazioni aggiuntive per architetture cloud resilienti.

Azure è una piattaforma cloud multi-tenant, dinamica e scalabile. Per questo motivo, quando si progetta un'applicazione è opportuno prendere in considerazione tecniche di monitoraggio e diagnostica specifiche dell'ambiente cloud. È consigliabile che il monitoraggio e la diagnostica vengano effettuati all'inizio del ciclo di vita di sviluppo del software. È inoltre opportuno valutare le tecniche di monitoraggio e diagnostica esistenti per stabilire se, dopo la distribuzione dell'applicazione nel cloud, saranno in grado di fornire un servizio appropriato. Ad esempio, per un'applicazione tramite cui vengono generati file di log grandi è possibile che sia richiesta un'ottimizzazione nelle relative impostazioni di diagnostica e registrazione. L'ottimizzazione di queste impostazioni assicura la generazione di un numero ridotto di file di log, che possono essere esaminati o scaricati rapidamente nell'ambiente locale per ulteriori analisi.

Nell'elenco seguente vengono forniti alcuni strumenti e tecniche di risoluzione dei problemi per Azure:

  • Diagnostica Azure: raccoglie operazioni e dati di diagnostica dal servizio Azure e registra i dati di diagnostica provenienti da diverse origini dati, ad esempio:

      • Log IIS.

      • Log dell'infrastruttura di Diagnostica Azure.

      • Registri eventi di Windows.

      • Contatori delle prestazioni.

      • Dump di arresto anomalo.

      • Log degli errori personalizzati.

      È possibile configurare gli intervalli di registrazione per Diagnostica Azure. Le informazioni raccolte vengono archiviate in modo permanente nelle tabelle e nei blob di Azure per scopi di analisi. Per altre informazioni, vedere Raccogliere dati di registrazione utilizzando Diagnostica Azure.

  • System Center Azure Management Pack (MP): Azure Monitoring Management Pack consente di monitorare la disponibilità e le prestazioni delle applicazioni eseguite in Azure. Per altre informazioni, vedere la pagina relativa alla guida di Monitoring Pack per le applicazioni Azure. Si consiglia di usare Diagnostica Azure e il System Center Azure Management Pack. Per informazioni aggiuntive, fare riferimento al video relativo a System Center 2012: gestione di applicazioni tra cloud pubblici e privati.

  • Analisi archiviazione di Azure: consente di registrare e generare dati di metrica per un account di archiviazione di Azure. È possibile utilizzare questi dati per tenere traccia delle richieste, analizzare le tendenze di utilizzo ed eseguire la diagnostica dei problemi relativi all'account di archiviazione. Per altre informazioni, vedere la pagina Analisi archiviazione.

  • Gestione della connessione al database SQL: vengono gestiti i codici di errore implementando la logica di ripetizione tentativi nell'applicazione. Per altre informazioni, leggere Gestione delle risorse nel database SQL di Azure.

  • Cmdlet di Azure PowerShell: consentono di sfogliare, configurare e gestire i servizi cloud e di archiviazione dati di Azure direttamente da PowerShell. Questi strumenti possono essere utili quando si sviluppano e si testano applicazioni in cui vengono utilizzati i servizi di Azure. Per altre informazioni, vedere Guida di riferimento per i cmdlet di Azure.

  • Soluzione di riferimento per lo sviluppo di servizi cloud: questa applicazione mostra come sviluppare servizi di Azure supportati da database. La dimostrazione è basata su nozioni e tecniche che il team CAT (Customer Advisory Team) di Microsoft Azure ha appreso lavorando con clienti del mondo reale. Le informazioni disponibili consentono di costruire i principali blocchi predefiniti per scalare orizzontalmente le applicazioni Azure, inclusi la raccolta e l'uso di dati di telemetria nell'applicazione. La soluzione di riferimento si trova nella pagina relativa alle nozioni di base per lo sviluppo di servizi cloud in Microsoft Azure. Altre informazioni sono disponibili negli articoli dettagliati della TechNet Wiki, nella pagina relativa alle nozioni di base per lo sviluppo di servizi cloud.

Come per qualsiasi altra applicazione, anche per il servizio cloud di Azure è necessario eseguire test dettagliati prima del passaggio alla fase di produzione. È necessario testare la funzionalità, l'esecuzione completa, le prestazioni, la scalabilità, la sicurezza e così via.

Per informazioni normative dettagliate, vedere la pagina relativa alle procedure consigliate di risoluzione dei problemi per lo sviluppo di applicazioni Azure. Per informazioni aggiuntive, vedere Raccogliere dati di registrazione utilizzando Diagnostica Azure e Test, gestione, monitoraggio e ottimizzazione delle applicazioni Azure.

Azure offre diverse funzionalità di rete per supportare l'integrazione delle applicazioni esistenti con il cloud e la gestione del traffico di rete. Di seguito sono riportati i principali componenti di rete e connettività disponibili in Azure:

  • Code di archiviazione di Azure: sono usate per archiviare i messaggi accessibili da un client e offrire una messaggistica affidabile tra le istanze del ruolo. Per altre informazioni, vedere le pagine relative all'uso dell'archiviazione delle code da .NET e l'argomento Archiviazione.

  • Service Bus di Azure: si consiglia di usare Service Bus di Azure per qualsiasi comunicazione tra servizi all'interno di Azure. Usare Service Bus di Azure anche per mantenere l'integrazione tra i server locali e Azure. Service Bus di Azure offre funzionalità di messaggistica e di inoltro nel livello applicativo. Service Bus di Azure offre un'infrastruttura di comunicazione basata sul cloud che supporta un servizio di messaggistica sicuro in una rete pubblica, con un semplice spazio dei nomi unificato come https://myhostname.servicebus.windows.net. Service Bus di Azure supporta i modelli di programmazione seguenti: .NET API, REST API e WCF. Per altre informazioni, vedere la pagina relativa alla documentazione di Service Bus di Azure e l'articolo Analogie e differenze tra le code di Azure e le code di Service Bus.

  • Azure Active Directory: si consiglia di usare Azure Active Directory per fornire la Scalabilità orizzontale di database SQL di Azure e un controllo di accesso basato su attestazioni per i servizi Web basati sul cloud e per le applicazioni dell'utente finale. Azure Active Directory è una soluzione cloud completa per la gestione delle identità e dell'accesso. Combina infatti servizi directory di importanza strategica, governance avanzata delle identità e gestione della sicurezza e dell'accesso alle applicazioni. Azure AD offre inoltre agli sviluppatori una piattaforma di gestione delle identità per consentire il controllo dell'accesso alle applicazioni in base a regole e criteri centralizzati. Il servizio assicura infine l'integrazione con Windows Identity Foundation (WIF). Per altre informazioni, vedere le pagine relative all'autenticazione di utenti Web mediante Access Control di Active Directory di Azure e alla documentazione di Azure Active Directory.

  • Gestione traffico di Azure: consente di bilanciare il carico di traffico in ingresso tra più servizi di Azure ospitati. È possibile bilanciare il carico per servizi in esecuzione nello stesso data center o in data center dislocati in diverse parti del mondo. La gestione efficiente del traffico permette di assicurare un livello elevato di prestazioni, disponibilità e resilienza delle applicazioni in uso. Per altre informazioni, vedere la pagina relativa alla documentazione di Gestione traffico di Azure .

  • Rete di distribuzione dei contenuti di Azure: la Rete di distribuzione dei contenuti (rete CDN) di Azure offre agli sviluppatori una soluzione globale per la memorizzazione di contenuto nella cache. È possibile memorizzare il contenuto nella cache in ubicazioni più vicine ai clienti, in modo da consentire un uso ottimale dell'applicazione. Tramite la rete CDN vengono memorizzati nella cache i blob di Azure e l'output di contenuti statici di istanze di calcolo in percorsi posizionati in modo strategico, per fornire la massima larghezza di banda per il recapito dei contenuti agli utenti. È possibile abilitare il recapito della rete CDN per i provider di contenuti usando il portale di gestione della piattaforma Azure. Per altre informazioni, vedere la pagina relativa alla documentazione della rete CDN di Azure.

  • Rete virtuale di Azure: consente di creare una sezione di Azure logicamente isolata. È quindi possibile eseguire la connessione sicura al data center locale o a una singola macchina client tramite IPSec. La rete virtuale consente di sfruttare l'infrastruttura scalabile su richiesta di Azure, offrendo connettività ai dati e alle applicazioni locali, inclusi i sistemi eseguiti su Windows Server, mainframe e UNIX. Per altre informazioni, vedere la pagina relativa alla documentazione della rete virtuale di Azure.

  • Azure ExpressRoute: consente di creare connessioni private tra i data center di Azure e l'infrastruttura esistente a livello locale o in un ambiente di condivisione della sede. Le connessioni ExpressRoute non si servono della rete Web pubblica, ma offrono un livello di sicurezza superiore, maggiore affidabilità, velocità più elevate e minori latenze rispetto alle connessioni Internet tradizionali. Con ExpressRoute è possibile stabilire connessioni ad Azure presso un'ubicazione ExpressRoute (sede del provider di Exchange) o connettersi direttamente ad Azure da una rete WAN esistente, ad esempio una VPN MPLS fornita da un provider di servizi di rete. Per altre informazioni, vedere l'articolo ExpressRoute - Connessione privata più veloce a Azure e la pagina relativa alla documentazione di ExpressRoute.

Per altre informazioni, vedere Servizi di rete.

Dopo aver completato lo sviluppo del servizio cloud o dell'applicazione, è possibile creare il relativo pacchetto, compilarlo e caricarlo in Azure. Sono presenti quattro scenari di distribuzione diversi:

  • Nuova distribuzione

  • Modifica della configurazione

  • Aggiornamento del codice incrementale

  • Aggiornamento principale

Per altre informazioni, vedere la pagina relativa alla gestione di servizi cloud nonché gli articoli Gestire le distribuzioni in Azure e Gestione dei servizi.

È possibile configurare più distribuzioni usando una sola sottoscrizione Azure per supportare lo sviluppo, il test, il controllo di qualità, la gestione temporanea e così via. Azure consente anche di configurare un unico account per l'accesso a più sottoscrizioni. Per l'applicazione Azure sviluppata è inoltre possibile creare ambienti di sviluppo e test separati, ciascuno con le proprie sottoscrizioni. In questo caso, si consiglia di distribuire il servizio innanzitutto in una sottoscrizione di test e, successivamente, in una sottoscrizione di produzione. Quando il servizio può essere pubblicato, è possibile spostarlo nell'ambiente di produzione. Dopo aver distribuito il servizio cloud in una sottoscrizione di produzione, è possibile utilizzare l'ambiente di gestione temporanea per il test continuo.

Azure consente di configurare l'applicazione per la scalabilità verticale automatica, in modo da soddisfare le esigenze dell'azienda e contenere i costi. Per abilitare questa funzionalità, usare le regole e le pianificazioni di “scalabilità automatica”. Per altre informazioni, vedere la pagina relativa al ridimensionamento di un'applicazione.

Vedere anche

Mostra:
© 2014 Microsoft