Modelli di applicazione e strategie di sviluppo per SQL Server in Macchine virtuali di AzureApplication Patterns and Development Strategies for SQL Server in Azure Virtual Machines

Nota

Azure offre due modelli di distribuzione per creare e usare le risorse: Gestione risorse e la distribuzione classica.Azure has two different deployment models for creating and working with resources: Resource Manager and classic. In questo articolo viene illustrato l'utilizzo di entrambi i modelli, ma Microsoft indica che le distribuzioni più nuove utilizzano il modello di gestione delle risorse.This article covers using both models, but Microsoft recommends that most new deployments use the Resource Manager model.

Riepilogo:Summary:

Determinare quale modello o quali modelli dell'applicazione usare per le applicazioni basate su SQL Server in ambiente Azure è un'importante decisione di progettazione e richiede una conoscenza approfondita del funzionamento congiunto di SQL Server con ciascun componente dell'infrastruttura.Determining which application pattern or patterns to use for your SQL-Server-based applications in Azure environment is an important design decision and it requires a solid understanding of how SQL Server and each infrastructure component of Azure work together. Con i servizi di infrastruttura di Azure è possibile eseguire facilmente la migrazione, la manutenzione e il monitoraggio delle applicazioni SQL Server esistenti compilate nella piattaforma Windows Server in Macchine virtuali di Azure.With SQL Server in Azure Infrastructure Services, you can easily migrate, maintain, and monitor your existing SQL Server applications built-on Windows Server to virtual machines in Azure.

Lo scopo di questo articolo è di fornire agli architetti e agli sviluppatori soluzioni una base solida per l'architettura e il design efficace delle applicazioni, che potranno seguire nella migrazione di applicazioni esistenti in Azure oltre che nello sviluppo di nuove applicazioni in Azure.The goal of this article is to provide solution architects and developers a foundation for good application architecture and design, which they can follow when migrating existing applications to Azure as well as developing new applications in Azure.

Per ogni modello di applicazione sono disponibili uno scenario locale, la rispettiva soluzione abilitata per il cloud e i consigli tecnici correlati.For each application pattern, you will find an on-premises scenario, its respective cloud-enabled solution, and the related technical recommendations. L'articolo discute inoltre strategie di sviluppo specifiche di Azure che consentono di progettare correttamente le applicazioni.In addition, the article discusses Azure-specific development strategies so that you can design your applications correctly. A causa dell'elevato numero di possibili modelli di applicazione, è consigliabile che gli architetti e gli sviluppatori scelgano i modelli più appropriati per i relativi utenti e applicazioni.Due to the many possible application patterns, it’s recommended that architects and developers should choose the most appropriate pattern for their applications and users.

Collaboratori tecnici: Luis Carlos Vargas Herring, Madhan Arumugam RamakrishnanTechnical Contributors: Luis Carlos Vargas Herring, Madhan Arumugam Ramakrishnan

Revisori tecnici: Corey Sanders, Drew McDaniel, Narayan Annamalai, Nir Mashkowski, Sanjay Mishra, Silvano Coriani, Stefan Schackow, Tim Hickey, Tim Wieman, Xin JinTechnical Reviewers: Corey Sanders, Drew McDaniel, Narayan Annamalai, Nir Mashkowski, Sanjay Mishra, Silvano Coriani, Stefan Schackow, Tim Hickey, Tim Wieman, Xin Jin

IntroduzioneIntroduction

È possibile sviluppare numerosi tipi di applicazioni di più livelli separando i componenti dei diversi livelli di applicazione in computer diversi e in componenti separati.You can develop many types of n-tier applications by separating the components of the different application layers on different machines as well as in separate components. Ad esempio, è possibile inserire i componenti dell'applicazione client e le regole di business in una macchina, i componenti del livello Web front-end e del livello di accesso ai dati in un'altra macchina e un livello di database back-end in una macchina diversa.For example, you can place the client application and business rules components in one machine, front-end web tier and data access tier components in another machine, and a back-end database tier in another machine. Questo tipo di strutturazione contribuisce a isolare i diversi livelli.This kind of structuring helps isolate each tier from each other. Se si cambia la provenienza dei dati, non sarà necessario modificare l'applicazione client o Web, ma solo i componenti del livello di accesso ai dati.If you change where data comes from, you don’t need to change the client or web application but only the data access tier components.

Una tipica applicazione a più livelli include il livello presentazione, il livello business e il livello dati:A typical n-tier application includes the presentation tier, the business tier, and the data tier:

LivelloTier DescriptionDescription
PresentazionePresentation Il livello presentazione (livello Web, livello front-end) è il livello in cui gli utenti interagiscono con un'applicazione.The presentation tier (web tier, front-end tier) is the layer in which users interact with an application.
BusinessBusiness Il livello business (livello intermedio) è quello usato dal livello presentazione e dal livello dati per comunicare tra loro e include la funzionalità centrale del sistema.The business tier (middle tier) is the layer that the presentation tier and the data tier use to communicate with each other and includes the core functionality of the system.
DatiData Il livello dati è fondamentalmente il server su cui vengono archiviati i dati di un'applicazione (ad esempio, un server che esegue SQL Server).The data tier is basically the server that stores an application's data (for example, a server running SQL Server).

I livelli di applicazione rappresentano i raggruppamenti logici della funzionalità e dei componenti in un'applicazione, mentre i livelli rappresentano la distribuzione fisica delle funzionalità e dei componenti su server fisici, computer, reti o posizioni remote separate.Application layers describe the logical groupings of the functionality and components in an application; whereas tiers describe the physical distribution of the functionality and components on separate physical servers, computers, networks, or remote locations. I livelli di un'applicazione possono risiedere sullo stesso computer fisico (lo stesso livello) o possono essere distribuiti su computer separati (più livelli) e i componenti in ogni livello comunicano con i componenti in altri livelli attraverso interfacce ben definite.The layers of an application may reside on the same physical computer (the same tier) or may be distributed over separate computers (n-tier), and the components in each layer communicate with components in other layers through well-defined interfaces. Si pensi al termine "livello" come a modelli di distribuzione fisica, ad esempio due livelli, tre livelli e più livelli.You can think of the term tier as referring to physical distribution patterns such as two-tier, three-tier, and n-tier. Un modello di applicazione a 2 livelli contiene due livelli di applicazione: server applicazioni e server di database.A 2-tier application pattern contains two application tiers: application server and database server. La comunicazione diretta avviene tra il server applicazioni e il server di database.The direct communication happens between the application server and the database server. Il server applicazioni contiene componenti sia del livello Web sia del livello business.The application server contains both web-tier and business-tier components. Un modello di applicazione a 3 livellicontiene tre livelli di applicazione: server Web, server applicazioni, che contiene il livello di logica di business e/o i componenti di accesso ai dati del livello business, e infine il server di database.In 3-tier application pattern, there are three application tiers: web server, application server, which contains the business logic tier and/or business tier data access components, and the database server. La comunicazione tra il server Web e il server di database avviene tramite il server applicazioni.The communication between the web server and the database server happens over the application server. Per informazioni approfondite sui livelli di applicazione e sui livelli, vedere la Guida all'architettura delle applicazioni Microsoft.For detailed information on application layers and tiers, see Microsoft Application Architecture Guide.

Prima di iniziare a leggere questo articolo occorre conoscere i concetti fondamentali di SQL Server e di Azure.Before you start reading this article, you should have knowledge on the fundamental concepts of SQL Server and Azure. Per altre informazioni, vedere la documentazione online di SQL Server, SQL Server in Macchine virtuali di Azure e Azure.com.For information, see SQL Server Books Online, SQL Server in Azure Virtual Machines and Azure.com.

Questo articolo descrive diversi modelli di applicazione che possono essere idonei alle applicazioni semplici nonché alle applicazioni aziendali altamente complesse.This article describes several application patterns that can be suitable for your simple applications as well as the highly complex enterprise applications. Prima di descrivere nel dettaglio ogni modello, è consigliabile acquisire familiarità con i servizi di archiviazione dei dati disponibili in Azure, ad esempio Archiviazione di Azure, Database SQL di Azure e SQL Server in una macchina virtuale di Azure.Before detailing each pattern, we recommend that you should familiarize yourself with the available data storage services in Azure, such as Azure Storage, Azure SQL Database, and SQL Server in an Azure Virtual Machine. Per prendere le migliori decisioni in termini di progettazione delle applicazioni, è necessario comprendere chiaramente quale servizio di archiviazione dei dati usare e quando usarlo.To make the best design decisions for your applications, understand when to use which data storage service clearly.

È consigliabile scegliere SQL Server in una macchina virtuale di Azure nelle condizioni seguenti:Choose SQL Server in an Azure Virtual Machine, when:

  • È necessario controllare SQL Server e Windows,You need control on SQL Server and Windows. ad esempio la versione, determinati aggiornamenti rapidi e la configurazione delle prestazioni di SQL Server.For example, this might include the SQL Server version, special hotfixes, performance configuration, etc.
  • È necessario disporre di una piena compatibilità con SQL Server installato in locale e si desidera spostare le applicazioni esistenti in Azure senza doverle convertire.You need a full compatibility with SQL Server on-premises and want to move existing applications to Azure as-is.
  • Si desidera sfruttare le funzionalità dell'ambiente Azure, ma il database SQL di Azure non supporta tutte le funzionalità richieste dall'applicazione.You want to leverage the capabilities of the Azure environment but Azure SQL Database does not support all the features that your application requires. Queste funzionalità possono includere gli elementi seguenti:This could include the following areas:

