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
eSQLVM
. - 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
Processo di migrazione
Contoso effettua il provisioning di un database Azure SQL e quindi esegue la migrazione del database SmartHotel360 usando Servizio Migrazione del database di Azure.
Contoso effettua il provisioning e configura le app Web e quindi distribuisce SmartHotel360 in tali app.
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
Gli amministratori di Contoso decidono di creare un'istanza di database SQL di Azure.
Specificano un nome di database corrispondente al database
SmartHotel.Registration
in esecuzione nella macchina virtuale locale. Il database viene posizionato nel gruppo di risorseContosoRG
. Si tratta del gruppo di risorse usato per le risorse di produzione in Azure.Configurano una nuova istanza di SQL Server,
sql-smarthotel-eus2
, nell'area primaria.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.
Per il ridimensionamento si procede all'acquisto basato su v-Core-e si impostano i limiti per i requisiti previsti.
Quindi si crea l'istanza di database.
Aprono il database e annotano i dettagli che saranno necessari per usare Data Migration Assistant per la migrazione.
Ulteriore assistenza?
- Sono disponibili informazioni per il provisioning di un database SQL.
- Informazioni sui limiti delle risorse basate su v-Core.
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.
Nell'account Azure DevOps di Contoso creano un nuovo progetto (
ContosoSmartHotelRefactor
) e selezionano GIT per il controllo della versione.Importano il repository GIT che al momento contiene il codice dell'applicazione. Lo scaricano dal repository GitHub pubblico.
Connettono Visual Studio al repository e quindi clonano il codice nel computer per sviluppatori usando Team Explorer.
Aprono il file della soluzione per l'applicazione. L'app Web e il servizio WCF hanno progetti distinti nel file.
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.
Nell'app Web per il servizio WCF,
SHWCF-EUS2
, in Impostazioni>Impostazioni applicazione, aggiungono una nuova stringa di connessione denominata DefaultConnection.Estraggono la stringa di connessione dal database
SmartHotel-Registration
e quindi la aggiornano con le credenziali corrette.In Visual Studio gli amministratori aprono il progetto
SmartHotel.Registration.wcf
dal file della soluzione. Nel progetto aggiornano la sezioneconnectionStrings
del fileweb.config
con la stringa di connessione.Modificano la sezione
client
del fileweb.config
perSmartHotel.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.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.
In Azure DevOps selezionano Compilazione e versione>Nuova pipeline.
Selezionano GIT Azure Repos e nell'elenco a discesa Repository selezionano il repository pertinente.
In Seleziona un modello gli amministratori selezionano il modello
ASP.NET
per la compilazione.Usano il nome
ContosoSmartHotelRefactor-ASP.NET-CI
per la build e quindi selezionano Salva e accoda&per avviare la prima compilazione.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.
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.
Gli amministratori selezionano Versioni>+ Nuova pipeline.
Selezionano il modello di distribuzione di Servizio app di Azure.
Assegnano un nome alla pipeline di versione
ContosoSmartHotel360Refactor
e nella casella Nome fase specificanoSHWCF-EUS2
come nome dell'app Web WCF.Nelle fasi fanno clic su 1 processo, 1 attività per configurare la distribuzione del servizio WCF.
Verificano che la sottoscrizione sia selezionata e autorizzata e selezionano il nome del servizio app.
Per la pipeline >Artefatti selezionano + Aggiungi un artefatto, quindi scelgono di eseguire la compilazione con la pipeline
ContosoSmarthotel360Refactor
.Per abilitare il trigger di distribuzione continua, gli amministratori selezionano l'icona a forma di fulmine sull'artefatto.
Impostano quindi il trigger di distribuzione continua su Abilitato.
Gli amministratori tornano alla fase 1 processo, 1 attività e quindi selezionano Deploy Azure App Service (Distribuisci Servizio app di Azure).
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.Selezionano Pipeline>Fasi e quindi + Aggiungi per aggiungere un ambiente per
SHWEB-EUS2
. Selezionano un'altra distribuzione di Servizio app di Azure.Ripetono il processo per pubblicare il file
SmartHotel.Registration.Web.zip
nell'app Web corretta e quindi selezionano Salva.Viene visualizzata la pipeline di versione, come illustrato di seguito:
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.
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.
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.
Al termine dell'esecuzione della pipeline, entrambi i siti sono stati distribuiti e l'applicazione è operativa e in esecuzione online.
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.