Eseguire la migrazione di un'applicazione a Servizio app di Azure e al database SQL

Questo articolo illustra come la società fittizia Contoso effettua il refactoring di un'applicazione Windows .NET a due livelli in esecuzione su macchine virtuali VMware come parte di una migrazione in Azure. Il team di Contoso esegue la migrazione della macchina virtuale (VM) front-end dell'applicazione a un'app Web di Servizio app di Azure e del database dell'applicazione al database SQL di Azure.

L'applicazione SmartHotel360 usata in questo esempio è disponibile come software open source. Se si intende usarla per scopi di test personali, è possibile scaricarla da GitHub.

Driver di business

Il team di leadership IT di Contoso collabora attivamente con i partner commerciali per capire gli obiettivi da raggiungere con questa migrazione:

  • Stare al passo con la crescita aziendale. Contoso è in espansione e l'infrastruttura e i sistemi locali iniziano a sentirne la pressione.
  • Aumentare l'efficienza. Contoso ha l'esigenza di rimuovere le procedure inutili e semplificare i processi per sviluppatori e utenti. 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.
  • Aumentare l'agilità. Per avere successo in un'economia globale, il reparto IT di Contoso deve essere più reattivo alle esigenze dell'azienda. Deve essere in grado di reagire più rapidamente ai cambiamenti nel marketplace. L'IT non deve rappresentare un ostacolo per le attività aziendali.
  • Scalabilità. il settore IT di Contoso deve fornire sistemi in grado di crescere di pari passo con l'espansione dell'azienda.
  • Ridurre i costi. Contoso desidera ridurre al minimo i costi di licenza.

Obiettivi della migrazione

Per determinare più facilmente il metodo di migrazione più consono, il team cloud di Contoso ha stabilito gli obiettivi seguenti:

Requisiti Dettagli
Applicazione L'applicazione in Azure manterrà la stessa importanza critica nel cloud dell'attuale versione in locale.

Deve avere le stesse funzionalità di performance che attualmente ha in VMware.

Il team non vuole investire nell'applicazione. Per il momento, gli amministratori spostano semplicemente l'applicazione in modo sicuro nel cloud.

Il team intende interrompere il supporto per Windows Server 2008 R2, in cui viene attualmente eseguita l'applicazione.

Il team vuole inoltre passare da SQL Server 2008 R2 a un database di piattaforma distribuita come servizio (PaaS), per ridurre al minimo le necessità di gestione.

Contoso vuole sfruttare gli investimenti effettuati nelle licenze di SQL Server e Software Assurance, laddove possibile.

Contoso vuole anche ridurre il singolo punto di guasto nel livello Web.
Limitazioni L'applicazione è costituita da un'applicazione ASP.NET e da un servizio WCF (Windows Communication Foundation) in esecuzione nella stessa macchina virtuale. L'intenzione è suddividere questi componenti tra due app Web usando Servizio app di Azure.
Azure Contoso vuole spostare l'applicazione in Azure, ma non eseguirla nelle macchine virtuali. Contoso intende usare i servizi PaaS di Azure per i livelli Web e dati.
DevOps Contoso intende passare a un modello DevOps in cui viene usato Azure DevOps per le pipeline di compilazione e di versione del codice.

Progettazione della soluzione

Dopo aver definito obiettivi e requisiti, il team di Contoso progetta ed esamina una soluzione di distribuzione e inoltre identifica il processo di migrazione, inclusi i servizi di Azure da usare per la migrazione.

Applicazione corrente

  • L'applicazione locale SmartHotel360 è suddivisa in livelli tra due macchine virtuali, WEBVM e SQLVM.
  • Le macchine virtuali si trovano nell'host VMware ESXi contosohost1.contoso.com (versione 6.5).
  • L'ambiente VMware viene gestito dal server vCenter 6.5 (vcenter.contoso.com), eseguito su una macchina virtuale.
  • Contoso ha un data center locale (contoso-datacenter) con un controller di dominio locale (contosodc1).
  • Le macchine virtuali locali nel data center Contoso verranno rimosse al termine della migrazione.