1 livello (semplice): singola macchina virtuale1-tier (simple): single virtual machine

In questo modello di applicazione l'applicazione e il database SQL Server vengono distribuiti a una macchina virtuale autonoma in Azure.In this application pattern, you deploy your SQL Server application and database to a standalone virtual machine in Azure. La stessa macchina virtuale contiene l'applicazione client o Web, i componenti business, il livello di accesso ai dati e il server di database.The same virtual machine contains your client/web application, business components, data access layer, and the database server. I codici di presentazione, business e accesso ai dati sono logicamente separati, ma fisicamente situati in un singolo server.The presentation, business, and data access code are logically separated but are physically located in a single-server machine. Gran parte dei clienti inizia con questo modello di applicazione per poi scalare aggiungendo altri ruoli Web o macchine virtuali al proprio sistema.Most customers start with this application pattern and then, they scale out by adding more web roles or virtual machines to their system.

Questo modello di applicazione è utile nei casi seguenti:This application pattern is useful when:

  • Si desidera eseguire una semplice migrazione alla piattaforma Azure per valutare se questa risponde o meno ai requisiti dell'applicazione.You want to perform a simple migration to Azure platform to evaluate whether the platform answers your application’s requirements or not.
  • Si desidera conservare tutti i livelli di applicazione ospitati sulla stessa macchina virtuale nello stesso data center di Azure allo scopo di ridurre la latenza tra livelli.You want to keep all the application tiers hosted in the same virtual machine in the same Azure data center to reduce the latency between tiers.
  • Si desidera eseguire rapidamente il provisioning degli ambienti di sviluppo e test per brevi periodi di tempo.You want to quickly provision development and test environments for short periods of time.
  • Si desidera eseguire test di stress per diversi livelli di carico di lavoro ma, allo stesso tempo, non si desidera essere proprietari di molte macchine fisiche di cui eseguire la manutenzione per tutto il tempo.You want to perform stress testing for varying workload levels but at the same time you do not want to own and maintain many physical machines all the time.

Il diagramma seguente illustra un semplice scenario locale e il modo in cui è possibile distribuire la soluzione abilitata per il cloud su una singola macchina virtuale in Azure.The following diagram demonstrates a simple on-premises scenario and how you can deploy its cloud enabled solution in a single virtual machine in Azure.

Modello dell'applicazione a 1 livello

La distribuzione del livello business (componenti logica di business e accesso ai dati) sullo stesso livello fisico del livello presentazione può massimizzare le prestazioni dell'applicazione, a meno che non si ricorra a un livello separato per evitare eventuali problemi relativi alla scalabilità o alla sicurezza.Deploying the business layer (business logic and data access components) on the same physical tier as the presentation layer can maximize application performance, unless you must use a separate tier due to scalability or security concerns.

Poiché è molto comune iniziare con questo modello, può essere utile consultare l'articolo seguente per informazioni sulla migrazione dei dati in una macchina virtuale di SQL Server: Migrazione di un database a SQL Server su una macchina virtuale di Azure.Since this is a very common pattern to start with, you might find the following article on migration useful for moving your data to your SQL Server VM: Migrating a Database to SQL Server on an Azure VM.

3 livelli (semplice): più macchine virtuali3-tier (simple): multiple virtual machines

In questo modello di applicazione un'applicazione a 3 livelli viene distribuita in Azure inserendo ogni livello dell'applicazione in una diversa macchina virtuale.In this application pattern, you deploy a 3-tier application in Azure by placing each application tier in a different virtual machine. Questo modello fornisce un ambiente flessibile per semplici scenari di scalabilità verticale e orizzontale.This provides a flexible environment for an easy scale-up and scale-out scenarios. Quando una macchina virtuale contiene l'applicazione client o Web, un'altra ospita i componenti business e un'altra ospita il server di database.When one virtual machine contains your client/web application, the other one hosts your business components, and the other one hosts the database server.

Questo modello di applicazione è utile nei casi seguenti:This application pattern is useful when:

  • Si desidera eseguire la migrazione di applicazioni di database complesse in Macchine virtuali di Azure.You want to perform a migration of complex database applications to Azure Virtual Machines.
  • Si desidera che livelli di applicazioni diversi siano ospitati in aree diverse.You want different application tiers to be hosted in different regions. Ad esempio, è possibile che siano presenti database condivisi e distribuiti a più aree a scopo di creazione di report.For example, you might have shared databases that are deployed to multiple regions for reporting purposes.
  • Si desidera spostare le applicazioni aziendali dalle piattaforme virtualizzate locali in Macchine virtuali di Azure.You want to move enterprise applications from on-premises virtualized platforms to Azure Virtual Machines. Per una discussione dettagliata sulle applicazioni aziendali, vedere il relativo argomento.For a detailed discussion on enterprise applications, see What is an Enterprise Application.
  • Si desidera eseguire rapidamente il provisioning degli ambienti di sviluppo e test per brevi periodi di tempo.You want to quickly provision development and test environments for short periods of time.
  • Si desidera eseguire test di stress per diversi livelli di carico di lavoro ma, allo stesso tempo, non si desidera essere proprietari di molte macchine fisiche di cui eseguire la manutenzione per tutto il tempo.You want to perform stress testing for varying workload levels but at the same time you do not want to own and maintain many physical machines all the time.

Il diagramma seguente illustra come distribuire una semplice applicazione a 3 livelli in Azure inserendo ogni livello di applicazione in una diversa macchina virtuale.The following diagram demonstrates how you can place a simple 3-tier application in Azure by placing each application tier in a different virtual machine.

modello di applicazione a 3 livelli

In questo modello di applicazione è presente una sola macchina virtuale in ogni livello.In this application pattern, there is only one virtual machine (VM) in each tier. Se si dispone di più macchine virtuali in Azure, si consiglia di configurare una rete virtuale.If you have multiple VMs in Azure, we recommend that you set up a virtual network. rete virtuale di Azure crea un limite di sicurezza attendibile e consente alle macchine virtuali di comunicare tra loro tramite un indirizzo IP privato.Azure Virtual Network creates a trusted security boundary and also allows VMs to communicate among themselves over the private IP address. A tale scopo, assicurarsi sempre che tutte le connessioni Internet siano indirizzate solo al livello presentazione.In addition, always make sure that all Internet connections only go to the presentation tier. Quando si segue questo modello di applicazione, è necessario gestire le regole del gruppo di sicurezza di rete per controllare l'accesso.When following this application pattern, manage the network security group rules to control access. Per altre informazioni, vedere Consentire l'accesso esterno alla VM mediante il portale di Azure.For more information, see Allow external access to your VM using the Azure portal.

Nel diagramma i protocolli Internet possono essere TCP, UDP, HTTP o HTTPS.In the diagram, Internet Protocols can be TCP, UDP, HTTP, or HTTPS.

Nota

La configurazione di una rete virtuale in Azure è gratuita.Setting up a virtual network in Azure is free of charge. Verrà tuttavia addebitata una tariffa per il gateway VPN a cui si connette localmente.However, you are charged for the VPN gateway that connects to on-premises. Questo addebito dipende dalla lunghezza del periodo di tempo in cui viene fornita e resa disponibile la connessione.This charge is based on the amount of time that connection is provisioned and available.

2 e 3 livelli con scalabilità orizzontale del livello presentazione2-tier and 3-tier with presentation tier scale-out

In questo modello di applicazione un'applicazione a 2 o a 3 livelli viene distribuita in Macchine virtuali di Azure inserendo ogni livello di applicazione in una diversa macchina virtuale.In this application pattern, you deploy 2-tier or 3-tier database application to Azure Virtual Machines by placing each application tier in a different virtual machine. È anche possibile scalare orizzontalmente il livello presentazione a causa del maggior volume di richieste client in entrata.In addition, you scale out the presentation tier due to increased volume of incoming client requests.

Questo modello di applicazione è utile nei casi seguenti:This application pattern is useful when:

  • Si desidera spostare le applicazioni aziendali dalle piattaforme virtualizzate locali in Macchine virtuali di Azure.You want to move enterprise applications from on-premises virtualized platforms to Azure Virtual Machines.
  • È opportuno scalare orizzontalmente il livello presentazione a causa del maggior volume di richieste client in entrata.You want to scale out the presentation tier due to increased volume of incoming client requests.
  • Si desidera eseguire rapidamente il provisioning degli ambienti di sviluppo e test per brevi periodi di tempo.You want to quickly provision development and test environments for short periods of time.
  • Si desidera eseguire test di stress per diversi livelli di carico di lavoro ma, allo stesso tempo, non si desidera essere proprietari di molte macchine fisiche di cui eseguire la manutenzione per tutto il tempo.You want to perform stress testing for varying workload levels but at the same time you do not want to own and maintain many physical machines all the time.
  • Si desidera essere proprietari di un ambiente di infrastrutture che sia possibile scalare verticalmente su richiesta.You want to own an infrastructure environment that can scale up and down on demand.

