Effettuare il refactoring di un'applicazione locale a un'app Web del servizio app Azure e a un'istanza gestita di SQLRefactor an on-premises application to an Azure App Service web app and a SQL managed instance

Questo articolo illustra il modo in cui l'azienda fittizia Contoso effettua il refactoring di un'applicazione Windows .NET a due livelli in esecuzione su macchine virtuali VMware come parte di una migrazione ad Azure.This article demonstrates how the fictional company Contoso refactors a two-tier Windows .NET application that's running on VMware virtual machines (VMs) as part of a migration to Azure. Il team di Contoso esegue la migrazione della macchina virtuale front-end dell'applicazione a un'app Web del servizio app Azure.The Contoso team migrates the application front-end VM to an Azure App Service web app. Questo articolo illustra anche come Contoso migra il database dell'applicazione a un'istanza gestita di SQL di Azure.The article also shows how Contoso migrates the application database to an Azure SQL managed instance.

L'applicazione SmartHotel360 usata in questo esempio viene fornita come open source.The SmartHotel360 application that we use in this example is provided as open source. Se si vuole usarlo per scopi di test personalizzati, è possibile scaricarlo da GitHub.If you want to use it for your own testing purposes, you can download it from GitHub.

Driver di businessBusiness drivers

Il team di leadership IT di Contoso collabora attivamente con i partner commerciali per capire gli obiettivi da raggiungere con questa migrazione:The Contoso IT leadership team has worked closely with business partners to understand what they want to achieve with this migration:

  • Affrontare la crescita aziendale.Address business growth. Contoso cresce ed è presente una pressione sui sistemi e sull'infrastruttura locali.Contoso is growing, and there is pressure on their on-premises systems and infrastructure.
  • Aumentare l'efficienza.Increase efficiency. Contoso deve rimuovere le procedure non necessarie e semplificare i processi per sviluppatori e utenti.Contoso needs to remove unnecessary procedures and streamline processes for developers and users. L'azienda richiede un settore IT rapido ed efficiente in termini di tempo e costi, in modo da soddisfare più velocemente le esigenze dei clienti.The business needs IT to be fast and not waste time or money, thus delivering faster on customer requirements.
  • Aumenta l'agilità.Increase agility. il settore IT di Contoso deve essere più reattivo alle esigenze dell'azienda.Contoso IT needs to be more responsive to the needs of the business. Deve essere in grado di reagire più rapidamente rispetto alle modifiche nel Marketplace, per consentire un successo in un'economia globale.It must be able to react faster than the changes in the marketplace, to enable success in a global economy. Il tempo di reazione non deve essere in alcun modo o diventare un blocco aziendale.Reaction time must not get in the way, or become a business blocker.
  • Scalabilità.Scale. il settore IT di Contoso deve fornire sistemi in grado di crescere di pari passo con l'espansione dell'azienda.As the business grows successfully, Contoso IT must provide systems that are able to grow at the same pace.
  • Riduzione dei costi.Reduce costs. Contoso desidera ridurre al minimo i costi di licenza.Contoso wants to minimize licensing costs.

Obiettivi della migrazioneMigration goals

Per determinare il metodo di migrazione migliore, il team di Contoso Cloud ha aggiunto gli obiettivi seguenti:To help determine the best migration method, the Contoso cloud team pinned down the following goals:

RequisitiRequirements DettagliDetails
ApplicazioneApplication L'applicazione in Azure rimarrà cruciale perché si trova oggi in locale.The application in Azure will remain as critical as it is today on-premises.

Deve avere le stesse funzionalità di performance che attualmente ha in VMware.It should have the same performance capabilities as it currently does in VMware.

Il team non vuole investire nell'applicazione.The team doesn't want to invest in the application. Per il momento, gli amministratori sposteranno semplicemente l'applicazione in modo sicuro nel cloud.For now, admins will simply move the application safely to the cloud.

Il team desidera interrompere il supporto di Windows Server 2008 R2, su cui è attualmente in esecuzione l'applicazione.The team wants to stop supporting Windows Server 2008 R2, which the application currently runs on.

Il team vuole inoltre uscire da SQL Server 2008 R2 a un database di piattaforma distribuita come servizio (PaaS) moderno, riducendo al minimo la necessità di gestione.The team also wants to move away from SQL Server 2008 R2 to a modern platform as a service (PaaS) database, which will minimize the need for management.

Contoso vuole sfruttare gli investimenti effettuati nelle licenze di SQL Server e Software Assurance, laddove possibile.Contoso wants to take advantage of its investment in SQL Server licensing and Software Assurance where possible.

Contoso vuole anche ridurre il singolo punto di guasto nel livello Web.In addition, Contoso wants to mitigate the single point of failure on the web tier.
LimitazioniLimitations L'applicazione è costituita da un'applicazione ASP.NET e un servizio Windows Communication Foundation (WCF) in esecuzione nella stessa VM.The application consists of an ASP.NET application and a Windows Communication Foundation (WCF) service running on the same VM. Vogliono distribuire questi componenti tra due app Web usando il servizio app Azure.They want to spread these components across two web apps using the Azure App Service.
AzureAzure Contoso vuole spostare l'applicazione in Azure, ma non vuole eseguirla nelle VM.Contoso wants to move the application to Azure, but they don't want to run it on VMs. Contoso intende usare i servizi PaaS di Azure per i livelli Web e dati.Contoso wants to use Azure PaaS services for both the web and data tiers.
DevOpsDevOps Contoso vuole passare a un modello DevOps che usa Azure DevOps per le relative pipeline di compilazione e rilascio.Contoso wants to move to a DevOps model that uses Azure DevOps for their builds and release pipelines.

Progettazione della soluzioneSolution design

Dopo aver appuntato gli obiettivi e i requisiti, contoso progetta e esamina una soluzione di distribuzione.After pinning down their goals and requirements, Contoso designs and reviews a deployment solution. Identificano inoltre il processo di migrazione, inclusi i servizi di Azure che verranno usati per la migrazione.They also identify the migration process, including the Azure services that they'll use for the migration.