Soluzione proposta

  • Per il livello di database dell'applicazione, Contoso ha confrontato il database SQL di Azure con SQL Server facendo riferimento al confronto tra funzionalità: database SQL di Azure e istanza gestita di SQL di Azure. Contoso ha deciso di usare il database SQL di Azure per diversi motivi:
    • Il database SQL di Azure è un servizio di database relazionale gestito. Offre prestazioni prevedibili a più livelli di servizio, con esigenze di amministrazione quasi nulle. Tra i vantaggi: scalabilità dinamica senza tempi di inattività, ottimizzazione dell'intelligente incorporata, scalabilità e disponibilità globali.
    • Contoso può usare lo strumento semplificato Data Migration Assistant per valutare il database locale ed eseguirne la migrazione al database SQL di Azure.
    • Contoso può usare Servizio Migrazione del database di Azure per eseguire la migrazione del database locale al database SQL di Azure.
    • Con Software Assurance, Contoso può scambiare le licenze esistenti con tariffe scontate per un database nel database SQL usando il Vantaggio Azure Hybrid per SQL Server. Questo approccio potrebbe offrire un risparmio sui costi fino al 30%.
    • Il database SQL offre diverse funzionalità di sicurezza tra cui Always Encrypted, maschera dati dinamica, sicurezza a livello di riga e rilevamento delle minacce a SQL.
  • Per il livello di applicazione Web, Contoso ha deciso di usare Servizio app di Azure. Questo servizio PaaS consente di distribuire l'applicazione con poche modifiche alla configurazione. Contoso userà Visual Studio per apportare le modifiche e distribuirà due app Web, una per il sito Web e una per il servizio WCF.
  • Per soddisfare i requisiti di una pipeline di DevOps, Contoso userà Azure DevOps per la gestione del codice sorgente con i repository GIT. Le build e le versioni automatizzate verranno usate per compilare il codice e distribuirlo in Servizio app di Azure.

Revisione della soluzione

Contoso valuta la progettazione proposta raccogliendo un elenco di vantaggi e svantaggi, come illustrato nella tabella seguente:

Considerazioni Dettagli
Vantaggi Il codice dell'applicazione SmartHotel360 non richiede modifiche per la migrazione in Azure.

Contoso può sfruttare i propri investimenti in Software Assurance usando l'offerta Vantaggio Azure Hybrid per SQL Server e Windows Server.

Dopo la migrazione, Windows Server 2008 R2 non dovrà essere supportato. Per altre informazioni, vedere Criteri relativi al ciclo di vita Microsoft.

Contoso può configurare il livello Web dell'applicazione con più istanze, in modo che non sia più un singolo punto di guasto.

Il database non dipenderà più da SQL Server 2008 R2, non più recente.

Il database SQL supporta i requisiti tecnici. Contoso ha valutato il database locale usando Data Migration Assistant e ne ha accertato compatibilità.

Il database SQL di Azure ha una tolleranza di errore incorporata che non richiede la configurazione da parte di Contoso. Ciò garantisce che il livello dati non sia più un singolo punto di failover.

Se Contoso usa Servizio Migrazione del database di Azure per eseguire la migrazione del proprio database, l'infrastruttura sarà pronta per la migrazione dei database su larga scala.
Svantaggi Servizio app di Azure supporta una sola distribuzione di applicazioni per ogni app Web. Ciò significa che è necessario effettuare il provisioning di due app Web, una per il sito Web e l'altra per il servizio WCF.

Architettura proposta

Diagramma dell'architettura proposta.

Processo di migrazione

  1. Contoso effettua il provisioning di un database Azure SQL e quindi esegue la migrazione del database SmartHotel360 usando Servizio Migrazione del database di Azure.

  2. Contoso effettua il provisioning e configura le app Web e quindi distribuisce SmartHotel360 in tali app.

    Diagramma del processo di migrazione.

Servizi di Azure