Il diagramma seguente illustra come inserire i livelli di applicazione in più macchine virtuali in Azure scalando orizzontalmente il livello presentazione a causa del maggior volume di richieste client in entrata.The following diagram demonstrates how you can place the application tiers in multiple virtual machines in Azure by scaling out the presentation tier due to increased volume of incoming client requests. Come osservato nel diagramma, il servizio di bilanciamento del carico di Azure è responsabile della distribuzione del traffico tra più macchine virtuali e determina inoltre il server Web a cui connettersi.As seen in the diagram, Azure Load Balancer is responsible for distributing traffic across multiple virtual machines and also determining which web server to connect to. La presenza di più istanze di server Web dietro il servizio di bilanciamento del carico assicura la disponibilità elevata del livello presentazione.Having multiple instances of the web servers behind a load balancer ensures the high availability of the presentation tier.

Modello dell'applicazione: scalabilità orizzontale del livello presentazione

Procedure consigliate per i modelli a 2, 3 o più livelli con più macchine virtuali in un solo livelloBest practices for 2-tier, 3-tier, or n-tier patterns that have multiple VMs in one tier

Si consiglia di collocare le macchine virtuali appartenenti allo stesso livello nello stesso servizio cloud e nello stesso set di disponibilità.It’s recommended that you place the virtual machines that belong to the same tier in the same cloud service and in the same the availability set. Ad esempio, inserire un set di server Web in CloudService1 e AvailabilitySet1 e un set di server di database in CloudService2 e AvailabilitySet2.For example, place a set of web servers in CloudService1 and AvailabilitySet1 and a set of database servers in CloudService2 and AvailabilitySet2. Un set di disponibilità in Azure consente di collocare i nodi a disponibilità elevata in domini di errore e domini di aggiornamento separati.An availability set in Azure enables you to place the high availability nodes into separate fault domains and upgrade domains.

Per sfruttare più istanze di macchine virtuali di un livello è necessario configurare il servizio di bilanciamento del carico di Azure tra livelli di applicazione.To leverage multiple VM instances of a tier, you need to configure Azure Load Balancer between application tiers. Per configurare il servizio di bilanciamento del carico in ogni livello, creare un endpoint con carico bilanciato separatamente sulle macchine virtuali di ogni livello.To configure Load Balancer in each tier, create a load-balanced endpoint on each tier’s VMs separately. Per un livello specifico, creare prima le macchine virtuali nello stesso servizio cloud:For a specific tier, first create VMs in the same cloud service. questo garantisce che abbiano lo stesso indirizzo IP virtuale pubblico.This ensures that they have the same public Virtual IP address. Creare quindi un endpoint su una delle macchine virtuali su tale livelloNext, create an endpoint on one of the virtual machines on that tier. e assegnarlo ad altre macchine virtuali sullo stesso livello per il servizio di bilanciamento del carico.Then, assign the same endpoint to the other virtual machines on that tier for load balancing. Creando un set con bilanciamento del carico si distribuisce il traffico tra più macchine virtuali e si consente al servizio di bilanciamento del carico di determinare a quale nodo connettersi in caso di errore del nodo della macchina virtuale back-end.By creating a load-balanced set, you distribute traffic across multiple virtual machines and also allow the Load Balancer to determine which node to connect when a backend VM node fails. Ad esempio, la presenza di più istanze di server Web dietro il servizio di bilanciamento del carico assicura la disponibilità elevata del livello presentazione.For example, having multiple instances of the web servers behind a load balancer ensures the high availability of the presentation tier.

Come procedura consigliata, assicurarsi sempre che tutte le connessioni Internet siano indirizzate prima al livello presentazione.As a best practice, always make sure that all internet connections first go to the presentation tier. Il livello presentazione accede al livello business, che a sua volta accede al livello dati.The presentation layer accesses the business tier, and then the business tier accesses the data tier. Per altre informazioni su come consentire l'accesso al livello di presentazione, vedere Consentire l'accesso esterno alla VM mediante il portale di Azure.For more information on how to allow access to the presentation layer, see Allow external access to your VM using the Azure portal.

Si noti che il servizio di bilanciamento del carico in Azure ha un funzionamento simile agli stessi servizi in un ambiente locale.Note that the Load Balancer in Azure works similar to load balancers in an on-premises environment. Per altre informazioni, vedere Bilanciamento del carico per i servizi di infrastruttura di Azure.For more information, see Load balancing for Azure infrastructure services.

Si consiglia inoltre di configurare una rete privata per le macchine virtuali mediante la rete virtuale di Azure,In addition, we recommend that you set up a private network for your virtual machines by using Azure Virtual Network. che consente la comunicazione tra le due reti tramite l'indirizzo IP privato.This allows them to communicate among themselves over the private IP address. Per altre informazioni, vedere rete virtuale di Azure.For more information, see Azure Virtual Network.

2 e 3 livelli con scalabilità orizzontale del livello business2-tier and 3-tier with business tier scale-out

In questo modello di applicazione un'applicazione a 2 o a 3 livelli viene distribuita in Macchine virtuali di Azure inserendo ogni livello di applicazione in una diversa macchina virtuale.In this application pattern, you deploy 2-tier or 3-tier database application to Azure Virtual Machines by placing each application tier in a different virtual machine. Data la complessità dell'applicazione, può essere opportuno distribuire i componenti del server applicazioni a più macchine virtuali.In addition, you might want to distribute the application server components to multiple virtual machines due to the complexity of your application.

Questo modello di applicazione è utile nei casi seguenti:This application pattern is useful when:

  • Si desidera spostare le applicazioni aziendali dalle piattaforme virtualizzate locali in Macchine virtuali di Azure.You want to move enterprise applications from on-premises virtualized platforms to Azure Virtual Machines.
  • Si desidera distribuire i componenti del server applicazioni a più macchine virtuali data la complessità dell'applicazione.You want to distribute the application server components to multiple virtual machines due to the complexity of your application.
  • Si desidera spostare le applicazioni line-of-business locali con elevato contenuto di logica di business in Macchine virtuali di Azure.You want to move business logic heavy on-premises LOB (line-of-business) applications to Azure Virtual Machines. Le applicazioni line-of-business sono un set di applicazioni per computer di importanza critica per la gestione di un'azienda, ad esempio applicazioni di contabilità, risorse umane, retribuzione, gestione della catena di fornitura e pianificazione delle risorse.LOB applications are a set of critical computer applications that are vital to running an enterprise, such as accounting, human resources (HR), payroll, supply chain management, and resource planning applications.
  • Si desidera eseguire rapidamente il provisioning degli ambienti di sviluppo e test per brevi periodi di tempo.You want to quickly provision development and test environments for short periods of time.
  • Si desidera eseguire test di stress per diversi livelli di carico di lavoro ma, allo stesso tempo, non si desidera essere proprietari di molte macchine fisiche di cui eseguire la manutenzione per tutto il tempo.You want to perform stress testing for varying workload levels but at the same time you do not want to own and maintain many physical machines all the time.
  • Si desidera essere proprietari di un ambiente di infrastrutture che sia possibile scalare verticalmente su richiesta.You want to own an infrastructure environment that can scale up and down on demand.

Il diagramma seguente illustra uno scenario locale e la relativa soluzione abilitata per il cloud.The following diagram demonstrates an on-premises scenario and its cloud enabled solution. In questo scenario i livelli di applicazione vengono inseriti in più macchine virtuali in Azure scalando orizzontalmente il livello business, che contiene i componenti del livello di logica di business e di accesso ai dati.In this scenario, you place the application tiers in multiple virtual machines in Azure by scaling out the business tier, which contains the business logic tier and data access components. Come osservato nel diagramma, il servizio di bilanciamento del carico di Azure è responsabile della distribuzione del traffico tra più macchine virtuali e determina inoltre il server Web a cui connettersi.As seen in the diagram, Azure Load Balancer is responsible for distributing traffic across multiple virtual machines and also determining which web server to connect to. La presenza di più istanze di server applicazioni dietro il servizio di bilanciamento del carico assicura la disponibilità elevata del livello business.Having multiple instances of the application servers behind a load balancer ensures the high availability of the business tier. Per altre informazioni, vedere Procedure consigliate per i modelli a 2, 3 o più livelli con più macchine virtuali in un solo livello.For more information, see Best practices for 2-tier, 3-tier, or n-tier application patterns that have multiple virtual machines in one tier.

Modello dell'applicazione con scalabilità orizzontale del livello business

2 e 3 livelli con scalabilità orizzontale e disponibilità elevata e ripristino di emergenza (HADR) dei livelli presentazione e business2-tier and 3-tier with presentation and business tiers scale-out and HADR

In questo modello di applicazione un'applicazione a 2 o a 3 livelli viene distribuita in Macchine virtuali di Azure distribuendo i componenti del livello presentazione (server Web) e del livello business (server applicazioni) a più macchine virtuali.In this application pattern, you deploy 2-tier or 3-tier database application to Azure Virtual Machines by distributing the presentation tier (web server) and the business tier (application server) components to multiple virtual machines. Vengono inoltre implementate soluzioni a disponibilità elevata e di ripristino di emergenza per i propri database in Macchine virtuali di Azure.In addition, you implement high-availability and disaster recovery solutions for your databases in Azure virtual machines.