Applicazione correnteCurrent application

  • L'applicazione locale SmartHotel360 è suddivisa in livelli tra due macchine virtuali, WEBVM e SQLVM .The SmartHotel360 on-premises application is tiered across two VMs, WEBVM and SQLVM.
  • Le macchine virtuali si trovano in VMware ESXi host contosohost1.contoso.com versione 6,5.The VMs are located on VMware ESXi host contosohost1.contoso.com version 6.5.
  • L'ambiente VMware è gestito da server vCenter 6,5 (vcenter.contoso.com), che viene eseguito in una macchina virtuale.The VMware environment is managed by vCenter Server 6.5 (vcenter.contoso.com), which runs on a VM.
  • Contoso ha un data center locale (contoso-datacenter) con un controller di dominio locale (contosodc1).Contoso has an on-premises datacenter (contoso-datacenter), with an on-premises domain controller (contosodc1).
  • Le macchine virtuali locali nel data center Contoso verranno rimosse al termine della migrazione.The on-premises VMs in the Contoso datacenter will be decommissioned after the migration is done.

Soluzione propostaProposed solution

  • Per il livello Web dell'applicazione, Contoso ha deciso di usare app Azure servizio.For the application web tier, Contoso has decided to use Azure App Service. Questo servizio PaaS consente di distribuire l'applicazione solo con alcune modifiche di configurazione.This PaaS service enables them to deploy the application with just a few configuration changes. Contoso userà Visual Studio per apportare la modifica e distribuirà due app Web, una per il sito Web e una per il servizio WCF.Contoso will use Visual Studio to make the change, and they'll deploy two web apps, one for the website and one for the WCF service.
  • Per soddisfare i requisiti per una pipeline DevOps, Contoso utilizzerà Azure DevOps per la gestione del codice sorgente con i repository git.To meet requirements for a DevOps pipeline, Contoso will use Azure DevOps for source code management with Git repos. Utilizzeranno Build e versioni automatizzate per compilare il codice e distribuirlo al servizio app Azure.They'll use automated builds and release to build the code and deploy it to the Azure App Service.

Considerazioni sul databaseDatabase considerations

Come parte del processo di progettazione della soluzione, Contoso ha fatto un confronto delle funzionalità tra il database SQL di Azure e SQL Istanza gestita.As part of the solution design process, Contoso did a feature comparison between Azure SQL Database and SQL Managed Instance. Hanno deciso di usare SQL Istanza gestita in base alle considerazioni seguenti:They decided to use SQL Managed Instance based on the following considerations:

  • SQL Istanza gestita mira a offrire una compatibilità pari al 100% con la versione SQL Server locale più recente.SQL Managed Instance aims to deliver almost 100 percent compatibility with the latest on-premises SQL Server version. Microsoft consiglia Istanza gestita SQL per i clienti che eseguono SQL Server macchine virtuali locali o IaaS (Infrastructure as a Service) che desiderano eseguire la migrazione delle applicazioni a un servizio completamente gestito con modifiche minime alla progettazione.Microsoft recommends SQL Managed Instance for customers who are running SQL Server on-premises or on infrastructure as a service (IaaS) VMs who want to migrate their applications to a fully managed service with minimal design changes.
  • Contoso sta pianificando la migrazione di un numero elevato di applicazioni dalle macchine virtuali locali a IaaS.Contoso is planning to migrate a large number of applications from on-premises to IaaS VMs. Molte di queste VM sono fornite da fornitori di software indipendenti.Many of these VMs are provided by independent software vendors. Contoso si rende conto che l'uso di SQL Istanza gestita contribuirà a garantire la compatibilità del database per queste applicazioni.Contoso realizes that using SQL Managed Instance will help ensure database compatibility for these applications. Useranno SQL Istanza gestita anziché il database SQL, che potrebbe non essere supportato.They'll use SQL Managed Instance rather than SQL Database, which might not be supported.
  • Contoso può semplicemente eseguire una migrazione in modalità Lift-and-Shift a SQL Istanza gestita usando il servizio migrazione del database di Azure completamente automatizzato.Contoso can simply do a lift and shift migration to SQL Managed Instance by using the fully automated Azure Database Migration Service. Contoso potrà anche riusare questo servizio per le migrazioni di database future.With this service in place, Contoso can reuse it for future database migrations.
  • SQL Istanza gestita supporta SQL Server Agent, un componente importante dell'applicazione SmartHotel360.SQL Managed Instance supports SQL Server Agent, an important component of the SmartHotel360 application. Contoso richiede questa compatibilità; in caso contrario, dovranno riprogettare i piani di manutenzione richiesti dall'applicazione.Contoso needs this compatibility; otherwise, they'll have to redesign the maintenance plans required by the application.
  • Con Software Assurance, Contoso può scambiare le licenze esistenti con tariffe scontate per un'istanza gestita di SQL usando il Vantaggio Azure Hybrid per SQL Server.With Software Assurance, Contoso can exchange their existing licenses for discounted rates on a SQL managed instance by using the Azure Hybrid Benefit for SQL Server. In questo modo Contoso può risparmiare fino al 30% con SQL Istanza gestita.This allows Contoso to save up to 30 percent by using SQL Managed Instance.
  • L'istanza gestita di SQL è completamente contenuta nella rete virtuale, pertanto fornisce maggiore isolamento e sicurezza per i dati di contoso.Their SQL managed instance is fully contained in the virtual network, so it provides greater isolation and security for Contoso's data. Contoso può ottenere i vantaggi del cloud pubblico, mantenendo l'ambiente isolato dalla rete Internet pubblica.Contoso can get the benefits of the public cloud, while keeping the environment isolated from the public internet.
  • SQL Istanza gestita supporta molte funzionalità di sicurezza, tra cui la maschera dei dati dinamica sempre crittografata, la sicurezza a livello di riga e il rilevamento delle minacce.SQL Managed Instance supports many security features, including always-encrypted, dynamic data masking, row-level security, and threat detection.

Revisione della soluzioneSolution review

Contoso valuta il progetto proposto mettendo insieme un elenco di vantaggi e svantaggi, come illustrato nella tabella seguente:Contoso evaluates their proposed design by putting together a pros and cons list, as shown in the following table:

ConsiderazioniConsideration DettagliDetails
VantaggiPros Il codice dell'applicazione SmartHotel360 non richiede modifiche per la migrazione ad Azure.The SmartHotel360 application code doesn't require changes for migration to Azure.

Contoso può trarre vantaggio dall'investimento in Software Assurance usando il Vantaggio Azure Hybrid sia per SQL Server che per Windows Server.Contoso can take advantage of their investment in Software Assurance by using the Azure Hybrid Benefit for both SQL Server and Windows Server.