Servizio Descrizione Costi
Azure App Service Migration Assistant Offre un percorso gratuito e semplice per eseguire facilmente la migrazione di applicazioni Web .NET dall'ambiente locale al cloud con modifiche minime o senza modifiche al codice. Questo strumento è scaricabile gratuitamente.
Data Migration Assistant Contoso userà Data Migration Assistant per valutare e rilevare i problemi di compatibilità che potrebbero compromettere le funzionalità del database in Azure. Data Migration Assistant valuta l'analogia nelle funzionalità tra le origini e le destinazioni SQL e consiglia miglioramenti nelle prestazioni e nell'affidabilità. Questo strumento è scaricabile gratuitamente.
Servizio Migrazione del database di Azure Consente di eseguire facilmente la migrazione di più origini di database a piattaforme dati di Azure, con tempi di inattività minimi. Altre informazioni sulle aree supportate e sui prezzi del Servizio Migrazione del database.
Database SQL di Azure Servizio di database cloud relazionale intelligente completamente gestito. Il costo si basa su funzionalità, velocità effettiva e dimensioni. Altre informazioni
Servizio app di Azure Consente di creare potenti applicazioni cloud che usano una piattaforma completamente gestita. I prezzi si basano su dimensioni, posizione e durata dell'utilizzo. Altre informazioni
Azure Pipelines Offre una pipeline di integrazione continua e recapito continuo (CI/CD) per lo sviluppo di applicazioni. La pipeline inizia con un repository GIT per la gestione del codice app, un sistema di compilazione per la produzione di pacchetti e altri artefatti di compilazione, nonché un sistema di gestione del rilascio per implementare le modifiche negli ambienti di sviluppo, test e produzione.

Prerequisiti

Per eseguire questo scenario, Contoso deve soddisfare i prerequisiti seguenti:

Requisiti Dettagli
Sottoscrizione di Azure Contoso ha creato le sottoscrizioni in un articolo precedente di questa serie. Se non si ha una sottoscrizione di Azure, creare un account gratuito.

Se si crea un account gratuito, si è l'amministratore della sottoscrizione e si possono eseguire tutte le azioni.

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.
Infrastruttura di Azure Contoso configura la propria infrastruttura di Azure come descritto in Azure infrastructure for migration (Infrastruttura di Azure per la migrazione).

Passaggi dello scenario

Ecco in che modo Contoso eseguirà la migrazione:

  • Passaggio 1: Valutare le app Web ed eseguirne la migrazione. Contoso usa lo strumento Azure App Service Migration Assistant per eseguire controlli di compatibilità preliminari alla migrazione ed eseguire la migrazione delle app Web in Servizio app di Azure.
  • Passaggio 2: Effettuare il provisioning di un database in database SQL di Azure. Contoso effettua il provisioning di un'istanza di database SQL di Azure. Dopo la migrazione del sito Web dell'applicazione in Azure, l'app Web del servizio WCF punta a questa istanza.
  • Passaggio 3: Valutare il database. Contoso valuta il database per la migrazione usando Data Migration Assistant e quindi esegue la migrazione usando Servizio Migrazione del database di Azure.
  • Passaggio 4: Configurare Azure DevOps. Contoso crea un nuovo progetto di Azure DevOps e importa il repository Git.
  • Passaggio 5: Configurare le stringhe di connessione. Contoso configura le stringhe di connessione in modo che l'app Web di livello Web, l'app Web del servizio WCF e l'istanza SQL siano in grado di comunicare.
  • Passaggio 6: Configurare pipeline di compilazione e di versione in Azure DevOps. Come passaggio finale, Contoso configura pipeline di compilazione e versione in Azure DevOps per creare l'applicazione e le distribuisce in due app Web separate.

Passaggio 1: Valutare le app Web ed eseguirne la migrazione

Gli amministratori di Contoso valutano l'app Web e ne eseguono la migrazione usando lo strumento Azure App Service Migration Assistant. Usano il percorso di apprendimento per la migrazione di applicazioni ASP.NET ad Azure come guida durante il processo. Gli amministratori eseguono queste azioni:

  • Usano lo strumento di valutazione della migrazione di Servizio app di Azure per valutare eventuali dipendenze tra le app Web e per determinare se sono presenti incompatibilità tra le app Web locali e le funzionalità supportate in Servizio app di Azure.

  • Scaricano Azure App Service Migration Assistant e accedono all'account Azure.

  • Scelgono una sottoscrizione, un gruppo di risorse e il nome di dominio del sito Web.

