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). Le due versioni hanno molti componenti in comune e possono eseguire codice applicativo scritto nei 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. Il nuovo .NET può anche essere ospitato su servizi basati su sistema operativo Linux. Per modernizzare i carichi di lavoro basati su .NET Framework, è possibile utilizzare Porting Assistant per .NET o AWS Toolkit for .NET Refactoring per scansionare il codice e generare un report di valutazione della compatibilità. Scoprendo se il progetto APIs fa riferimento a .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 distribuzione 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 durante la migrazione 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 siti Web basati su ASP.NET 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 2.0 AppStream 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. Strumenti come Porting Assistant for .NET AWS Microservice Extractor for .NETpossono essere utilizzati per trasferire la base di codice da .NET Framework a .NET e suddividere l'applicazione monolitica in microservizi. 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 siti Web basati su Windows, 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 EC2 istanza Amazon che esegue Windows Server. Dopo aver abilitato e configurato IIS, puoi implementare i siti web e i servizi ASP.NET utilizzando lo stesso meccanismo di implementazione utilizzato per gli ambienti on-premise.

Se si ospita IIS su istanze EC2 Windows, è importante seguire il AWS Well-Architected Framework 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 nel dimensionamento, nella configurazione e nella distribuzione di un carico di lavoro di Windows Server su cui sono in esecuzione 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 ambiente basato su Windows Server utilizzando Microsoft Remote Desktop. Con questa opzione, l'applicazione delle patch e la manutenzione del sistema operativo rientrano tra le tue responsabilità. È inoltre necessario acquistare licenze di accesso client (RDS CALs) aggiuntive di Remote Desktop Services per gli utenti e 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.

  • Amazon AppStream 2.0: scegli questa opzione per fornire un accesso sicuro, affidabile e scalabile alle applicazioni e ai desktop non persistenti da qualsiasi posizione. È possibile utilizzare la AppStream versione 2.0 per consentire agli utenti di accedere alle applicazioni.NET dal Web. Se disponi già di RDS CALs e di SA attivi, puoi utilizzare tali licenze con la AppStream versione 2.0 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 utilizzarle AWS Elastic Beanstalkper ripiattaforma i carichi di lavoro.NET Framework. Se si impacchettano applicazioni basate su ASP.NET o ASP.NET Core, è 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. Dovrai semplicemente caricare l'applicazione affinché Elastic Beanstalk gestisca automaticamente tutti i dettagli correlati a provisioning della capacità, bilanciamento del carico, dimensionamento e monitoraggio dell'integrità 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 containerizzate basate su Docker. AWS gestisce entrambi i servizi. La scelta tra i due dipende dalle proprie conoscenze e preferenze. Entrambe le opzioni possono eseguire container basati su Linux o container basati su Windows.

Per ulteriori informazioni, consulta le seguenti risorse:

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

  • Le applicazioni basate su .NET Framework vengono eseguite su container Windows: l'aggiunta del supporto Docker alle applicazioni esistenti viene effettuata creando un file Docker che delinea le modalità di containerizzazione dell'applicazione. È possibile utilizzarlo AWS App2Containerper containerizzare e migrare facilmente le applicazioni esistenti basate su .NET Framework in. AWS App2Container esegue la scansione del server IIS per determinare i file richiesti ed estrae l'applicazione di destinazione per creare un'immagine Docker. È inoltre possibile utilizzare App2Container per creare gli elementi di distribuzione necessari per ospitare l'applicazione in. Cloud AWS

  • .NET o.NET Core: oltre a eseguire nuove applicazioni Web basate su .NET su Amazon ECS o Amazon EKS, puoi anche utilizzare. AWS App Runner 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.

Rifattorizzazione o riprogettazione del codice esistente

Scegli questa opzione se hai una forte necessità 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 Porting Assistant per .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 .NET Core APIs e pacchetti incompatibili e trovando sostituti noti. Il AWS Toolkit for .NET refactoring è un'estensione di Visual Studio che riduce il tempo e l'impegno necessari agli sviluppatori per rifattorizzare le applicazioni .NET legacy in alternative basate sul cloud. AWS Valuta il codice sorgente dell'applicazione per consigliare possibili percorsi di modernizzazione come il porting su.NET Core, identifica le configurazioni di dipendenza IIS e Active Directory specifiche per Windows, esegue modifiche al codice ove possibile per abilitare la compatibilità con Linux e aiuta a convalidare l'applicazione sottoposta a refactoring su. Servizi AWS La migrazione delle applicazioni.NET Framework in.NET consente di eseguirle su processori Graviton basati su processori Graviton per un miglior rapporto prezzo/prestazioni. ARM64 Per ulteriori informazioni, consulta .NET su Graviton on GitHub e Graviton2 e i contenitori di Optimizing cost with AWS Graviton based services 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, scalare i servizi individualmente e ridurre i tempi di implementazione. AWS Microservice Extractor for .NETsemplifica il processo di refactoring delle vecchie applicazioni monolitiche in un'architettura basata su microservizi. 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 senza server 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