Questo modello di applicazione è utile nei casi seguenti:This application pattern is useful when:

  • Si desidera spostare applicazioni aziendali dalle piattaforme virtualizzate locali in Azure mediante l'implementazione delle capacità di disponibilità elevata e ripristino di emergenza di SQL Server.You want to move enterprise applications from virtualized platforms on-premises to Azure by implementing SQL Server high availability and disaster recovery capabilities.
  • Si desidera scalare orizzontalmente il livello presentazione e il livello business a causa del maggior volume di richieste client in entrata e della complessità dell'applicazione.You want to scale out the presentation tier and the business tier due to increased volume of incoming client requests and the complexity of your application.
  • Si desidera eseguire rapidamente il provisioning degli ambienti di sviluppo e test per brevi periodi di tempo.You want to quickly provision development and test environments for short periods of time.
  • Si desidera eseguire test di stress per diversi livelli di carico di lavoro ma, allo stesso tempo, non si desidera essere proprietari di molte macchine fisiche di cui eseguire la manutenzione per tutto il tempo.You want to perform stress testing for varying workload levels but at the same time you do not want to own and maintain many physical machines all the time.
  • Si desidera essere proprietari di un ambiente di infrastrutture che sia possibile scalare verticalmente su richiesta.You want to own an infrastructure environment that can scale up and down on demand.

Il diagramma seguente illustra uno scenario locale e la relativa soluzione abilitata per il cloud.The following diagram demonstrates an on-premises scenario and its cloud enabled solution. In questo scenario i componenti del livello presentazione e del livello business vengono scalati orizzontalmente in più macchine virtuali di Azure.In this scenario, you scale out the presentation tier and the business tier components in multiple virtual machines in Azure. Vengono inoltre implementate tecniche a disponibilità elevata e di ripristino di emergenza (HADR) per i database SQL in Azure.In addition, you implement high availability and disaster recovery (HADR) techniques for SQL Server databases in Azure.

L'esecuzione di più copie di un'applicazione in macchine virtuali diverse assicura che si eseguirà il bilanciamento del carico delle richieste tra le diverse macchine virtuali.Running multiple copies of an application in different VMs make sure that you are load balancing requests across them. Quando si hanno più macchine virtuali è necessario assicurarsi che siano tutte accessibili e in esecuzione nello stesso momento.When you have multiple virtual machines, you need to make sure that all your VMs are accessible and running at one point in time. Se si configura il bilanciamento del carico, Azure Load Balancer terrà traccia dell'integrità delle VM, dirigendo correttamente le chiamate in entrata ai nodi funzionanti della VM.If you configure load balancing, Azure Load Balancer tracks the health of VMs and directs incoming calls to the healthy functioning VM nodes properly. Per informazioni su come configurare il bilanciamento del carico delle macchine virtuali, vedere Bilanciamento del carico per i servizi di infrastruttura di Azure.For information on how to set up load balancing of the virtual machines, see Load balancing for Azure infrastructure services. La presenza di più istanze di server Web e applicazioni dietro il servizio di bilanciamento del carico assicura la disponibilità elevata del livello presentazione e business.Having multiple instances of web and application servers behind a load balancer ensures the high availability of the presentation and business tiers.

Scalabilità orizzontale e disponibilità elevata

Procedure consigliate per i modelli di applicazione che richiedono disponibilità elevata e ripristino di emergenza (HADR) per SQL ServerBest practices for application patterns requiring SQL HADR

Quando si configurano le soluzioni a disponibilità elevata e di ripristino di emergenza per SQL Server in Macchine virtuali di Azure, la configurazione di una rete virtuale con Rete virtuale di Azure è obbligatoria.When you set up SQL Server high availability and disaster recovery solutions in Azure Virtual Machines, setting up a virtual network for your virtual machines using Azure Virtual Network is mandatory. Le macchine virtuali nell'ambito di una rete virtuale disporranno di un indirizzo IP privato stabile anche dopo un'interruzione del servizio. In tal modo sarà possibile evitare i tempi di aggiornamento richiesti per la risoluzione dei nomi DNS.Virtual machines within a Virtual Network will have a stable private IP address even after a service downtime, thus you can avoid the update time required for DNS name resolution. La rete virtuale consente inoltre di estendere la propria rete locale ad Azure, creando un limite di sicurezza attendibile.In addition, the virtual network allows you to extend your on-premises network to Azure and creates a trusted security boundary. Se l'applicazione è caratterizzata da limitazioni di dominio aziendale, ad esempio l'autenticazione Windows o Active Directory, la configurazione della Rete virtuale di Azure è obbligatoria.For example, if your application has corporate domain restrictions (such as, Windows authentication, Active Directory), setting up Azure Virtual Network is necessary.

La maggior parte dei clienti che esegue codice di produzione su Azure mantiene repliche sia primarie sia secondarie in Azure.Most of customers, who are running production code on Azure, are keeping both primary and secondary replicas in Azure.

Per informazioni approfondite ed esercitazioni sulle tecniche di disponibilità elevata e di ripristino di emergenza, vedere Disponibilità elevata e ripristino di emergenza di SQL Server in Macchine virtuali di Azure.For comprehensive information and tutorials on high availability and disaster recovery techniques, see High Availability and Disaster Recovery for SQL Server in Azure Virtual Machines.

2 e 3 livelli con Macchine virtuali di Azure e Servizi cloud2-tier and 3-tier using Azure VMs and Cloud Services

In questo modello di applicazione, un'applicazione a 2 o a 3 livelli viene distribuita in Azure usando sia i Servizi cloud di Azure (ruoli Web e di lavoro - Platform as a Service (PaaS)) sia Macchine virtuali di Azure (Infrastructure as a Service (IaaS)).In this application pattern, you deploy 2-tier or 3-tier application to Azure by using both Azure Cloud Services (web and worker roles - Platform as a Service (PaaS)) and Azure Virtual Machines (Infrastructure as a Service (IaaS)). L'uso dei Servizi cloud di Azure per il livello presentazione o business e di SQL Server in Macchine virtuali di Azure per il livello dati è vantaggioso per gran parte delle applicazioni in esecuzione su Azure.Using Azure Cloud Services for the presentation tier/business tier and SQL Server in Azure Virtual Machines for the data tier is beneficial for most applications running on Azure. Il motivo è che l'esecuzione di un'istanza di calcolo su Servizi cloud consente di eseguire facilmente la gestione, la distribuzione, il monitoraggio e la scalabilità orizzontale.The reason is that having a compute instance running on Cloud Services provides an easy management, deployment, monitoring, and scale-out.

Grazie a Servizi cloud, Azure gestisce automaticamente l'infrastruttura, esegue la manutenzione di routine, applica patch ai sistemi operativi e tenta di correggere gli errori hardware e del servizio.With Cloud Services, Azure maintains the infrastructure for you, performs routine maintenance, patches the operating systems, and attempts to recover from service and hardware failures. Quando è necessario scalare orizzontalmente l'applicazione, sono disponibili opzioni di scalabilità orizzontale manuali e automatiche per il progetto di servizio cloud semplicemente aumentando o riducendo il numero di istanze o di macchine virtuali in uso da parte dell'applicazione.When your application needs scale-out, automatic, and manual scale-out options are available for your cloud service project by increasing or decreasing the number of instances or virtual machines that are used by your application. È anche possibile usare Visual Studio localmente per distribuire l'applicazione a un progetto di servizio cloud in Azure.In addition, you can use on-premises Visual Studio to deploy your application to a cloud service project in Azure.

Riepilogando, se non si desidera gestire attività amministrative prolungate per il livello presentazione o business e l'applicazione in uso non richiede alcuna configurazione complessa del software o del sistema operativo, usare i Servizi cloud di Azure.In summary, if you don’t want to own extensive administrative tasks for the presentation/business tier and your application does not require any complex configuration of software or the operating system, use Azure Cloud Services. Se il database SQL di Azure non supporta tutte le funzionalità che si stanno cercando, usare SQL Server in una macchina virtuale di Azure per il livello dati.If Azure SQL Database does not support all the features you are looking for, use SQL Server in an Azure Virtual Machine for the data tier. L'esecuzione di un'applicazione sui Servizi cloud di Azure e l'archiviazione di dati in Macchine virtuali di Azure combinano i vantaggi di entrambi i servizi.Running an application on Azure Cloud Services and storing data in Azure Virtual Machines combines the benefits of both services. Per un confronto dettagliato, vedere la sezione Confronto delle strategie di sviluppo Web in Azurein questo argomento.For a detailed comparison, see the section in this topic on Comparing development strategies in Azure.

In questo modello di applicazione il livello presentazione include un ruolo Web, cioè un componente dei Servizi cloud in esecuzione nell'ambiente Azure personalizzato per la programmazione delle applicazioni Web supportata da IIS e ASP.NET.In this application pattern, the presentation tier includes a web role, which is a Cloud Services component running in the Azure execution environment and it is customized for web application programming as supported by IIS and ASP.NET. Il livello business o back-end include un ruolo di lavoro, cioè un componente dei Servizi cloud in esecuzione nell'ambiente di Azure, utile per lo sviluppo generalizzato, che potrebbe eseguire l'elaborazione in background di un ruolo Web.The business or backend tier includes a worker role, which is a Cloud Services component running in the Azure execution environment and it is useful for generalized development, and may perform background processing for a web role. Il livello di database risiede in una macchina virtuale SQL Server in Azure.The database tier resides in a SQL Server virtual machine in Azure. La comunicazione tra il livello presentazione e il livello di database avviene direttamente oppure attraverso il livello business (componenti del ruolo di lavoro).The communication between the presentation tier and the database tier happens directly or over the business tier – worker role components.