Dopo la migrazione, non è necessario che Windows Server 2008 R2 sia supportato.After the migration, Windows Server 2008 R2 won't need to be supported. Per altre informazioni, vedere Criteri relativi al ciclo di vita Microsoft.For more information, see the Microsoft Lifecycle Policy.

Contoso può configurare il livello Web dell'applicazione con più istanze, in modo che il livello Web non sia più un singolo punto di errore.Contoso can configure the web tier of the application with multiple instances, so that the web tier is no longer a single point of failure.

Il database non dipenderà più da SQL Server 2008 R2, non più recente.The database will no longer depend on the aging SQL Server 2008 R2.

L'istanza gestita di SQL supporta i requisiti tecnici e gli obiettivi di Contoso.SQL Managed Instance supports Contoso's technical requirements and goals.

La relativa istanza gestita fornirà la compatibilità del 100% con la distribuzione corrente, spostando gli elementi da SQL Server 2008 R2.Their managed instance will provide 100 percent compatibility with their current deployment, while moving them away from SQL Server 2008 R2.

Contoso può trarre vantaggio dall'investimento in Software Assurance e dall'uso della Vantaggio Azure Hybrid per SQL Server e Windows Server.Contoso can take advantage of their investment in Software Assurance and using the Azure Hybrid Benefit for SQL Server and Windows Server.

Possono riutilizzare il servizio migrazione del database di Azure per altre migrazioni future.They can reuse Azure Database Migration Service for additional future migrations.

La relativa istanza gestita presenta una tolleranza di errore incorporata che Contoso non deve configurare.Their managed instance has built-in fault tolerance that Contoso doesn't need to configure. Ciò garantisce che il livello dati non sia più un singolo punto di failover.This ensures that the data tier is no longer a single point of failover.
SvantaggiCons App Azure servizio supporta solo una distribuzione di applicazioni per ogni app Web.Azure App Service supports only one application deployment for each web app. Ciò significa che è necessario eseguire il provisioning di due app Web, una per il sito Web e una per il servizio WCF.This means that two web apps must be provisioned, one for the website and one for the WCF service.

Per il livello dati, SQL Istanza gestita potrebbe non essere la soluzione migliore se Contoso desidera personalizzare il sistema operativo o il server di database oppure se desidera eseguire applicazioni di terze parti insieme a SQL Server.For the data tier, SQL Managed Instance might not be the best solution if Contoso wants to customize the operating system or the database server, or if they want to run third-party applications along with SQL Server. L'esecuzione di SQL Server in una VM IaaS potrebbe garantire questa flessibilità.Running SQL Server on an IaaS VM could provide this flexibility.

Architettura propostaProposed architecture

Diagramma dell'architettura proposta.

Processo di migrazioneMigration process

  1. Contoso effettua il provisioning di un'istanza gestita di SQL di Azure e quindi ne esegue la migrazione al database SmartHotel360 usando il servizio migrazione del database di Azure.Contoso provisions an Azure SQL managed instance and then migrates the SmartHotel360 database to it by using Azure Database Migration Service.

  2. Contoso esegue il provisioning e configura le app Web e distribuisce l'applicazione SmartHotel360.Contoso provisions and configures web apps and deploys the SmartHotel360 application to them.

    Diagramma del processo di migrazione.

Servizi di AzureAzure services

ServizioService DescrizioneDescription CostiCost
Azure App Service Migration AssistantAzure App Service Migration Assistant Un percorso gratuito e semplice per eseguire facilmente la migrazione di applicazioni Web .NET da locale al cloud senza modifiche minime al codice.A free and simple path to seamlessly migrate .NET web applications from on-premises to the cloud with minimal to no code changes. Si tratta di uno strumento scaricabile, gratuito.It's a downloadable tool, free of charge.
Servizio Migrazione del database di AzureAzure Database Migration Service Il servizio migrazione del database di Azure consente una migrazione semplice da più origini di database alle piattaforme dati di Azure con tempi di inattività minimi.Azure Database Migration Service enables seamless migration from multiple database sources to Azure data platforms with minimal downtime. Informazioni sulle aree supportate e i prezzi del servizio migrazione del database di Azure.Learn about supported regions and Azure Database Migration Service pricing.
Istanza gestita di database SQL di AzureAzure SQL Managed Instance SQL Istanza gestita è un servizio di database gestito che rappresenta un'istanza di SQL Server completamente gestita in Azure.SQL Managed Instance is a managed database service that represents a fully managed SQL Server instance in Azure. Usa lo stesso codice della versione più recente del motore di database di SQL Server e dispone delle funzionalità, dei miglioramenti delle prestazioni e delle patch di sicurezza più recenti.It uses the same code as the latest version of SQL Server Database Engine, and has the latest features, performance improvements, and security patches. L'utilizzo di un'istanza gestita di SQL eseguita in Azure comporta addebiti in base alla capacità.Using a SQL managed instance that runs in Azure incurs charges based on capacity. Scopri di più sui prezzi di SQL istanza gestita.Learn more about SQL Managed Instance pricing.
Servizio app di AzureAzure App Service Consente di creare potenti applicazioni cloud che usano una piattaforma completamente gestita.Helps create powerful cloud applications that use a fully managed platform. I prezzi variano in base alle dimensioni, alla posizione e alla durata dell'utilizzo.Pricing is based on size, location, and usage duration. Altre informazioniLearn more.
Azure PipelinesAzure Pipelines Fornisce una pipeline di integrazione continua e distribuzione continua (CI/CD) per lo sviluppo di applicazioni.Provides a continuous integration and continuous deployment (CI/CD) pipeline for application development. La pipeline inizia con un repository Git per la gestione del codice dell'applicazione, un sistema di compilazione per la produzione di pacchetti e altri artefatti di compilazione e un sistema di gestione delle versioni per distribuire le modifiche negli ambienti di sviluppo, test e produzione.The pipeline starts with a Git repository for managing application code, a build system for producing packages and other build artifacts, and a release management system to deploy changes in dev, test, and production environments.

PrerequisitiPrerequisites

Per eseguire questo scenario, Contoso deve soddisfare i prerequisiti seguenti:To run this scenario, Contoso must meet the following prerequisites:

