View a markdown version of this page

Migrazione delle applicazioni .NET - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Migrazione delle applicazioni .NET

La migrazione delle applicazioni.NET AWS consente di creare carichi di lavoro ad alta disponibilità con funzionalità di scalabilità elastiche, ridurre il sovraccarico operativo e aumentare l'agilità aziendale concentrandosi sul valore distintivo.

Questa sezione si concentra sulle diverse opzioni su cui ospitare le applicazioni.NET. AWSÈ possibile scegliere tra l'utilizzo di una macchina virtuale, una soluzione gestita come AWS Elastic Beanstalkla containerizzazione del codice o il refactoring del codice in un'architettura basata su microservizi o serverless.

Valutazione

La scelta di un percorso di migrazione per il carico di lavoro .NET si basa sui seguenti fattori chiave:

  • Individua la versione .NET in uso: Microsoft supporta due diverse implementazioni .NET: .NET Framework (1.0-4.8) e .NET (.NET Core 1.0-3.1 e .NET 5 e versioni successive). Entrambi condividono molti degli stessi componenti e possono eseguire codice applicativo scritto utilizzando i diversi linguaggi di programmazione.NET (come C#, F# e). VB.NET La scelta della strategia di migrazione e del servizio di hosting dipende dal runtime utilizzato poiché .NET Framework viene eseguito su Windows mentre il nuovo .NET è multipiattaforma. Per .NET Framework, è possibile eseguire l'hosting su un sistema operativo Windows o rifattorizzare il codice per utilizzare il nuovo .NET. La versione più recente di .NET può essere ospitata anche su servizi Linux. OS-based Quando si modernizzano i Framework-based carichi di lavoro.NET, è possibile utilizzare For.NET AWS Transform per scansionare il codice e generare un rapporto di valutazione della compatibilità. Scoprendo se il progetto fa riferimento ad API .NET Framework incompatibili, è possibile pianificare la complessità di un progetto di migrazione e decidere se e quando rifattorizzare il codice per utilizzare un runtime più recente.

  • Rivedi la tua implementazione attuale: verifica se il carico di lavoro attualmente migrato ha CI/CD pipeline esistenti che possono essere aggiornate per distribuire gli stessi carichi di lavoro nel cloud. L'utilizzo di una pipeline di compilazione e implementazione esistente può ridurre il tempo necessario per implementare l'applicazione nel cloud automatizzando i passaggi necessari per creare, configurare e implementare i carichi di lavoro.

  • Rivedi la roadmap: a seconda dello stato attuale del progetto, potresti avere già deciso di riprogettare le tue applicazioni. Ogni iniziativa di modernizzazione dovrebbe tenere in considerazione la roadmap del prodotto. Ad esempio, decisioni come la containerizzazione del codice esistente o la rifattorizzazione di un'architettura monolitica in microservizi rientrano idealmente nella roadmap del prodotto e sono in linea con altre iniziative di sviluppo.

Mobilitazione

Esistono tre diversi percorsi di migrazione da considerare quando si eseguono le migrazioni dei carichi di lavoro.NET verso. AWS Puoi scegliere tra le diverse opzioni in base alla complessità della base di codice esistente, al tempo allocato per la migrazione e alla dimensione del team incaricato di supportare l'iniziativa di migrazione. Quando si considera la modernizzazione come parte della migrazione, è consigliabile allinearsi alla roadmap del prodotto.

  • Rehosting (lift & shift): puoi scegliere questo approccio se la tua priorità è una migrazione più rapida a AWS con modifiche minime o nulle. Puoi reospitare ASP.NET-based i siti Web su Internet Information Services (IIS) in esecuzione su istanze Amazon EC2. Puoi reospitare le tue applicazioni basate su desktop (come Windows Presentation Foundation, Web Forms e.NET MAUI) su una delle piattaforme di elaborazione per utenti finali come Amazon Applications WorkSpaces o Amazon. WorkSpaces

  • Ridefinizione della piattaforma: la ridefinizione della piattaforma è la soluzione ideale quando si desidera ospitare l'applicazione utilizzando un servizio gestito senza apportare modifiche al codice e al contempo ridurre il sovraccarico operativo per attività di gestione indifferenziate per installazioni, applicazione delle patch, aggiornamenti e istanze. Questa strategia è indicata anche per i team che desiderano passare a carichi di lavoro basati su container. Puoi ripiattaforma le tue applicazioni esistenti su Elastic Beanstalk o utilizzare contenitori Docker ospitati su Amazon ECS, Amazon EKS o. AWS App Runner

  • Refactor: scegli questo approccio se puoi investire tempo e impegno nell'apportare modifiche al codice e all'architettura che riducano il sovraccarico operativo e ottengano una migliore scalabilità, alta disponibilità e disaster recovery utilizzando servizi nativi del cloud. AWS La rifattorizzazione prevede la modernizzazione della base di codice mediante il porting delle applicazioni .NET Framework esistenti su .NET (precedentemente .NET Core) o la modernizzazione del codice stesso per migliorarne l'esecuzione nel cloud. Puoi utilizzarlo AWS SDK per .NETper richiamare molti servizi AWS cloud dall'interno del tuo codice.NET. È possibile utilizzare strumenti come .NET AWS Transform per trasferire la base di codice da .NET Framework a .NET. Effettuando il refactoring dei carichi di lavoro.NET esistenti per l'esecuzione AWS Lambda, è possibile utilizzare l'elaborazione serverless per evitare il provisioning e la gestione dell'infrastruttura.

Migrazione

Le fasi della migrazione dei carichi di lavoro .NET dipendono dal percorso di migrazione scelto durante la fase di valutazione e dal tipo di applicazione.

Rehosting di un'applicazione .NET

Scegli questo percorso di migrazione se desideri migrare la tua applicazione senza apportare modifiche al codice ma desideri trarre vantaggio dal dimensionamento automatico, dal bilanciamento del carico e dall'elasticità del cloud. Per i Windows-based siti Web, il rehosting in genere significa eseguirli su Internet Information Services (IIS) su. AWS Per le applicazioni basate su desktop, è necessario installare l'applicazione e consentire agli utenti di connettervisi dall'esterno.

Internet Information Services su AWS

Internet Information Services (IIS) è un server web di Microsoft che funziona su un sistema operativo Windows e viene utilizzato per ospitare siti e servizi web. IIS può essere installato su qualsiasi istanza Amazon EC2 che esegue Windows Server. Dopo aver abilitato e configurato IIS, puoi distribuire ASP.NET siti Web e servizi utilizzando lo stesso meccanismo di distribuzione utilizzato per gli ambienti locali.

Se ospiti IIS su istanze EC2 Windows, è importante seguire il AWS Well-ArchitectedFramework utilizzando il bilanciamento del carico, i gruppi di Auto Scaling e la distribuzione Multi-AZ a seconda del carico di lavoro e delle esigenze HADR. Ti consigliamo di utilizzare the AWS Launch Wizardperché ti guida attraverso il dimensionamento, la configurazione e la distribuzione di un carico di lavoro di Windows Server su cui vengono eseguite risorse IIS. AWS Avvio della procedura guidata implementa un'architettura a disponibilità elevata che si estende su due zone di disponibilità con i componenti di elaborazione, rete e archiviazione necessari per un VPC appena creato o esistente.

Hosting di applicazioni desktop su AWS

Molti client hanno la necessità di accedere ad applicazioni thick client basate su Windows. È possibile scegliere tra tre diverse piattaforme:

  • Amazon EC2: scegli questa opzione se desideri che i tuoi utenti si connettano a un Server-based ambiente Windows utilizzando Microsoft Remote Desktop. Con questa opzione, l'applicazione delle patch e la manutenzione del sistema operativo rientrano tra le tue responsabilità. Inoltre, sarà necessario acquistare licenze di accesso client aggiuntive per Remote Desktop Services (RDS CAL) per gli utenti e assicurarsi di avere licenze Software Assurance (SA) attive. Per ulteriori informazioni, consulta Microsoft Licensing on AWS nella AWS documentazione.

  • Amazon WorkSpaces: scegli questa opzione se hai bisogno di un'infrastruttura desktop virtuale (VDI) completamente gestita per i tuoi utenti. Puoi usarla WorkSpaces per fornire un'esperienza Windows Desktop persistente ai tuoi utenti. È inoltre possibile personalizzare WorkSpaces l'ambiente e installare applicazioni.NET utilizzando un'immagine personalizzata oppure utilizzare AWS Systems Managerper distribuire le applicazioni.NET nei propri WorkSpaces ambienti. Gli utenti possono connettersi utilizzando il proprio browser o il WorkSpacesclient Amazon.

  • WorkSpaces Applicazioni Amazon: scegli questa opzione per fornire un accesso sicuro, affidabile e scalabile alle applicazioni e ai desktop non persistenti da qualsiasi posizione. Puoi utilizzare WorkSpaces Applications per consentire agli utenti di accedere alle tue applicazioni.NET dal Web. Se disponi già di RDS CAL e SA attivi, puoi utilizzare tali licenze con WorkSpaces Applicazioni utilizzando License Mobility.

Conversione piattaforma

La ridefinizione della piattaforma implica la modifica dell'ambiente di hosting con modifiche minime o nulle al codice. Scegli questa strategia per ridurre il sovraccarico operativo e sfruttare le funzionalità e i servizi del cloud.

AWS Elastic Beanstalk

È possibile utilizzarlo AWS Elastic Beanstalkper ripiattaforma i carichi di lavoro.NET Framework. Se si impacchettano le proprie ASP.NET Core-based applicazioni ASP.NET-based o, è possibile distribuire e gestire rapidamente le applicazioni AWS senza dover conoscere l'infrastruttura che esegue tali applicazioni. Ciò riduce la complessità di gestione senza limitare la scelta o il controllo. Basta caricare la tua applicazione perché Elastic Beanstalk gestisca automaticamente tutti i dettagli correlati a provisioning della capacità, bilanciamento del carico, dimensionamento e monitoraggio dello stato dell'applicazione.

Per ulteriori informazioni, consulta le seguenti risorse:

Containerizzazione delle applicazioni esistenti

Puoi usare Amazon ECS o Amazon EKS per ospitare le tue applicazioni Docker-based containerizzate. AWS gestisce entrambi i servizi. La scelta tra i due dipende dalle proprie conoscenze e preferenze. Entrambe le opzioni possono eseguire Linux-based contenitori o Windows-based contenitori.

Per ulteriori informazioni, consulta le seguenti risorse:

La containerizzazione delle applicazioni basate su .NET dipende dal runtime .NET utilizzato. Considera i seguenti aspetti:

  • Framework-based Applicazioni.NET vengono eseguite su contenitori Windows: l'aggiunta del supporto Docker alle applicazioni esistenti viene effettuata creando un file Docker che descrive come l'applicazione deve essere containerizzata.

  • .NET o.NET Core: oltre a eseguire versioni più recenti. NET-based è possibile utilizzare AWS App Runneranche applicazioni Web su Amazon ECS o Amazon EKS. App Runner è una soluzione serverless e completamente gestita che esegue il codice o l'immagine del container e gestisce il bilanciamento del carico, il dimensionamento automatico, la registrazione, i certificati e le reti.

Refactor/re-architect codice esistente

Scegliete questa opzione se avete una forte esigenza aziendale di aggiungere funzionalità, scalabilità o prestazioni altrimenti difficili da ottenere nell'ambiente corrente dell'applicazione. A seconda della roadmap dell'applicazione, si può decidere di modificare il codice per utilizzare il framework più recente o servizi nativi del cloud oppure riprogettarlo per ottimizzarne l'esecuzione nel cloud.

La prima opzione di rifattorizzazione consiste nel migrare l'applicazione .NET Framework esistente su .NET. Il passaggio a .NET offre il vantaggio di funzionare su Linux anziché su Windows. Ciò riduce il costo totale delle licenze e permette di sfruttare i framework e le versioni dei linguaggi di programmazione .NET più recenti.

AWS SDK per .NET

AWS SDK per .NETsemplifica l'utilizzo Servizi AWS fornendo un set di librerie coerenti e familiari agli sviluppatori.NET. L' AWS SDK offre supporto multipiattaforma ed è distribuito tramite. NuGet Gli sviluppatori possono utilizzare l' AWS SDK per richiamare facilmente i servizi cloud dal proprio codice.NET, soddisfacendo i requisiti di archiviazione, accodamento, autenticazione e configurazione dell'applicazione.

Modernizzazione delle applicazioni .NET Framework

È possibile migrare da.NET Framework utilizzando AWS Transform for .NET, che analizza i file di codice e crea un report che aiuta a pianificare la roadmap di migrazione del portafoglio di applicazioni. Porting Assistant for .NET può anche ridurre il sovraccarico di porting identificando API e pacchetti .NET Core incompatibili e trovando sostituti noti. La migrazione delle applicazioni.NET Framework in.NET consente di eseguirle su processori ARM64-based Graviton per un miglior rapporto prezzo/prestazioni. Per ulteriori informazioni, consulta.NET su Graviton on GitHub e Graviton e i contenitori nella documentazione di Workshop Studio. AWS

Dalle applicazioni monolitiche ai microservizi

Molti team di sviluppo desiderano riprogettare le applicazioni monolitiche esistenti adottando i microservizi. Passando ad architetture basate su microservizi, i team di sviluppo possono aumentare l'agilità di sviluppo, ridurre i costi di elaborazione, dimensionare i servizi su base individuale e ridurre i tempi di implementazione. Riconoscendo i vari componenti e categorizzando le funzioni, i team di sviluppo hanno la possibilità di trasferire gradualmente le funzionalità dalle applicazioni monolitiche basate su .NET Framework ai servizi in .NET.

Rifattorizzazione ad applicazioni serverless

AWS Lambdaè un servizio di elaborazione serverless e basato sugli eventi che consente di eseguire codice per praticamente qualsiasi tipo di applicazione o servizio di backend senza dover fornire o gestire server. È possibile estrarre la logica dall'applicazione esistente per creare flussi di lavoro serverless basati su eventi che si dimensionano automaticamente secondo necessità utilizzando .NET e Lambda. I casi d'uso più comuni di Lambda includono carichi di lavoro basati su eventi che vengono eseguiti per alcuni secondi o minuti con esigenze di dimensionamento diverse, come elaborazione di file, analisi, siti web e applicazioni per dispositivi mobili. Per ulteriori informazioni, consulta Creazione di funzioni Lambda con C# nella documentazione di Lambda.

Risorse aggiuntive