Questo modello di applicazione è utile nei casi seguenti:This application pattern is useful when:

  • Si desidera spostare applicazioni aziendali dalle piattaforme virtualizzate locali in Azure mediante l'implementazione delle capacità di disponibilità elevata e ripristino di emergenza di SQL Server.You want to move enterprise applications from virtualized platforms on-premises to Azure by implementing SQL Server high availability and disaster recovery capabilities.
  • Si desidera essere proprietari di un ambiente di infrastrutture che sia possibile scalare verticalmente su richiesta.You want to own an infrastructure environment that can scale up and down on demand.
  • Il database SQL di Azure non supporta tutte le funzionalità di cui necessita l'applicazione in uso.Azure SQL Database does not support all the features that your application or database needs.
  • Si desidera eseguire test di stress per diversi livelli di carico di lavoro ma, allo stesso tempo, non si desidera essere proprietari di molte macchine fisiche di cui eseguire la manutenzione per tutto il tempo.You want to perform stress testing for varying workload levels but at the same time you do not want to own and maintain many physical machines all the time.

Il diagramma seguente illustra uno scenario locale e la relativa soluzione abilitata per il cloud.The following diagram demonstrates an on-premises scenario and its cloud enabled solution. In questo scenario il livello presentazione viene inserito in ruoli Web, il livello business in ruoli di lavoro e il livello dati in macchine virtuali in Azure.In this scenario, you place the presentation tier in web roles, the business tier in worker roles but the data tier in virtual machines in Azure. L'esecuzione di più copie del livello presentazione in diversi ruoli di lavoro assicura che si eseguirà il bilanciamento del carico delle richieste tra di essi.Running multiple copies of the presentation tier in different web roles ensures to load balance requests across them. Quando si combinano i servizi cloud di Azure con le macchine virtuali di Azure si consiglia di configurare anche la rete virtuale di Azure .When you combine Azure Cloud Services with Azure Virtual Machines, we recommend that you set up Azure Virtual Network as well. Con la Rete virtuale di Azureè possibile disporre di indirizzi IP privati stabili e persistenti nell'ambito dello stesso servizio cloud.With Azure Virtual Network, you can have stable and persistent private IP addresses within the same cloud service in the cloud. Dopo avere definito una rete virtuale per le macchine virtuali e i servizi cloud, questi potranno cominciare a comunicare tra loro attraverso l'indirizzo IP privato.Once you define a virtual network for your virtual machines and cloud services, they can start communicating among themselves over the private IP address. In aggiunta, se le macchine virtuali e i ruoli Web o di lavoro di Azure si trovano nella stessa Rete virtuale di Azure si ottengono una latenza minima e una connettività più sicura.In addition, having virtual machines and Azure web/worker roles in the same Azure Virtual Network provides low latency and more secure connectivity. Per altre informazioni, vedere Informazioni sul servizio cloud.For more information, see What is a cloud service.

Come osservato nel diagramma, il servizio di bilanciamento del carico di Azure distribuisce il traffico tra più macchine virtuali e inoltre determina a quale server Web o server applicazioni connettersi.As seen in the diagram, Azure Load Balancer distributes traffic across multiple virtual machines and also determines which web server or application server to connect to. La presenza di più istanze di server Web e applicazioni dietro il servizio di bilanciamento del carico assicura la disponibilità elevata dei livelli presentazione e business.Having multiple instances of the web and application servers behind a load balancer ensures the high availability of the presentation tier and the business tier. Per altre informazioni, vedere Procedure consigliate per i modelli di applicazione che richiedono disponibilità elevata e ripristino di emergenza (HADR) per SQL Server.For more information, see Best practices for application patterns requiring SQL HADR.

Modelli dell'applicazione con Servizi cloud

Un altro approccio all'implementazione di questo modello di applicazione consiste nell'usare un ruolo Web consolidato che contenga componenti del livello presentazione e del livello business, come illustrato nel diagramma seguente.Another approach to implement this application pattern is to use a consolidated web role that contains both presentation tier and business tier components as shown in the following diagram. Questo modello di applicazione è utile per le applicazioni che richiedono un design con stato.This application pattern is useful for applications that require stateful design. Poiché Azure fornisce nodi di calcolo senza stato su ruoli Web e di lavoro, si consiglia di implementare una logica per memorizzare lo stato della sessione mediante una delle tecnologie seguenti: Cache di Azure, Archiviazione tabelle di Azure o Database SQL di Azure.Since Azure provides stateless compute nodes on web and worker roles, we recommend that you implement a logic to store session state using one of the following technologies: Azure Caching, Azure Table Storage or Azure SQL Database.

Modelli dell'applicazione con Servizi cloud

Modello con macchine virtuali di Azure, database SQL di Azure e servizio app di Azure (app Web)Pattern with Azure VMs, Azure SQL Database, and Azure App Service (Web Apps)

L'obiettivo principale di questo modello di applicazione è mostrare come combinare i componenti IaaS (Infrastructure as a Service) con i componenti PaaS (Platform as a Service) di Azure nella propria soluzione.The primary goal of this application pattern is to show you how to combine Azure infrastructure as a service (IaaS) components with Azure platform-as-a-service components (PaaS) in your solution. Il modello è incentrato sul database SQL di Azure per l'archiviazione di dati relazionaliThis pattern is focused on Azure SQL Database for relational data storage. e non include SQL Server in una macchina virtuale di Azure, che invece fa parte dell'offerta IaaS di Azure.It does not include SQL Server in an Azure virtual machine, which is part of the Azure infrastructure as a service offering.

In questo modello di applicazione, un'applicazione di database viene distribuita in Azure mediante l'inserimento dei livelli presentazione e business nella stessa macchina virtuale e tramite l'accesso a un database nei server di database SQL (Database SQL) di Azure.In this application pattern, you deploy a database application to Azure by placing the presentation and business tiers in the same virtual machine and accessing a database in Azure SQL Database (SQL Database) servers. È possibile implementare il livello presentazione usando le tradizionali soluzioni Web basate su IISYou can implement the presentation tier by using traditional IIS-based web solutions. oppure è possibile implementare un livello presentazione/business combinato usando le App Web di Azure.Or, you can implement a combined presentation and business tier by using Azure Web Apps.

Questo modello di applicazione è utile nei casi seguenti:This application pattern is useful when:

  • È già stato configurato un server di database SQL esistente in Azure e si desidera testare rapidamente l'applicazione.You already have an existing SQL Database server configured in Azure and you want to test your application quickly.
  • Si desidera testare le capacità dell'ambiente Azure.You want to test the capabilities of Azure environment.
  • Si desidera eseguire rapidamente il provisioning degli ambienti di sviluppo e test per brevi periodi di tempo.You want to quickly provision development and test environments for short periods of time.
  • I componenti della logica di business e dell'accesso ai dati possono già essere inclusi in un'applicazione Web completa.Your business logic and data access components can be self-contained within a web application.

Il diagramma seguente illustra uno scenario locale e la relativa soluzione abilitata per il cloud.The following diagram demonstrates an on-premises scenario and its cloud enabled solution. In questo scenario si collocano i livelli di applicazione in un'unica macchina virtuale in Azure e si accede ai dati nel database SQL di Azure.In this scenario, you place the application tiers in a single virtual machine in Azure and access data in Azure SQL Database.

Modello dell'applicazione misto

Se si sceglie di implementare un livello Web/applicazione combinato mediante App Web di Azure, si consiglia di mantenere il livello intermedio o di applicazione come librerie DLL nel contesto di un'applicazione Web.If you choose to implement a combined web and application tier by using Azure Web Apps, we recommend that you keep the middle-tier or application tier as dynamic-link libraries (DLLs) in the context of a web application.

Per altre informazioni sulle tecniche di programmazione, leggere i consigli offerti nella sezione Confronto delle strategie di sviluppo Web in Azure al termine di questo argomento.In addition, review the recommendations given in the Comparing web development strategies in Azure section at the end of this article to learn more about programming techniques.

Modello dell'applicazione ibrido a più livelliN-tier hybrid application pattern

Nel modello dell'applicazione ibrido a più livelli l'applicazione viene implementata in più livelli distribuiti localmente e su Azure.In n-tier hybrid application pattern, you implement your application in multiple tiers distributed between on-premises and Azure. Di conseguenza, viene creato un sistema ibrido flessibile e riutilizzabile, che sarà possibile modificare o al quale si potrà aggiungere uno specifico livello senza modificare gli altri.Therefore, you create a flexible and reusable hybrid system, which you can modify or add a specific tier without changing the other tiers. Per estendere la propria rete aziendale al cloud, viene usato il servizio Rete virtuale di Azure .To extend your corporate network to the cloud, you use Azure Virtual Network service.

Questo modello di applicazione ibrido è utile nei casi seguenti:This hybrid application pattern is useful when:

  • Si desidera creare applicazioni da eseguire in parte sul cloud e in parte localmente.You want to build applications that run partly in the cloud and partly on-premises.
  • Si desidera eseguire la migrazione sul cloud di tutti o di alcuni elementi di un'applicazione locale esistente.You want to migrate some or all elements of an existing on-premises application to the cloud.
  • Si desidera spostare le applicazioni aziendali dalle piattaforme virtualizzate locali su Azure.You want to move enterprise applications from on-premises virtualized platforms to Azure.
  • Si desidera essere proprietari di un ambiente di infrastrutture che sia possibile scalare verticalmente su richiesta.You want to own an infrastructure environment that can scale up and down on demand.
  • Si desidera eseguire rapidamente il provisioning degli ambienti di sviluppo e test per brevi periodi di tempo.You want to quickly provision development and test environments for short periods of time.
  • Si desidera trovare un modo efficace in termini di costi per eseguire i backup delle applicazioni di database aziendali.You want a cost effective way to take backups for enterprise database applications.