RequisitiRequirements DettagliDetails
Sottoscrizione di AzureAzure subscription Contoso ha creato le sottoscrizioni in un articolo precedente di questa serie.Contoso created subscriptions earlier in this article series. Se non si ha una sottoscrizione di Azure, creare un account gratuito.If you don't have an Azure subscription, create a free account.

Se si crea un account gratuito, si è l'amministratore della sottoscrizione e si possono eseguire tutte le azioni.If you create a free account, you're the administrator of your subscription and can perform all actions.

Se si usa una sottoscrizione esistente e non si ha il ruolo di amministratore, è necessario rivolgersi all'amministratore per l'assegnazione delle autorizzazioni di proprietario o collaboratore.If you use an existing subscription and you're not the administrator, you need to work with the admin to assign you Owner or Contributor permissions.
Infrastruttura di AzureAzure infrastructure Contoso configura la propria infrastruttura di Azure come descritto in Azure infrastructure for migration (Infrastruttura di Azure per la migrazione).Contoso set up their Azure infrastructure as described in Azure infrastructure for migration.

Passaggi dello scenarioScenario steps

Ecco in che modo Contoso eseguirà la migrazione:Here's how Contoso will run the migration:

  • Passaggio 1: valutare ed eseguire la migrazione delle app Web.Step 1: Assess and migrate the web apps.. Contoso usa lo strumento app Azure Service Migration Assistant per eseguire i controlli di compatibilità pre-migrazione ed eseguire la migrazione delle app web a app Azure Service.Contoso uses the Azure App Service Migration Assistant tool to run pre-migration compatibility checks and migrate their web apps to Azure App Service.
  • Passaggio 2: configurare un'istanza gestita di SQL.Step 2: Set up a SQL managed instance. Contoso deve disporre di un'istanza gestita esistente in cui eseguire la migrazione del database di SQL Server locale.Contoso needs an existing managed instance to which the on-premises SQL Server database will migrate.
  • Passaggio 3: eseguire la migrazione tramite il servizio migrazione del database di Azure.Step 3: Migrate via Azure Database Migration Service. Contoso esegue la migrazione del database dell'applicazione tramite il servizio migrazione del database di Azure.Contoso migrates the application database via Azure Database Migration Service.
  • Passaggio 4: configurare Azure DevOps.Step 4: Set up Azure DevOps. Contoso crea un nuovo progetto di Azure DevOps e importa il repository Git.Contoso creates a new Azure DevOps project, and imports the Git repo.
  • Passaggio 5: configurare le stringhe di connessione.Step 5: Configure connection strings. Contoso configura le stringhe di connessione in modo che l'app Web di livello Web, l'app Web del servizio WCF e l'istanza gestita di SQL possano comunicare.Contoso configures connection strings so that the web tier web app, the WCF service web app, and the SQL managed instance can communicate.
  • Passaggio 6: configurare le pipeline di compilazione e rilascio in Azure DevOps.Step 6: Set up build and release pipelines in Azure DevOps. Come passaggio finale, Contoso configura le pipeline di compilazione e rilascio in Azure DevOps per creare l'applicazione.As a final step, Contoso sets up build and release pipelines in Azure DevOps to create the application. Il team distribuisce quindi le pipeline in due app Web separate.The team then deploys the pipelines to two separate web apps.

Passaggio 1: valutare ed eseguire la migrazione delle app WebStep 1: Assess and migrate the web apps

Gli amministratori di Contoso valutano e migrano l'app Web usando lo strumento di Migration Assistant del servizio app Azure .Contoso admins assess and migrate their web app using the Azure App Service Migration Assistant tool. Usano il percorso di apprendimento Microsoft come guida durante il processo.They use the Microsoft Learning Path as a guide during the process. In breve, gli amministratori eseguono le azioni seguenti:In brief, the admins perform the following actions:

  • Usano lo strumento di valutazione della migrazione del servizio app di Azure per valutare tutte le dipendenze tra le app Web e per determinare se vi sono incompatibilità tra le app Web locali e ciò che è supportato nel servizio app Azure.They use the Azure App Service Migration Assessment tool to evaluate any dependencies between their web apps and to determine if there are any incompatibilities between their on-premises web apps and what's supported on Azure App Service.

  • Scaricano il servizio app Azure Migration Assistant e accedono al proprio account Azure.They download the Azure App Service Migration Assistant and sign in to their Azure account.

  • Scelgono una sottoscrizione, un gruppo di risorse e il nome di dominio del sito Web.They choose a subscription, a resource group, and the website’s domain name.

Passaggio 2: configurare un'istanza gestita di SQLStep 2: Set up a SQL managed instance

Per configurare un'istanza gestita di SQL di Azure, Contoso necessita di una subnet che soddisfi i requisiti seguenti:To set up an Azure SQL managed instance, Contoso needs a subnet that meets the following requirements:

  • La subnet deve essere dedicata.The subnet must be dedicated. Deve essere vuota e non può contenere altri servizi cloud.It must be empty, and it can't contain any other cloud service. Non può essere una subnet del gateway.The subnet can't be a gateway subnet.
  • Dopo la creazione dell'istanza gestita, Contoso non deve aggiungere risorse alla subnet.After the managed instance is created, Contoso should not add resources to the subnet.
  • Alla subnet non deve essere associato alcun gruppo di sicurezza di rete.The subnet can't have a network security group associated with it.
  • La subnet deve avere una tabella di route definita dall'utente.The subnet must have a user-defined route table. L'unica route assegnata deve essere 0.0.0.0/0 Internet hop successivo.The only route assigned should be 0.0.0.0/0 next-hop internet.
  • Se viene specificato un DNS personalizzato facoltativo per la rete virtuale, l'indirizzo IP virtuale 168.63.129.16 per i resolver ricorsivi in Azure deve essere aggiunto all'elenco.If an optional custom DNS is specified for the virtual network, the virtual IP address 168.63.129.16 for the recursive resolvers in Azure must be added to the list. Informazioni su come configurare un DNS personalizzato per un'istanza gestita di SQL di Azure.Learn how to configure a custom DNS for an Azure SQL managed instance.
  • Alla subnet non deve essere associato alcun endpoint di servizio (archiviazione o SQL).The subnet must not have a service endpoint (storage or SQL) associated with it. Gli endpoint di servizio devono essere disabilitati nella rete virtuale.Service endpoints should be disabled on the virtual network.
  • La subnet deve avere un minimo di 16 indirizzi IP.The subnet must have a minimum of 16 IP addresses. Informazioni su come ridimensionare la subnet dell'istanza gestita.Learn how to size the managed instance subnet.
  • Nell'ambiente ibrido di Contoso sono necessarie impostazioni DNS personalizzate.In Contoso's hybrid environment, custom DNS settings are required. Contoso configura le impostazioni DNS per l'uso di uno o più server DNS di Azure aziendali.Contoso configures DNS settings to use one or more of the company's Azure DNS servers. Altre informazioni sulla personalizzazione DNS.Learn more about DNS customization.