Passaggio 2: Effettuare il provisioning di un database in database SQL di Azure

  1. Gli amministratori di Contoso decidono di creare un'istanza di database SQL di Azure.

    Screenshot che mostra il collegamento database SQL.

  2. Specificano un nome di database corrispondente al database SmartHotel.Registration in esecuzione nella macchina virtuale locale. Il database viene posizionato nel gruppo di risorse ContosoRG. Si tratta del gruppo di risorse usato per le risorse di produzione in Azure.

    Screenshot che mostra database SQL dettagli dell'istanza.

  3. Configurano una nuova istanza di SQL Server, sql-smarthotel-eus2, nell'area primaria.

    Screenshot della nuova istanza di SQL Server.

  4. Viene impostato il piano tariffario in modo che soddisfi le esigenze del server e del database. Inoltre, Contoso sceglie di risparmiare denaro con Vantaggio Azure Hybrid poiché si dispone già di una licenza di SQL Server.

  5. Per il ridimensionamento si procede all'acquisto basato su v-Core-e si impostano i limiti per i requisiti previsti.

    Screenshot dei requisiti di dimensionamento vCore.

  6. Quindi si crea l'istanza di database.

    Screenshot della creazione di un'istanza di database SQL.

  7. Aprono il database e annotano i dettagli che saranno necessari per usare Data Migration Assistant per la migrazione.

    Screenshot del file di testo dell'istanza del database.

Ulteriore assistenza?

Passaggio 3: Valutare il database

Gli amministratori di Contoso valutano il database usando Data Migration Assistant e quindi ne eseguono la migrazione usando Servizio Migrazione del database di Azure facendo riferimento all'esercitazione dettagliata sulla migrazione. Possono eseguire migrazioni online, offline e ibride (in anteprima).

In breve, gli amministratori eseguono queste operazioni:

  • Usano Data Migration Assistant per individuare e risolvere eventuali problemi di migrazione del database.
  • Creano un'istanza del Servizio Migrazione del database di Azure con uno SKU Premium connesso alla rete virtuale.
  • Verificano che l'istanza possa accedere a SQL Server remoto attraverso la rete virtuale. A questo scopo occorre assicurarsi che siano consentite tutte le porte in ingresso da Azure a SQL Server al livello della rete virtuale, della VPN di rete e del computer in cui è installato SQL Server.
  • Configurano l'istanza:
    • Creare un progetto di migrazione.
    • Aggiungere un'origine (database locale).
    • Selezionare una destinazione.
    • Selezionare i database di cui eseguire la migrazione.
    • Configurare le impostazioni avanzate.
    • Avviare la replica.
    • Risolvere gli eventuali errori.
    • Eseguire il cutover finale.

Passaggio 4: Configurare Azure DevOps

Contoso deve creare l'infrastruttura DevOps e le pipeline per l'applicazione. A tale scopo, gli amministratori di Contoso creano un nuovo progetto DevOps, importano il codice e quindi configurano le pipeline di compilazione e versione.

  1. Nell'account Azure DevOps di Contoso creano un nuovo progetto (ContosoSmartHotelRefactor) e selezionano GIT per il controllo della versione.

    Screenshot della creazione di un nuovo progetto in Azure DevOps.

  2. Importano il repository GIT che al momento contiene il codice dell'applicazione. Lo scaricano dal repository GitHub pubblico.

    Screenshot del riquadro Importa un repository Git.

  3. Connettono Visual Studio al repository e quindi clonano il codice nel computer per sviluppatori usando Team Explorer.

    Screenshot del riquadro Connetti a un progetto.

  4. Aprono il file della soluzione per l'applicazione. L'app Web e il servizio WCF hanno progetti distinti nel file.

    Screenshot di Esplora soluzioni, elencare i progetti di servizio Web e app Web.

Passaggio 5: Configurare le stringhe di connessione