Il diagramma seguente illustra un modello dell'applicazione ibrido a più livelli distribuito localmente e su Azure.The following diagram demonstrates an n-tier hybrid application pattern that spans across on-premises and Azure. Come illustrato nel diagramma, l'infrastruttura locale include il controller di dominio dei Servizi di dominio Active Directory per supportare l'autenticazione e l'autorizzazione degli utenti.As shown in the diagram, on-premises infrastructure includes Active Directory Domain Services domain controller to support user authentication and authorization. Si noti che il diagramma illustra uno scenario in cui alcune parti del livello dati risiedono in un data center locale, mentre altre parti risiedono in Azure.Note that the diagram demonstrates a scenario, where some parts of the data tier live in an on-premises data center whereas some parts of the data tier live in Azure. A seconda delle esigenze applicative, è possibile implementare molti altri scenari ibridi.Depending on your application’s needs, you can implement several other hybrid scenarios. Ad esempio, è possibile mantenere il livello presentazione e il livello business in un ambiente locale, mantenendo però il livello dati in Azure.For example, you might keep the presentation tier and the business tier in an on-premises environment but the data tier in Azure.

Modello dell'applicazione a più livelli

In Azure è possibile usare Active Directory come directory cloud autonoma dell'organizzazione oppure integrare l'istanza locale esistente di Active Directory con Azure Active Directory.In Azure, you can use Active Directory as a standalone cloud directory for your organization, or you can also integrate existing on-premises Active Directory with Azure Active Directory. Come illustrato nel diagramma, i componenti del livello business possono accedere a più origini dati, ad esempio a SQL Server in Azure attraverso un indirizzo IP interno privato, a un'istanza di SQL Server locale tramite la rete virtuale di Azure oppure al database SQL usando le tecnologie del provider di dati .NET Framework.As seen in the diagram, the business tier components can access to multiple data sources, such as to SQL Server in Azure via a private internal IP address, to on-premises SQL Server via Azure Virtual Network, or to SQL Database using the .NET Framework data provider technologies. In questo diagramma il database SQL di Azure è un servizio di archiviazione dati opzionale.In this diagram, Azure SQL Database is an optional data storage service.

Nel modello di applicazione ibrido a più livelli è possibile implementare il seguente flusso di lavoro nell'ordine specificato:In n-tier hybrid application pattern, you can implement the following workflow in the order specified:

  1. Identificare le applicazioni di database aziendali che devono essere spostate nel cloud usando Microsoft Assessment and Planning (MAP) Toolkit.Identify enterprise database applications that need to be moved up to cloud by using the Microsoft Assessment and Planning (MAP) Toolkit. MAP Toolkit raccoglie i dati di inventario e di prestazioni dai computer che si desidera destinare alla virtualizzazione e fornisce consigli sulla capacità e sulla pianificazione.The MAP Toolkit gathers inventory and performance data from computers you are considering for virtualization and provides recommendations on capacity and assessment planning.
  2. Pianificare le risorse e la configurazione necessarie nella piattaforma Azure, ad esempio gli account di archiviazione e le macchine virtuali.Plan the resources and configuration needed in the Azure platform, such as storage accounts and virtual machines.
  3. Configurare la connettività tra la rete aziendale locale e la Rete virtuale di Azure.Set up network connectivity between the corporate network on-premises and Azure Virtual Network. Per configurare la connessione tra la rete aziendale locale e una macchina virtuale in Azure, usare uno dei due metodi seguenti:To set up the connection between the corporate network on-premises and a virtual machine in Azure, use one of the following two methods:

    1. Stabilire una connessione tra la rete locale e Azure tramite endpoint pubblici su una macchina virtuale in Azure.Establish a connection between on-premises and Azure via public end points on a virtual machine in Azure. Questo metodo consente di configurare facilmente e usare l'autenticazione di SQL Server sulla macchina virtuale.This method provides an easy setup and enables you to use SQL Server authentication in your virtual machine. Inoltre, è necessario impostare le regole di gruppo di sicurezza di rete per controllare il traffico pubblico alla VM.In addition, set up your network security group rules to control public traffic to the VM. Per altre informazioni, vedere Consentire l'accesso esterno alla VM mediante il portale di Azure.For more information, see Allow external access to your VM using the Azure portal.
    2. Stabilire una connessione tra la rete locale e Azure tramite il tunnel VPN di Azure.Establish a connection between on-premises and Azure via Azure Virtual Private network (VPN) tunnel. Questo metodo consente di estendere i criteri di dominio a una macchina virtuale in Azure,This method allows you to extend domain policies to a virtual machine in Azure. nonché di configurare le regole del firewall e usare l'autenticazione di Windows nella macchina virtuale.In addition, you can set up firewall rules and use Windows authentication in your virtual machine. Attualmente, Azure supporta le connessioni sicure VPN da sito a sito e VPN da punto a sito:Currently, Azure supports secure site-to-site VPN and point-to-site VPN connections:

      • Con la connessione da sito a sito sicura è possibile stabilire la connettività di rete tra la rete locale e la rete virtuale in Azure.With secure site-to-site connection, you can establish network connectivity between your on-premises network and your virtual network in Azure. Questo tipo di connessione è consigliato per connettere l'ambiente del data center locale ad Azure.It is recommended for connecting your on-premises data center environment to Azure.
      • Con la connessione da punto a sito sicura è possibile stabilire la connettività di rete tra la rete virtuale in Azure e i singoli computer in esecuzione ovunque.With secure point-to-site connection, you can establish network connectivity between your virtual network in Azure and your individual computers running anywhere. Questo tipo di connessione è consigliato principalmente a scopo di sviluppo e test.It is mostly recommended for development and test purposes.

      Per informazioni sulle modalità di connessione a SQL Server in Azure, vedere Connettersi a una macchina virtuale di SQL Server in Azure.For information on how to connect to SQL Server in Azure, see Connect to a SQL Server Virtual Machine on Azure.

  4. Configurare i processi e gli avvisi pianificati per il backup dei dati locali sul disco di una macchina virtuale in Azure.Set up scheduled jobs and alerts that back up on-premises data in a virtual machine disk in Azure. Per altre informazioni, vedere Backup e ripristino di SQL Server con il servizio di archiviazione BLOB di Azure e Backup e ripristino per SQL Server in Macchine virtuali di Azure.For more information, see SQL Server Backup and Restore with Azure Blob Storage Service and Backup and Restore for SQL Server in Azure Virtual Machines.
  5. A seconda delle esigenze applicative è possibile implementare uno tra i tre scenari comuni seguenti:Depending on your application’s needs, you can implement one of the following three common scenarios:

    1. È possibile mantenere il server Web, il server applicazioni e i dati non sensibili in un server di database in Azure, mentre è possibile mantenere i dati sensibili in locale.You can keep your web server, application server, and insensitive data in a database server in Azure whereas you keep the sensitive data on-premises.
    2. È possibile mantenere il server Web e il server applicazioni in locale, mentre è possibile mantenere il server di database su una macchina virtuale in Azure.You can keep your web server and application server on-premises whereas the database server in a virtual machine in Azure.
    3. È possibile mantenere il server di database, il server Web e il server applicazioni in locale, mentre è possibile mantenere le repliche di database su macchine virtuali in Azure.You can keep your database server, web server, and application server on-premises whereas you keep the database replicas in virtual machines in Azure. Questa impostazione consente ai server Web o alle applicazioni di accedere alle repliche del database in Azure.This setting allows the on-premises web servers or reporting applications to access the database replicas in Azure. Di conseguenza, è possibile ridurre il carico di lavoro in un database locale.Therefore, you can achieve to lower the workload in an on-premises database. Si consiglia di implementare questo scenario per i carichi di lavoro a elevato utilizzo di lettura e a scopo di sviluppo.We recommend that you implement this scenario for heavy read workloads and developmental purposes. Per informazioni sulla creazione di repliche di database in Azure, vedere i Gruppi di disponibilità AlwaysOn in Disponibilità elevata e ripristino di emergenza di SQL Server in Macchine virtuali di Azure.For information on creating database replicas in Azure, see AlwaysOn Availability Groups at High Availability and Disaster Recovery for SQL Server in Azure Virtual Machines.

Confronto delle strategie di sviluppo Web in AzureComparing web development strategies in Azure

Per implementare e distribuire un'applicazione basata su SQL Server a più livelli in Azure, è possibile usare uno dei due metodi di programmazione seguenti:To implement and deploy a multi-tier SQL Server-based application in Azure, you can use one of the following two programming methods:

  • Configurare un server Web tradizionale (IIS - Internet Information Services) in Azure e accedere ai database in SQL Server in Macchine virtuali di Azure.Set up a traditional web server (IIS - Internet Information Services) in Azure and access databases in SQL Server in Azure Virtual Machines.
  • Implementare e distribuire un servizio cloud in Azure.Implement and deploy a cloud service to Azure. Assicurarsi quindi che questo servizio cloud possa accedere ai database in SQL Server in Macchine virtuali di Azure.Then, make sure that this cloud service can access databases in SQL Server in Azure Virtual machines. Un servizio cloud può includere più ruoli Web e di lavoro.A cloud service can include multiple web and worker roles.