Configurare una rete virtuale per l'istanza gestitaSet up a virtual network for the managed instance

Gli amministratori di Contoso configurano la rete virtuale come segue:Contoso admins set up the virtual network as follows:

  1. Creano una nuova rete virtuale (VNET-SQLMI-EU2) nell'area primaria (Stati Uniti orientali 2).They create a new virtual network (VNET-SQLMI-EU2) in the primary region (East US 2). Aggiunge la rete virtuale al gruppo di risorse ContosoNetworkingRG.It adds the virtual network to the ContosoNetworkingRG resource group.

  2. Assegnano uno spazio degli indirizzi di 10.235.0.0/24.They assign an address space of 10.235.0.0/24. e verificano che l'intervallo non si sovrapponga con altre reti dell'organizzazione.They ensure that the range doesn't overlap with any other networks in its enterprise.

  3. Aggiunge due subnet alla rete:They add two subnets to the network:

    • SQLMI-DS-EUS2 (10.235.0.0/25).SQLMI-DS-EUS2 (10.235.0.0/25).

    • SQLMI-SAW-EUS2 (10.235.0.128/29).SQLMI-SAW-EUS2 (10.235.0.128/29). Questa subnet viene utilizzata per aggiungere una directory all'istanza gestita.This subnet is used to attach a directory to the managed instance.

      Screenshot del riquadro "Crea rete virtuale" per l'istanza gestita.

  4. Dopo che la rete virtuale e le subnet sono state distribuite, eseguono il peering delle reti come indicato di seguito:After the virtual network and subnets are deployed, they peer networks as follows:

    • Peer VNET-SQLMI-EUS2 con VNET-HUB-EUS2 (la rete virtuale hub per East US 2 ).Peers VNET-SQLMI-EUS2 with VNET-HUB-EUS2 (the hub virtual network for East US 2).

    • Peer VNET-SQLMI-EUS2 con VNET-PROD-EUS2 (la rete di produzione).Peers VNET-SQLMI-EUS2 with VNET-PROD-EUS2 (the production network).

      Screenshot delle reti con peering.

  5. Configurano le impostazioni DNS personalizzate.They set custom DNS settings. Le impostazioni DNS puntano prima ai controller di dominio di Azure di contoso.The DNS settings point first to Contoso's Azure domain controllers. Il DNS di Azure è secondario.Azure DNS is secondary. I controller di dominio di Azure di Contoso si trovano:The Contoso Azure domain controllers are located as follows:

    • Si trova nella subnet PROD-DC-EUS2 della rete di produzione (VNET-PROD-EUS2) nell'area Stati Uniti orientali 2.Located in the PROD-DC-EUS2 subnet of the production network (VNET-PROD-EUS2) in the East US 2 region.
    • CONTOSODC3 Indirizzo 10.245.42.4CONTOSODC3 address: 10.245.42.4
    • CONTOSODC4 Indirizzo 10.245.42.5CONTOSODC4 address: 10.245.42.5
    • Resolver DNS di Azure: 168.63.129.16Azure DNS resolver: 168.63.129.16

    Screenshot dell'elenco di server DNS di rete.

Per ulteriore assistenzaNeed more help?

Configurare il routingSet up routing

L'istanza gestita è posizionata in una rete virtuale privata.The managed instance is placed in a private virtual network. Contoso necessita di una tabella di route per la rete virtuale per la comunicazione con il servizio di gestione di Azure.Contoso needs a route table for the virtual network to communicate with the Azure management service. Se la rete virtuale non può comunicare con il servizio che la gestisce, diventa inaccessibile.If the virtual network can't communicate with the service that manages it, the virtual network becomes inaccessible.

Contoso considera questi fattori:Contoso considers these factors:

  • La tabella di route contiene un set di regole (Route) che specificano il modo in cui i pacchetti inviati dall'istanza gestita devono essere instradati nella rete virtuale.The route table contains a set of rules (routes) that specify how packets that are sent from the managed instance should be routed in the virtual network.
  • La tabella di route è associata alle subnet in cui vengono distribuite le istanze gestite.The route table is associated with subnets where managed instances are deployed. Ogni pacchetto proveniente da una subnet viene gestito in base alla tabella di route associata.Each packet that leaves a subnet is handled based on the associated route table.
  • Una subnet può essere associata a una sola tabella di route.A subnet can be associated with only one route table.
  • Non sono previsti costi aggiuntivi per la creazione di tabelle di route in Microsoft Azure.There are no additional charges for creating route tables in Microsoft Azure.

Per configurare il routing, gli amministratori di Contoso eseguono le operazioni seguenti:To set up routing, Contoso admins do the following:

  1. Creano una tabella di route definita dall'utente nel gruppo di risorse ContosoNetworkingRG.They create a user-defined route table in the ContosoNetworkingRG resource group.

    Screenshot del riquadro "Crea tabella di route".

  2. Per rispettare i requisiti di SQL Istanza gestita, dopo la distribuzione della tabella di route (MIRouteTable), gli amministratori aggiungono una route con un prefisso di indirizzo 0.0.0.0/0.To comply with SQL Managed Instance requirements, after the route table (MIRouteTable) is deployed, the admins add a route with an address prefix of 0.0.0.0/0. L'opzione Tipo hop successivo è impostata su Internet.The Next hop type option is set to Internet.

    Screenshot del riquadro "Aggiungi route" per l'aggiunta di un prefisso di indirizzo.

  3. Associano la tabella di route con la subnet SQLMI-DB-EUS2 (nella rete VNET-SQLMI-EUS2).They associate the route table with the SQLMI-DB-EUS2 subnet (in the VNET-SQLMI-EUS2 network).

    Screenshot del riquadro "associa subnet" per il routing della subnet della tabella.