Gli amministratori di Contoso verificano che le app Web e il database siano in grado di comunicare tra loro. A tale scopo, configura le stringhe di connessione nel codice e nelle app Web.

  1. Nell'app Web per il servizio WCF, SHWCF-EUS2, in Impostazioni>Impostazioni applicazione, aggiungono una nuova stringa di connessione denominata DefaultConnection.

  2. Estraggono la stringa di connessione dal database SmartHotel-Registration e quindi la aggiornano con le credenziali corrette.

    Screenshot del riquadro impostazioni della stringa di connessione.

  3. In Visual Studio gli amministratori aprono il progetto SmartHotel.Registration.wcf dal file della soluzione. Nel progetto aggiornano la sezione connectionStrings del file web.config con la stringa di connessione.

    Screenshot della sezione connectionStrings del file web.config nel progetto SmartHotel.Registration.wcf.

  4. Modificano la sezione client del file web.config per SmartHotel.Registration.Web in modo che punti al nuovo percorso del servizio WCF. Si tratta dell'URL dell'app Web WCF che ospita l'endpoint del servizio.

    Screenshot della sezione client del file web.config nel progetto SmartHotel.Registration.wcf.

  5. Con le modifiche implementate nel codice, gli amministratori eseguono il commit e la sincronizzazione usando Team Explorer in Visual Studio.

Passaggio 6: Configurare pipeline di compilazione e di versione in Azure DevOps

Gli amministratori di Contoso configurano ora Azure DevOps per eseguire il processo di compilazione e versione.

  1. In Azure DevOps selezionano Compilazione e versione>Nuova pipeline.

    Screenshot del collegamento Nuova pipeline in Azure DevOps.

  2. Selezionano GIT Azure Repos e nell'elenco a discesa Repository selezionano il repository pertinente.

    Screenshot del pulsante Git Azure Repos e del repository selezionato.

  3. In Seleziona un modello gli amministratori selezionano il modello ASP.NET per la compilazione.

    Screenshot del riquadro Seleziona un modello per selezionare il modello di ASP.NET.

  4. Usano il nome ContosoSmartHotelRefactor-ASP.NET-CI per la build e quindi selezionano Salva e accoda&per avviare la prima compilazione.

    Screenshot del pulsante Salva & coda per la compilazione.

  5. Gli amministratori selezionano il numero di build per visualizzare il processo. Al termine, possono vedere il feedback sul processo e selezionano Artefatti per esaminare i risultati della compilazione.

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

    Viene visualizzato il riquadro Esplora Artifacts e nella cartella drop vengono riportati i risultati della compilazione.

    • I due file ZIP sono i pacchetti che contengono le applicazioni.
    • Questi file ZIP vengono usati nella pipeline di versione per la distribuzione in Servizio app di Azure.

    Screenshot del riquadro Esplora artefatti.

  6. Gli amministratori selezionano Versioni>+ Nuova pipeline.

    Nuova pipeline

  7. Selezionano il modello di distribuzione di Servizio app di Azure.

    Screenshot del modello di distribuzione Servizio app di Azure.

  8. Assegnano un nome alla pipeline di versione ContosoSmartHotel360Refactor e nella casella Nome fase specificano SHWCF-EUS2 come nome dell'app Web WCF.

    Screenshot del nome di fase dell'app Web WCF.

  9. Nelle fasi fanno clic su 1 processo, 1 attività per configurare la distribuzione del servizio WCF.

    Screenshot dell'opzione 1 processo, 1 attività.

  10. Verificano che la sottoscrizione sia selezionata e autorizzata e selezionano il nome del servizio app.

    Screenshot della selezione del nome del servizio app.

  11. Per la pipeline >Artefatti selezionano + Aggiungi un artefatto, quindi scelgono di eseguire la compilazione con la pipeline ContosoSmarthotel360Refactor.

    Screenshot del pulsante Compila nel riquadro Aggiungi un artefatto.

  12. Per abilitare il trigger di distribuzione continua, gli amministratori selezionano l'icona a forma di fulmine sull'artefatto.

    Screenshot dell'icona del fulmine sull'artefatto.

  13. Impostano quindi il trigger di distribuzione continua su Abilitato.

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

  14. Gli amministratori tornano alla fase 1 processo, 1 attività e quindi selezionano Deploy Azure App Service (Distribuisci Servizio app di Azure).

    Screenshot dell'opzione per selezionare Distribuisci Servizio app di Azure.

  15. In Seleziona un file o una cartella espandono la cartella drop, selezionano il file SmartHotel.Registration.Wcf.zip creato durante la compilazione e quindi selezionano Salva.

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

  16. Selezionano Pipeline>Fasi e quindi + Aggiungi per aggiungere un ambiente per SHWEB-EUS2. Selezionano un'altra distribuzione di Servizio app di Azure.

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

  17. Ripetono il processo per pubblicare il file SmartHotel.Registration.Web.zip nell'app Web corretta e quindi selezionano Salva.

    Screenshot del riquadro Selezionare un file o una cartella per selezionare il file Web.

    Viene visualizzata la pipeline di versione, come illustrato di seguito:

    Screenshot del riepilogo della pipeline di rilascio.

  18. Gli amministratori tornano alla schermata di Compilazione, selezionano Trigger e quindi Abilita l'integrazione continua. La pipeline viene abilitata in modo da avviare la compilazione completa e creare la versione quando viene eseguito il commit delle modifiche nel codice.

    Screenshot che evidenzia la casella di controllo Abilita integrazione continua.

  19. Fanno clic su Salva e accoda&per eseguire la pipeline completa. Viene attivata una nuova compilazione che a sua volta crea la prima versione dell'app in Servizio app di Azure.

    Screenshot del pulsante Salva & coda.

  20. Gli amministratori di Contoso possono seguire l'elaborazione della pipeline di compilazione e versione in Azure DevOps. Al termine della compilazione, viene avviata la creazione della versione.

    Screenshot dello stato di avanzamento della compilazione e della versione.

  21. Al termine dell'esecuzione della pipeline, entrambi i siti sono stati distribuiti e l'applicazione è operativa e in esecuzione online.

    Screenshot che mostra che l'applicazione è in esecuzione e in esecuzione.

    La migrazione dell'applicazione in Azure è stata completata.