La tabella seguente illustra un confronto tra lo sviluppo Web tradizionale con Servizi cloud di Azure e App Web di Azure per quanto riguarda SQL Server in Macchine virtuali di Azure.The following table provides a comparison of traditional web development with Azure Cloud Services and Azure Web Apps with respect to SQL Server in Azure Virtual Machines. La tabella include App Web di Azure, in quanto è possibile usare SQL Server nella macchina virtuale di Azure come origine dati per App Web di Azure tramite l'indirizzo IP virtuale pubblico o il nome DNS.The table includes Azure Web Apps as it is possible to use SQL Server in Azure VM as a data source for Azure Web Apps via its public virtual IP address or DNS name.

Sviluppo Web tradizionale nelle macchine virtuali di AzureTraditional web development in Azure Virtual Machines Servizi cloud in AzureCloud Services in Azure Hosting Web con app Web di AzureWeb Hosting with Azure Web Apps
Migrazione delle applicazioni in localeApplication Migration from on-premises Applicazioni esistenti così come sono.Existing applications as-is. Le applicazioni devono disporre di ruoli Web e di ruoli di lavoro.Applications need web and worker roles. Applicazioni esistenti così come sono, ma adatte per applicazioni e servizi Web indipendenti che richiedono una rapida scalabilità.Existing applications as-is but suited for self-contained web applications and web services that require quick scalability.
Sviluppo e distribuzioneDevelopment and Deployment Visual Studio, WebMatrix, Visual Web Developer, WebDeploy, FTP, TFS, Gestione IIS, PowerShell.Visual Studio, WebMatrix, Visual Web Developer, WebDeploy, FTP, TFS, IIS Manager, PowerShell. Visual Studio, Azure SDK, TFS, PowerShell.Visual Studio, Azure SDK, TFS, PowerShell. Ogni servizio cloud dispone di due ambienti in cui è possibile distribuire il pacchetto e la configurazione del servizio: gestione temporanea e produzione.Each cloud service has two environments to which you can deploy your service package and configuration: staging and production. È possibile distribuire un servizio cloud nell'ambiente di gestione temporanea per testarlo prima di promuoverlo alla produzione.You can deploy a cloud service to the staging environment to test it before you promote it to production. Visual Studio, WebMatrix, Visual Web Developer, FTP, GIT, BitBucket, CodePlex, DropBox, GitHub, Mercurial, TFS, Web Deploy, PowerShell.Visual Studio, WebMatrix, Visual Web Developer, FTP, GIT, BitBucket, CodePlex, DropBox, GitHub, Mercurial, TFS, Web Deploy, PowerShell.
Amministrazione e installazioneAdministration and Setup Si è responsabili delle attività amministrative relative ad applicazione, dati, regole del firewall, rete virtuale e sistema operativo.You are responsible for administrative tasks on the application, data, firewall rules, virtual network, and operating system. Si è responsabili delle attività amministrative relative ad applicazione, dati, regole del firewall e rete virtuale.You are responsible for administrative tasks on the application, data, firewall rules, and virtual network. Si è responsabili delle attività amministrative relative solo ad applicazione e dati.You are responsible for administrative tasks on the application and data only.
Disponibilità elevata e ripristino di emergenza (HADR, High Availability and Disaster Recovery)High Availability and Disaster Recovery (HADR) Si consiglia di posizionare le macchine virtuali nello stesso set di disponibilità e nello stesso servizio cloud.We recommend that you place virtual machines in the same availability set and in the same cloud service. L'inserimento delle macchine virtuali nello stesso set di disponibilità consente ad Azure di collocare i nodi a disponibilità elevata in domini di errore e domini di aggiornamento separati.Keeping your VMs in the same availability set allows Azure to place the high availability nodes into separate fault domains and upgrade domains. In maniera analoga, l'inserimento delle macchine virtuali nello stesso servizio cloud consente al servizio di bilanciamento del carico e alle macchine virtuali di comunicare direttamente tra loro attraverso la rete locale nell'ambito di un data center di Azure.Similarly, keeping your VMs in the same cloud service enables load balancing and VMs can communicate directly with one another over the local network within an Azure data center.

L'utente è responsabile dell'implementazione di una soluzione di disponibilità elevata e ripristino di emergenza per SQL Server in Macchine virtuali di Azure per evitare qualsiasi tempo di inattività.You are responsible for implementing a high availability and disaster recovery solution for SQL Server in Azure Virtual Machines to avoid any downtime. Per le tecnologie HADR supportate, vedere l'argomento relativo alla Disponibilità elevata e ripristino di emergenza di SQL Server in Macchine virtuali di Azure.For supported HADR technologies, see High Availability and Disaster Recovery for SQL Server in Azure Virtual Machines.

Si è responsabili del backup dei propri dati e delle applicazioni.You are responsible for backing up your own data and application.

Azure può spostare le macchine virtuali in caso di esito negativo della macchina host nel data center a causa di problemi hardware.Azure can move your virtual machines if the host machine in the data center fails due to hardware issues. Potrebbero anche verificarsi tempi di inattività pianificati della macchina virtuale quando si eseguono aggiornamenti di sicurezza o software della macchina host.In addition, there could be planned downtime of your VM when the host machine is updated for security or software updates. Di conseguenza, si consiglia di mantenere almeno due macchine virtuali in ogni livello di applicazione per garantirne una disponibilità continua.Therefore, we recommend that you maintain at least two VMs in each application tier to ensure the continuous availability. Azure non fornisce contratti di servizio per una singola macchina virtuale.Azure does not provide SLA for a single virtual machine. Per altre informazioni, vedere Informazioni tecniche sulla resilienza di Azure.For more information, see Azure resiliency technical guidance.
Azure gestisce gli errori risultanti dall'hardware sottostante o dal software del sistema operativo.Azure manages the failures resulting from the underlying hardware or operating system software. Si consiglia di implementare più istanze di un ruolo Web o di lavoro per garantire la disponibilità elevata dell'applicazione.We recommend that you implement multiple instances of a web or worker role to ensure the high availability of your application. Per informazioni, vedere Contratti di servizio per servizi cloud, macchine virtuali e reti virtuali e Ripristino di emergenza e disponibilità elevata per le applicazioni basate su Microsoft AzureFor information, see Cloud Services, Virtual Machines, and Virtual Network Service Level Agreement and Disaster recovery and high availability for Azure applications

Si è responsabili del backup dei propri dati e delle applicazioni.You are responsible for backing up your own data and application.

Per i database che risiedono in un database SQL Server in una macchina virtuale di Azure, l'utente è responsabile dell'implementazione di una soluzione di disponibilità elevata e ripristino di emergenza per evitare qualsiasi tempo di inattività.For databases residing in a SQL Server database in an Azure VM, you are responsible for implementing a high availability and disaster recovery solution to avoid any downtime. Per le tecnologie HADR supportate, vedere Disponibilità elevata e ripristino di emergenza di SQL Server in Macchine virtuali di Azure.For supported HDAR technologies, see High Availability and Disaster Recovery for SQL Server in Azure Virtual Machines.

Mirroring del database in SQL Server: uso con i servizi cloud di Azure (ruoli Web/di lavoro).SQL Server Database Mirroring: Use with Azure Cloud Services (web/worker roles). Le macchine virtuali di SQL Server e un progetto di servizio cloud possono risiedere nella stessa rete virtuale di Azure.SQL Server VMs and a cloud service project can be in the same Azure Virtual Network. Se la macchina virtuale di SQL Server non si trova nella stessa rete virtuale, è necessario creare un alias di SQL Server per indirizzare la comunicazione all'istanza di SQL Server.If SQL Server VM is not in the same Virtual Network, you need to create a SQL Server Alias to route communication to the instance of SQL Server. Inoltre, il nome di alias deve corrispondere al nome di SQL Server.In addition, the alias name must match the SQL Server name.
La disponibilità elevata viene ereditata da ruoli di lavoro di Azure, archiviazione BLOB di Azure e database SQL di Azure.High Availability is inherited from Azure worker roles, Azure blob storage, and Azure SQL Database. Il servizio di archiviazione di Azure gestisce ad esempio tre repliche di tutti i dati di BLOB, tabelle e code.For example, Azure Storage maintains three replicas of all blob, table, and queue data. In qualsiasi momento, il database SQL di Azure mantiene tre repliche di dati in esecuzione: una replica primaria e due repliche secondarie.At any one time, Azure SQL Database keeps three replicas of data running—one primary replica and two secondary replicas. Per altre informazioni, vedere Archiviazione di Azure e Informazioni sul database SQL.For more information, see Azure Storage and Azure SQL Database.

Quando si usa SQL Server nella macchina virtuale di Azure come origine dati per App Web di Azure, tenere presente che App Web di Azure non supporta la rete virtuale di Azure.When using SQL Server in Azure VM as a data source for Azure Web Apps, keep in mind that Azure Web Apps does not support Azure Virtual Network. In altri termini, tutte le connessioni da App Web di Azure alle macchine virtuali di SQL Server in Azure devono attraversare gli endpoint pubblici delle macchine virtuali.In other words, all connections from Azure Web Apps to SQL Server VMs in Azure must go through public end points of virtual machines. Questo potrebbe causare alcune limitazioni per gli scenari di disponibilità elevata e ripristino di emergenza.This might cause some limitations for high availability and disaster recovery scenarios. Ad esempio, l'applicazione client su App Web di Azure che si connette alla macchina virtuale di SQL Server con il mirroring del database non potrebbe connettersi al nuovo server primario, in quanto il mirroring richiede la configurazione della rete virtuale di Azure tra le macchine virtuali host di SQL Server in Azure.For example, the client application on Azure Web Apps connecting to SQL Server VM with database mirroring would not be able to connect to the new primary server as database mirroring requires that you set up Azure Virtual Network between SQL Server host VMs in Azure. Pertanto, l'utilizzo del mirroring del database SQL Server con App Web di Azure non è attualmente supportato.Therefore, using SQL Server Database Mirroring with Azure Web Apps is not supported currently.