Per ulteriore assistenzaNeed more help?

Informazioni su come configurare le route per un'istanza gestita.Learn how to set up routes for a managed instance.

Creare un'istanza gestitaCreate a managed instance

A questo punto, contoso Admins esegue il provisioning di un'istanza gestita di SQL eseguendo le operazioni seguenti:Now, Contoso admins provision a SQL managed instance by doing the following:

  1. Poiché l'istanza gestita serve un'applicazione aziendale, gli amministratori distribuiscono l'istanza gestita nell'area primaria dell'azienda (Stati Uniti orientali 2).Because the managed instance serves a business application, the admins deploy the managed instance in the company's primary region (East US 2). Aggiungono l'istanza gestita al gruppo di risorse ContosoRG.They add the managed instance to the ContosoRG resource group.

  2. Selezionano un piano tariffario e calcolano le dimensioni di calcolo e di archiviazione per l'istanza.They select a pricing tier, size compute, and storage for the instance. Scopri di più sui prezzi di SQL istanza gestita.Learn more about SQL Managed Instance pricing.

    Screenshot del riquadro "SQL Istanza gestita".

    Una volta distribuita l'istanza gestita, nel gruppo di risorse ContosoRG vengono visualizzate due nuove risorse:After the managed instance is deployed, two new resources appear in the ContosoRG resource group:

    • Nuova istanza gestita di SQL.The new SQL managed instance.

    • Un cluster virtuale, nel caso in cui Contoso disponga di più istanze gestite.A virtual cluster, in case Contoso has multiple managed instances.

      Screenshot delle nuove risorse nel gruppo di risorse ContosoRG.

Per ulteriore assistenzaNeed more help?

Informazioni su come eseguire il provisioning di un'istanza gestita.Learn how to provision a managed instance.

Passaggio 3: eseguire la migrazione tramite il servizio migrazione del database di AzureStep 3: Migrate via Azure Database Migration Service

Gli amministratori di Contoso migrano l'istanza gestita tramite il servizio migrazione del database di Azure seguendo le istruzioni riportate nell'esercitazione relativa alla migrazione dettagliata.Contoso admins migrate the managed instance via Azure Database Migration Service by following the instructions in the step-by-step migration tutorial. Possono eseguire migrazioni online, offline e ibride (anteprima).They can perform online, offline, and hybrid (preview) migrations.

In breve, gli amministratori di Contoso eseguono le operazioni seguenti:In brief, Contoso admins do the following:

  • Creano un'istanza del servizio migrazione del database di Azure con uno SKU Premium connesso alla rete virtuale.They create an Azure Database Migration Service instance with a Premium SKU that's connected to the virtual network.
  • Assicurano che il servizio migrazione del database possa accedere al SQL Server remoto tramite la rete virtuale.They ensure that Database Migration Service can access the remote SQL Server via the virtual network. Ciò comporta la garanzia che tutte le porte in ingresso siano consentite da Azure per SQL Server a livello di rete virtuale, VPN di rete e computer che ospita SQL Server.This would entail ensuring that all incoming ports are allowed from Azure to SQL Server at the virtual network level, the network VPN, and the machine that hosts SQL Server.
  • Consentono di configurare il servizio migrazione del database di Azure:They configure Azure Database Migration Service:
    • Creare un progetto di migrazione.Create a migration project.
    • Aggiungere un'origine (database locale).Add a source (on-premises database).
    • Selezionare una destinazione.Select a target.
    • Selezionare i database di cui eseguire la migrazione.Select the databases to migrate.
    • Configurare le impostazioni avanzate.Configure advanced settings.
    • Avviare la replica.Start the replication.
    • Risolvere gli eventuali errori.Resolve any errors.
    • Eseguire l'cutover finale.Perform the final cutover.

Passaggio 4: Configurare Azure DevOpsStep 4: Set up Azure DevOps

Contoso deve creare l'infrastruttura DevOps e le pipeline per l'applicazione.Contoso needs to build the DevOps infrastructure and pipelines for the application. A tale scopo, gli amministratori di Contoso creano un nuovo progetto DevOps, importano il codice e quindi impostano le pipeline di compilazione e rilascio.To do this, the Contoso admins create a new DevOps project, import the code, and then set up build and release pipelines.

  1. Nell'account contoso Azure DevOps creare un nuovo progetto, ContosoSmartHotelRefactor, quindi selezionare git per il controllo della versione.In the Contoso Azure DevOps account, they create a new project, ContosoSmartHotelRefactor, and then select Git for version control.

    Screenshot del riquadro nuovo progetto.

  2. Importano il repository git che attualmente include il codice dell'applicazione.They import the Git repo that currently holds their application code. Scaricarlo dal repository GitHub pubblico.They download it from the public GitHub repository.

    Screenshot del riquadro "importare un repository git" per specificare il tipo di origine e l'URL del clone.

  3. Connettono Visual Studio al repository e quindi clonano il codice nel computer di sviluppo usando Team Explorer.They connect Visual Studio to the repo and then clone the code to the developer machine by using Team Explorer.

    Screenshot del riquadro "Connetti a un progetto".

  4. Aprono il file della soluzione per l'applicazione.They open the solution file for the application. L'app Web e il servizio WCF hanno progetti distinti all'interno del file.The web app and WCF service have separate projects within the file.

    Screenshot di Esplora soluzioni, che elenca i progetti di app Web e servizio WCF.

Passaggio 5: Configurare le stringhe di connessioneStep 5: Configure connection strings