Eseguire la pulizia dopo la migrazione

Dopo la migrazione, Contoso completa le operazioni di pulizia seguenti:

  • Rimuove le macchine virtuali locali dall'inventario vCenter.
  • Rimuove le macchine virtuali dai processi di backup locali.
  • Aggiorna la documentazione interna in modo da mostrare i nuovi percorsi per l'applicazione SmartHotel360. La documentazione indica il database come in esecuzione nel database SQL di Azure e il front-end in esecuzione nelle due app Web.
  • Esamina le risorse che interagiscono con le macchine virtuali rimosse e aggiorna la documentazione o le impostazioni pertinenti in base alla nuova configurazione.

Esaminare la distribuzione

Al termine della migrazione delle risorse in Azure, Contoso deve rendere pienamente operativa la nuova infrastruttura e contribuire a proteggerla.

Sicurezza

  • Contoso deve garantire che il nuovo database SmartHotel-Registration sia sicuro. Altre informazioni
  • In particolare, Contoso aggiorna le app Web per l'uso di SSL con i certificati.

Backup

  • Il team di Contoso esamina i requisiti di backup per il database SQL di Azure. Altre informazioni
  • Acquisisce inoltre informazioni sulla gestione dei processi di backup e ripristino del database SQL. Altre informazioni sui backup automatici.
  • Valuta l'opportunità di implementare gruppi di failover per abilitare il failover a livello di area per il database. Altre informazioni
  • Per la resilienza, considera la possibilità di distribuire l'app Web nell'area principale (East US 2) e in quella secondaria (Central US). Il team potrebbe configurare Gestione traffico per assicurare il failover in caso di interruzioni a livello di area.

Licenze e ottimizzazione dei costi

  • Dopo che tutte le risorse sono state distribuite, Contoso assegna i tag di Azure in base alla pianificazione dell'infrastruttura.
  • Tutte le licenze includono il costo dei servizi PaaS di cui si serve Contoso. Questo costo verrà detratto dal Contratto Enterprise.
  • Contoso userà Gestione dei costi e fatturazione di Azure per assicurare che siano rispettati i budget definiti dai responsabili del reparto IT.

Conclusioni

In questo articolo Contoso ha effettuato il refactoring dell'applicazione SmartHotel360 in Azure eseguendo la migrazione della macchina virtuale front-end dell'applicazione in due app Web di Servizio app di Azure. È stata eseguita la migrazione del database dell'applicazione al database SQL di Azure.