Gruppi di disponibilità di SQL Server AlwaysOn: è possibile configurare i gruppi di disponibilità di SQL Server AlwaysOn quando si usa App Web di Azure con le VM di SQL Server in Azure.SQL Server AlwaysOn Availability Groups: You can set up AlwaysOn Availability Groups when using Azure Web Apps with SQL Server VMs in Azure. Tuttavia, è necessario configurare il listener del gruppo di disponibilità AlwaysOn per indirizzare la comunicazione alla replica primaria tramite endpoint pubblici con bilanciamento del carico.But you need to configure AlwaysOn Availability Group Listener to route the communication to the primary replica via public load-balanced endpoints.
Connettività di più sedi localicross-premises Connectivity È possibile usare la rete virtuale di Azure per la connessione in locale.You can use Azure Virtual Network to connect to on-premises. È possibile usare la rete virtuale di Azure per la connessione in locale.You can use Azure Virtual Network to connect to on-premises. La rete virtuale di Azure è supportata.Azure Virtual Network is supported. Per altre informazioni, vedere l'articolo relativo all' integrazione della rete virtuale delle app Web.For more information, see Web Apps Virtual Network Integration.
ScalabilitàScalability L'aumento delle prestazioni del servizio è possibile incrementando le dimensioni della macchina virtuale o aggiungendo più dischi.Scale-up is available by increasing the virtual machine sizes or adding more disks. Per altre informazioni sulle dimensioni della macchina virtuale, vedere Dimensioni delle macchine virtuali in Azure.For more information about virtual machine sizes, see Virtual Machine Sizes for Azure.

Per server di database: la scalabilità orizzontale è disponibile tramite tecniche di partizionamento del database e gruppi di disponibilità AlwaysOn di SQL Server.For Database Server: Scale-out is available via database partitioning techniques and SQL Server AlwaysOn Availability groups.

Per i carichi di lavoro con operazioni di lettura intense, è possibile usare i gruppi di disponibilità AlwaysOn su più nodi secondari nonché la replica di SQL Server.For heavy read workloads, you can use AlwaysOn Availability Groups on multiple secondary nodes as well as SQL Server Replication.

Per i carichi di lavoro con operazioni di lettura intense è possibile implementare il partizionamento orizzontale dei dati tra più server fisici per ridimensionare le applicazioni.For heavy write workloads, you can implement horizontal partitioning data across multiple physical servers to provide application scale-out.

È anche possibile implementare la scalabilità orizzontale usando SQL Server con il routing dipendente dai dati.In addition, you can implement a scale-out by using SQL Server with Data Dependent Routing. Con il routing dipendente dai dati è necessario implementare il meccanismo di partizionamento nell'applicazione client, in genere nel livello business, per indirizzare le richieste del database a più nodi SQL Server.With Data Dependent Routing (DDR), you need to implement the partitioning mechanism in the client application, typically in the business tier layer, to route the database requests to multiple SQL Server nodes. Il livello business contiene mapping alla modalità di partizionamento dei dati e al nodo che contiene i dati.The business tier contains mappings to how the data is partitioned and which node contains the data.

È possibile applicare la scalabilità alle applicazioni in cui vengono eseguite le macchine virtuali.You can scale applications that are running virtual machines. Per altre informazioni, vedere l'articolo su come ridimensionare un'applicazione.For more information, see How to Scale an Application.

Nota importante: la funzionalità di scalabilità automatica di Azure consente di aumentare o ridurre automaticamente il numero di macchine virtuali usate dall'applicazione.Important Note: The AutoScale feature in Azure allows you to automatically increase or decrease the Virtual Machines that are used by your application. In questo modo l'esperienza degli utenti finali non è compromessa nei periodi di massima attività e le macchine virtuali sono spente quando la domanda è bassa.This feature guarantees that the end-user experience is not affected negatively during peak periods, and VMs are shut down when the demand is low. È consigliabile non impostare l'opzione di scalabilità automatica per il servizio cloud se include macchine virtuali di SQL Server.It’s recommended that you do not set the AutoScale option for your cloud service if it includes SQL Server VMs. La funzionalità di scalabilità automatica, infatti, consente ad Azure di avviare una macchina virtuale quando l'utilizzo della CPU in tale macchina virtuale è superiore rispetto a una certa soglia e di spegnerla quando l'utilizzo della CPU scende al di sotto di tale soglia.The reason is that the AutoScale feature lets Azure to turn on a virtual machine when the CPU usage in that VM is higher than some threshold, and to turn off a virtual machine when the CPU usage goes lower than it. Si tratta di una funzionalità utile per le applicazioni senza stato, ad esempio i server Web, in cui tutte le macchine virtuali possono gestire il carico di lavoro senza riferimenti allo stato precedente.The AutoScale feature is useful for stateless applications, such as web servers, where any VM can manage the workload without any references to any previous state. Tuttavia, la funzionalità di scalabilità automatica non è utile per le applicazioni con stato come SQL Server in cui solo un'istanza consente la scrittura nel database.However, the AutoScale feature is not useful for stateful applications, such as SQL Server, where only one instance allows writing to the database.
L'aumento delle prestazioni del servizio è possibile tramite l'uso di più ruoli Web e più ruoli di lavoro.Scale-up is available by using multiple web and worker roles. Per altre informazioni sulle dimensioni delle macchine virtuali per i ruoli Web e di lavoro, vedere l'articolo su come configurare le dimensioni per i servizi cloud.For more information about virtual machine sizes for web roles and worker roles, see Configure Sizes for Cloud Services.

Quando si usano i servizi cloudè possibile definire più ruoli per distribuire l'elaborazione e conseguire la scalabilità flessibile dell'applicazione.When using Cloud Services, you can define multiple roles to distribute processing and also achieve flexible scaling of your application. Ogni servizio cloud include uno o più ruoli Web e/o di lavoro, ognuno con i rispettivi file e configurazione dell'applicazione.Each cloud service includes one or more web roles and/or worker roles, each with its own application files and configuration. È possibile scalare verticalmente un servizio cloud aumentando il numero di istanze del ruolo (macchine virtuali) distribuite per un ruolo o riducendo il numero di istanze del ruolo.You can scale-up a cloud service by increasing the number of role instances (virtual machines) deployed for a role and scale-down a cloud service by decreasing the number of role instances. Per informazioni dettagliate, vedere Modelli di esecuzione di Azure.For detailed information, see Azure Execution Models.

La scalabilità orizzontale è disponibile tramite il supporto di Azure per la disponibilità elevata integrato nei Contratti di servizio per servizi cloud, macchine virtuali e reti virtuali e bilanciamento del carico.Scale-out is available via built-in Azure high availability support through Cloud Services, Virtual Machines, and Virtual Network Service Level Agreement and Load Balancer.

Per un'applicazione a più livelli, si consiglia di connettere l'applicazione dei ruoli di lavoro o Web alle VM virtuali del server di database tramite la rete virtuale di Azure.For a multi-tier application, we recommend that you connect web/worker roles application to database server VMs via Azure Virtual Network. Azure offre inoltre il bilanciamento del carico per macchine virtuali nello stesso servizio cloud, distribuendo le richieste degli utenti tra le macchine virtuali.In addition, Azure provides load balancing for VMs in the same cloud service, spreading user requests across them. Le macchine virtuali connesse in tale modo saranno in grado di comunicare direttamente tra loro sulla rete locale in un data center di Azure.Virtual machines connected in this way can communicate directly with one another over the local network within an Azure data center.

È possibile impostare la scalabilità automatica nel portale di Azure, oltre alle ore di pianificazione.You can set up AutoScale on the Azure portal as well as the schedule times. Per altre informazione, vedere Come configurare la scalabilità automatica per un servizio cloud nel portale.For more information, see How to configure auto scaling for a Cloud Service in the portal.
Scalabilità orizzontale e verticale: è possibile aumentare o ridurre le dimensioni dell'istanza (VM) riservata per il sito Web.Scale up and down: You can increase/decrease the size of the instance (VM) reserved for your web site.

Scalabilità orizzontale: è possibile aggiungere altre istanze riservate (VM) per il sito Web.Scale out: You can add more reserved instances (VMs) for your web site.

È possibile impostare la scalabilità automatica nel portale, oltre alle ore di pianificazione.You can set up AutoScale on the portal as well as the schedule times. Per altre informazioni, vedere l'articolo su come ridimensionare le app Web.For more information, see How to Scale Web Apps.

Per altre informazioni sulla scelta tra i metodi di programmazione disponibili, vedere Confronto tra App Web di Azure, servizi cloud e VM di Azure.For more information on choosing between these programming methods, see Azure Web Apps, Cloud Services, and VMs: When to use which.

Passaggi successiviNext Steps

Per altre informazioni sull'esecuzione di SQL Server in Macchine virtuali di Azure, vedere Panoramica di SQL Server in Macchine virtuali di Azure.For more information on running SQL Server in Azure Virtual machines, see SQL Server on Azure Virtual Machines Overview.