Gli amministratori di Contoso assicurano che le app Web e il database possano comunicare tra loro.The Contoso admins make sure that the web apps and database can communicate with each other. A tale scopo, configura le stringhe di connessione nel codice e nelle app Web.To do this, they configure connection strings in the code and in the web apps.

  1. Nell'app Web per il servizio WCF, SHWCF-EUS2, in Impostazioni > Impostazioni applicazione, aggiungono una nuova stringa di connessione denominata DefaultConnection.In the web app for the WCF service, SHWCF-EUS2, under Settings > Application settings, they add a new connection string named DefaultConnection.

  2. Eseguono il pull della stringa di connessione dal database di registrazione SmartHotel e quindi lo aggiornano con le credenziali corrette.They pull the connection string from the SmartHotel-Registration database and then update it with the correct credentials.

    Screenshot del riquadro delle impostazioni della stringa di connessione.

  3. In Visual Studio, gli amministratori aprono il SmartHotel.Registration.wcf progetto dal file di soluzione.In Visual Studio, the admins open the SmartHotel.Registration.wcf project from the solution file. Nel progetto aggiornano la connectionStrings sezione del file di web.config con la stringa di connessione.In the project, they update the connectionStrings section of the web.config file with the connection string.

    Screenshot della sezione connectionStrings del file di web.config nel progetto SmartHotel. registration. WCF.

  4. Modificano la client sezione del web.config file per SmartHotel. registration. Web in modo che punti alla nuova posizione del servizio WCF.They change the client section of the web.config file for SmartHotel.Registration.Web to point to the new location of the WCF service. Si tratta dell'URL dell'app Web WCF che ospita l'endpoint del servizio.This is the URL of the WCF web app that hosts the service endpoint.

    Screenshot della sezione client del file di web.config nel progetto SmartHotel. registration. WCF.

  5. Con le modifiche apportate al codice, gli amministratori ne eseguiranno il commit e la sincronizzazione usando Team Explorer in Visual Studio.With the code changes now in place, the admins commit and sync them by using Team Explorer in Visual Studio.

Passaggio 6: Configurare pipeline di compilazione e di versione in Azure DevOpsStep 6: Set up build and release pipelines in Azure DevOps

Gli amministratori di Contoso ora configurano Azure DevOps per eseguire il processo di compilazione e rilascio.The Contoso admins now configure Azure DevOps to perform the build and release process.

  1. In Azure DevOps selezionare Compila e rilascia > nuova pipeline.In Azure DevOps, they select Build and release > New pipeline.

    Screenshot del collegamento "nuova pipeline" in Azure DevOps.

  2. Selezionano GIT Azure Repos e il repository pertinente.They select Azure Repos Git and the relevant repo.

    Screenshot del pulsante "Azure Repos git" e del repository selezionato.

  3. In Seleziona un modello gli amministratori selezionano il modello ASP.NET per la compilazione.In Select a template, they select the ASP.NET template for their build.

    Screenshot del riquadro "selezionare un modello" per la selezione del modello ASP.NET.

  4. Usa il nome ContosoSmartHotelRefactor-ASP.NET-ci per la compilazione e quindi seleziona Salva & coda, che avvia la prima compilazione.They use the name ContosoSmartHotelRefactor-ASP.NET-CI for the build and then select Save & Queue, which kicks off the first build.

    Screenshot del pulsante "Salva e accoda" per la compilazione.

  5. Gli amministratori selezionano il numero di build per visualizzare il processo.They select the build number to watch the process. Al termine, gli amministratori possono visualizzare il feedback del processo e selezionare gli elementi per esaminare i risultati della compilazione.After it's finished, the admins can see the process feedback, and they select Artifacts to review the build results.

    Screenshot della pagina compilazione e del collegamento elementi per esaminare i risultati della compilazione.

    Si apre il riquadro Esplora elementi e nella cartella di ricezione vengono visualizzati i risultati della compilazione.The Artifacts explorer pane opens, and the drop folder displays the build results.

    • I due file zip sono i pacchetti che contengono le applicazioni.The two .zip files are the packages that contain the applications.
    • Questi file zip vengono usati nella pipeline di rilascio per la distribuzione nel servizio app Azure.These .zip files are used in the release pipeline for deployment to Azure App Service.

    Screenshot del riquadro "Esplora artefatti".

  6. Selezionano versioni > + nuova pipeline.They select Releases > + New pipeline.

    Screenshot che mostra il collegamento "nuova pipeline".

  7. Selezionano il modello di distribuzione di Servizio app di Azure.They select the deployment template for Azure App Service.

    Screenshot del modello di distribuzione del servizio app Azure.

  8. Il nome della pipeline di rilascio ContosoSmartHotel360Refactor e nella casella nome fase specificare SHWCF-EUS2 come nome dell'app Web WCF.They name the release pipeline ContosoSmartHotel360Refactor and, in the Stage name box, specify SHWCF-EUS2 as the name of the WCF web app.

    Screenshot del nome della fase dell'app Web WCF.

  9. Nelle fasi fanno clic su 1 processo, 1 attività per configurare la distribuzione del servizio WCF.Under the stages, they select 1 job, 1 task to configure deployment of the WCF service.

    Screenshot dell'opzione "1 processo, 1 attività".

  10. Verificano che la sottoscrizione sia selezionata e autorizzata e quindi selezioni il nome del servizio app.They verify that the subscription is selected and authorized, and then they select the app service name.

    Screenshot della selezione del nome del servizio app.

  11. Nella pipeline selezionare gli elementi, selezionare + Aggiungi un artefatto, selezionare Compila come tipo di origine e quindi compilare con la ContosoSmarthotel360Refactor pipeline.On the pipeline, they select Artifacts, select + Add an artifact, select Build as the source type, and then build with the ContosoSmarthotel360Refactor pipeline.

    Screenshot del pulsante Compila del riquadro "Aggiungi un artefatto".

  12. Per abilitare il trigger di distribuzione continua, gli amministratori selezionano l'icona del fulmine sull'artefatto.To enable the continuous deployment trigger, the admins select the lightning bolt icon on the artifact.

    Screenshot dell'icona del fulmine sull'artefatto.

  13. Il trigger di distribuzione continua viene impostato su attivato.They set the continuous deployment trigger to Enabled.

    Screenshot che mostra il trigger di distribuzione continua impostato su abilitato.

  14. Gli amministratori tornano al processo fase 1, 1 attività, quindi selezionare distribuisci servizio app Azure.The admins go back to the stage 1 job, 1 task and then select Deploy Azure App Service.

    Screenshot dell'opzione per selezionare "Distribuisci servizio app Azure".

  15. In selezionare un file o una cartellaespandere la cartella di ricezione , selezionare il SmartHotel.Registration.Wcf.zip file che è stato creato durante la compilazione e quindi selezionare Salva.In Select a file or folder, they expand the drop folder, select the SmartHotel.Registration.Wcf.zip file that was created during the build, and then select Save.

    Screenshot del riquadro "selezionare un file o una cartella" per selezionare il file WCF.

  16. Selezionare le Pipeline > fasidella pipeline e quindi selezionare + Aggiungi per aggiungere un ambiente per SHWEB-EUS2 .They select Pipeline > Stages, and then select + Add to add an environment for SHWEB-EUS2. Selezionano un'altra distribuzione di Servizio app di Azure.They select another Azure App Service deployment.

    Screenshot del collegamento "1 processo, 1 attività" per l'aggiunta di un ambiente.

  17. Ripete il processo per pubblicare il file dell'app Web SmartHotel.Registration.Web.zip nell'app Web corretta e quindi selezionare Save ( Salva).They repeat the process to publish the web app SmartHotel.Registration.Web.zip file to the correct web app, and then select Save.

    Screenshot del riquadro "selezionare un file o una cartella" per selezionare il file WEB.

    Viene visualizzata la pipeline di rilascio, come mostrato di seguito:The release pipeline is displayed, as shown here:

    Screenshot del riepilogo della pipeline di rilascio.

  18. Tornare a Compila, selezionare trigger, quindi selezionare la casella di controllo Abilita integrazione continua .They go back to Build, select Triggers, and then select the Enable continuous integration check box. Questa azione Abilita la pipeline in modo che, quando viene eseguito il commit delle modifiche nel codice, vengano eseguite la compilazione e la versione complete.This action enables the pipeline so that when changes are committed to the code, the full build and release occur.

    Schermata in cui è evidenziata la casella di controllo "Abilita integrazione continua".

  19. Fanno clic su Salva e accoda per eseguire la pipeline completa.They select Save & Queue to run the full pipeline. Viene attivata una nuova compilazione, che a sua volta crea la prima versione dell'applicazione nel servizio app Azure.A new build is triggered, which in turn creates the first release of the application to the Azure App Service.

    Screenshot del pulsante "Salva & coda".

  20. Gli amministratori di Contoso possono seguire l'elaborazione della pipeline di compilazione e versione in Azure DevOps.Contoso admins can follow the build and release pipeline process from Azure DevOps. Al termine della compilazione, viene avviata la versione.After the build finishes, the release starts.

    Screenshot dell'app per la compilazione e la versione.

  21. Al termine della pipeline, entrambi i siti sono stati distribuiti e l'applicazione è in esecuzione online.After the pipeline finishes, both sites have been deployed and the application is up and running online.

    Screenshot che mostra che l'applicazione è in esecuzione.

    La migrazione dell'applicazione in Azure è stata completata.The application has been successfully migrated to Azure.

Esegui la pulizia dopo la migrazioneClean up after the migration

Al termine della migrazione, il team di Contoso completa i passaggi di pulizia seguenti:After the migration, the Contoso team completes the following cleanup steps:

  • Rimuove le macchine virtuali locali dall'inventario vCenter.They remove the on-premises VMs from the vCenter inventory.
  • Le macchine virtuali vengono rimosse dai processi di backup locali.They remove the VMs from the local backup jobs.
  • Aggiornano la documentazione interna per mostrare le nuove posizioni per l'applicazione SmartHotel360.They update their internal documentation to show the new locations for the SmartHotel360 application. La documentazione Mostra il database come in esecuzione nell'istanza gestita di SQL e il front-end come in esecuzione in due app Web.The documentation shows the database as running in the SQL managed instance, and the front end as running in two web apps.
  • Esaminano tutte le risorse che interagiscono con le VM rimosse e aggiornano tutte le impostazioni o la documentazione pertinente per riflettere la nuova configurazione.They review any resources that interact with the decommissioned VMs, and they update any relevant settings or documentation to reflect the new configuration.

Esaminare la distribuzioneReview the deployment

Con le risorse ora migrate in Azure, Contoso deve rendere operativo completamente e proteggere la nuova infrastruttura.With the resources now migrated to Azure, Contoso needs to fully operationalize and help secure their new infrastructure.

SicurezzaSecurity

  • Contoso contribuisce a garantire la sicurezza del nuovo SmartHotel-Registration database.Contoso helps ensure that their new SmartHotel-Registration database is secure. Altre informazioniLearn more.
  • In particolare, contoso aggiorna le app Web per l'uso di SSL con certificati.In particular, Contoso updates the web apps to use SSL with certificates.

BackupBackups

  • Il team di Contoso esamina i requisiti di backup per il database in Azure SQL Istanza gestita.The Contoso team reviews the backup requirements for the database in Azure SQL Managed Instance. Altre informazioniLearn more.
  • Vengono inoltre fornite informazioni sulla gestione dei backup e del ripristino del database SQL.They also learn about managing SQL Database backups and restores. Altre informazioni sui backup automatici.Learn more about automatic backups.
  • Si consiglia di implementare i gruppi di failover per fornire il failover a livello di area per il database.They consider implementing failover groups to provide regional failover for the database. Altre informazioniLearn more.
  • Si consiglia di distribuire l'app Web nell'area principale ( East US 2 ) e nell'area secondaria ( Central US ) per la resilienza.They consider deploying the web app in the main region (East US 2) and the secondary region (Central US) for resilience. Il team può configurare Gestione traffico per garantire il failover durante le interruzioni di area.The team could configure Traffic Manager to ensure failover during regional outages.

Licenze e ottimizzazione dei costiLicensing and cost optimization

  • Dopo la distribuzione di tutte le risorse, Contoso assegna i tag di Azure in base alla pianificazione dell'infrastruttura.After all resources are deployed, Contoso assigns Azure tags based on their infrastructure planning.
  • Tutte le licenze includono il costo dei servizi PaaS di cui si serve Contoso.All licensing is built into the cost of the PaaS services that Contoso is consuming. Questo costo viene sottratto dalla Enterprise Agreement.This cost is deducted from the Enterprise Agreement.
  • Contoso utilizzerà la gestione dei costi di Azure e la fatturazione per assicurarsi che vengano rispettati i budget stabiliti dalla loro leadership it.Contoso will use Azure Cost Management and Billing to ensure that they stay within the budgets established by their IT leadership.

ConclusioniConclusion

In questo articolo Contoso ha eseguito il refactoring dell'applicazione SmartHotel360 in Azure eseguendo la migrazione della macchina virtuale front-end dell'applicazione a due app Web del servizio app Azure.In this article, Contoso refactored the SmartHotel360 application in Azure by migrating the application front-end VM to two Azure App Service web apps. È stata eseguita la migrazione del database dell'applicazione a un'istanza gestita di SQL di Azure.The application database was migrated to an Azure SQL managed instance.