Migração de aplicações .NET - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Migração de aplicações .NET

A migração de seus aplicativos.NET AWS permite que você crie cargas de trabalho altamente disponíveis com recursos de escalabilidade elástica, reduza a sobrecarga operacional e aumente a agilidade de seus negócios concentrando-se em seu valor diferenciador.

Esta seção se concentra nas diferentes opções para hospedar seus aplicativos.NET em AWS. Você pode escolher entre usar uma VM, uma solução gerenciada AWS Elastic Beanstalk, como armazenar seu código em contêineres ou refatorar seu código em uma arquitetura baseada em microsserviços ou sem servidor.

Avaliar

A escolha de um caminho de migração para sua workload .NET depende dos seguintes fatores principais:

  • Encontrar a versão .NET usada: há duas diferentes implementações do .NET que contam com o suporte da Microsoft: .NET Framework (1.0 a 4.8) e .NET (.NET Core 1.0 a 3.1 e .NET 5 e mais recente). Ambas compartilham muitos dos mesmos componentes e podem executar código de aplicação escrito usando as diferentes linguagens de programação .NET (como C#, F# e VB.NET). A escolha de uma estratégia de migração e de um serviço de hospedagem depende do runtime usado, uma vez que o .NET Framework é executado no Windows, enquanto o .NET mais recente é multiplataforma. No .NET Framework, você pode hospedar em um sistema operacional Windows ou refatorar seu código para usar o .NET mais novo. O .NET mais novo também pode ser hospedado em serviços baseados no sistema operacional Linux. Ao modernizar workloads baseadas no .NET Framework, você pode usar o Assistente de Portabilidade para .NET ou o AWS Toolkit for .NET Refactoring para verificar seu código e gerar um relatório de avaliação de compatibilidade. Ao descobrir se há o.NET Framework incompatível APIs referenciado pelo seu projeto, você pode planejar a complexidade de um projeto de migração e decidir se e quando refatorar seu código para usar um tempo de execução mais novo.

  • Revise sua implantação atual — Verifique se a carga de trabalho migrada atualmente tem CI/CD pipelines existentes que podem ser atualizados para implantar as mesmas cargas de trabalho na nuvem. O uso de um pipeline existente de criação e implantação pode reduzir o tempo necessário para implantar sua aplicação na nuvem, automatizando as etapas necessárias para criar, configurar e implantar suas workloads.

  • Revisar seu roteiro: dependendo do estado atual do projeto, talvez você já esteja planejando redefinir a arquitetura ou o design das suas aplicações. Qualquer modernização feita deve levar em consideração o roteiro do produto. Por exemplo, a decisão de conteinerizar o código existente ou refatorar uma arquitetura monolítica em microsserviços é, idealmente, parte do roteiro do produto e está alinhada com outros esforços de desenvolvimento.

Mobilizar

Há três caminhos de migração diferentes a serem considerados ao migrar suas cargas de trabalho do.NET para. AWS Você pode escolher entre as diferentes opções, dependendo da complexidade de sua base de código existente, do tempo alocado para a migração e do tamanho da equipe alocada para apoiar o trabalho de migração. Ao considerar a modernização como parte de sua migração, é uma prática recomendada estar alinhado ao roteiro do produto.

  • Rehospedar (lift & shift) — Você pode escolher essa abordagem se sua prioridade for uma migração mais rápida, AWS com pouca ou nenhuma alteração. Você pode rehospedar sites baseados em ASP.NET nos Serviços de Informações da Internet (IIS) executados em instâncias da Amazon. EC2 Você pode rehospedar seus aplicativos baseados em desktop (como Windows Presentation Foundation, Web Forms e .NET MAUI) em uma das plataformas de computação do usuário final, como Amazon 2.0 AppStream ou Amazon. WorkSpaces

  • Redefinir a plataforma: a redefinição da plataforma é mais adequada para quando você deseja hospedar sua aplicação usando um serviço gerenciado sem fazer alterações de código, mas quer reduzir a sobrecarga operacional descarregando tarefas pesadas indiferenciadas, como instalação, aplicação de patches, atualizações e gerenciamento de instâncias. Essa estratégia também é adequada para equipes que desejam migrar para workloads baseadas em contêiner. Você pode reformatar seus aplicativos existentes para o Elastic Beanstalk ou usar contêineres Docker hospedados no Amazon ECS, Amazon EKS ou. AWS App Runner

  • Refatorar — Escolha essa abordagem se você puder investir tempo e esforço em fazer alterações no código e na arquitetura que reduzam a sobrecarga operacional e obtenham melhor escalabilidade, alta disponibilidade e recuperação de desastres usando AWS serviços nativos da nuvem. A refatoração envolve a modernização de sua base de código portando as aplicações existentes do .NET Framework para o .NET (anteriormente .NET Core) ou modernizando uma base de código existente para funcionar melhor na nuvem. Você pode usar o AWS SDK para .NETpara chamar vários serviços de AWS nuvem de dentro do seu código.NET. Ferramentas como o Porting Assistant para .NET AWS Microservice Extractor for .NETpodem ser usadas para portar sua base de código do.NET Framework para o.NET e dividir seu aplicativo monolítico em microsserviços. Ao refatorar suas cargas de trabalho.NET existentes para execução AWS Lambda, você pode usar a computação sem servidor para evitar o provisionamento e o gerenciamento da infraestrutura.

Migrar

As etapas da migração de suas workloads .NET dependem do caminho de migração que você escolheu durante a fase de avaliação e do tipo de aplicação.

Redefinir a hospedagem das aplicações .NET

Escolha esse caminho de migração se quiser migrar sua aplicação sem fazer nenhuma alteração de código, mas quiser aproveitar a escala automática, o balanceamento de carga e a elasticidade na nuvem. Para sites baseados em Windows, a nova hospedagem geralmente significa executá-los nos Serviços de Informações da Internet (IIS). AWS Para aplicações baseadas em desktop, você deve instalar a aplicação e permitir que os usuários se conectem a ela externamente.

Serviços de informações da Internet em AWS

O Internet Information Services (IIS) é um servidor web da Microsoft executado em um sistema operacional Windows e usado para hospedar sites e serviços web. O IIS pode ser instalado em qualquer EC2 instância da Amazon executando o Windows Server. Depois que o IIS estiver habilitado e configurado, você poderá implantar seus sites e serviços ASP.NET usando o mesmo mecanismo de implantação que usa para ambientes on-premises.

Se você hospeda o IIS em instâncias EC2 do Windows, é importante seguir o AWS Well-Architected Framework usando balanceamento de carga, grupos de Auto Scaling e implantação Multi-AZ, dependendo da carga de trabalho e das necessidades de HADR. Recomendamos usar o AWS Launch Wizardporque ele orienta você no dimensionamento, configuração e implantação de uma carga de trabalho do Windows Server executando recursos do IIS em. AWS O Launch Wizard implanta uma arquitetura altamente disponível que abrange duas zonas de disponibilidade com os componentes de computação, rede e armazenamento necessários para uma VPC recém-criada ou existente.

Hospedando aplicativos de desktop em AWS

Muitos clientes precisam acessar aplicações thick client baseadas em Windows. Você pode escolher entre três diferentes plataformas:

  • Amazon EC2 — Escolha essa opção se quiser que seus usuários se conectem a um ambiente baseado no Windows Server usando o Microsoft Remote Desktop. Com essa opção, você é responsável por corrigir e manter seu sistema operacional. Você também deve comprar licenças adicionais de acesso de cliente (RDS CALs) dos Serviços de Área de Trabalho Remota para seus usuários e o Software Assurance (SA) ativo. Para obter mais informações, consulte Licenciamento da Microsoft AWS na AWS documentação.

  • Amazon WorkSpaces — Escolha essa opção se você precisar de uma infraestrutura de desktop virtual (VDI) totalmente gerenciada para seus usuários. Você pode usar WorkSpaces para fornecer uma experiência persistente do Windows Desktop aos seus usuários. Você também pode personalizar seu WorkSpaces ambiente e instalar aplicativos.NET usando uma imagem personalizada ou usar AWS Systems Managerpara entregar seus aplicativos.NET aos seus WorkSpaces ambientes. Os usuários podem se conectar usando o navegador ou o WorkSpacescliente Amazon.

  • Amazon AppStream 2.0 — Escolha essa opção para fornecer acesso seguro, confiável e escalável a aplicativos e desktops não persistentes de qualquer local. Você pode usar AppStream 2.0 para permitir que seus usuários acessem seus aplicativos.NET pela web. Se você já tiver o RDS existente CALs e o SA ativo, poderá usar essas licenças com AppStream 2.0 usando a Mobilidade de Licenças.

Redefinir a plataforma

A redefinição da plataforma envolve mudar seu ambiente de hospedagem com pouca ou nenhuma alteração de código. Escolha essa estratégia para reduzir a sobrecarga operacional e aproveitar os recursos e serviços da nuvem.

AWS Elastic Beanstalk

Você pode usar AWS Elastic Beanstalkpara reformatar suas cargas de trabalho do.NET Framework. Se você empacotar seus aplicativos baseados em ASP.NET ou ASP.NET Core, poderá implantar e gerenciar aplicativos rapidamente AWS sem precisar aprender sobre a infraestrutura que executa esses aplicativos. Isso reduz a complexidade sem restringir a opção ou o controle. Basta fazer upload da aplicação e o Elastic Beanstalk automaticamente identifica os detalhes do provisionamento de capacidade, balanceamento de carga, escalabilidade e monitoramento da integridade da aplicação.

Para saber mais, consulte os seguintes recursos:

Conteinerizar aplicações existentes

Você pode usar o Amazon ECS ou o Amazon EKS para hospedar seus aplicativos em contêineres baseados em Docker. AWS gerencia os dois serviços. A escolha entre os dois depende do conhecimento existente e da preferência. Ambas as opções podem executar contêineres baseados em Linux ou Windows.

Para saber mais, consulte os seguintes recursos:

A conteinerização de aplicações baseadas em .NET depende do runtime usado do .NET. Considere o seguinte:

  • Aplicações baseadas em .NET Framework são executadas em contêineres do Windows: a adição do suporte do Docker às aplicações é feita por meio da criação de um arquivo do Docker que descreve como a aplicação precisa ser conteinerizada. Você pode usar AWS App2Containerpara colocar em contêineres e migrar facilmente os aplicativos existentes baseados em.NET Framework para o. AWS O App2Container verifica o servidor IIS para identificar os arquivos necessários e extrair a aplicação de destino para criar uma imagem do Docker. Você também pode usar o App2Container para criar os artefatos de implantação necessários para hospedar seu aplicativo no. Nuvem AWS

  • .NET ou .NET Core — Além de executar novos aplicativos web baseados em .NET no Amazon ECS ou no Amazon EKS, você também pode usar. AWS App Runner O App Runner é uma solução totalmente gerenciada e sem servidor que executa imagem de código ou contêiner e gerencia balanceamento de carga, ajuste de escala automático, registro em log, certificados e rede.

Refatorar/redefinir a arquitetura de código existente

Escolha essa opção se você tiver uma forte necessidade comercial de adicionar recursos, escala ou desempenho que, de outra forma, seriam difíceis de alcançar no ambiente atual do aplicativo. Dependendo do roteiro da aplicação, você pode optar por alterar seu código para usar a estrutura mais recente, os serviços nativos da nuvem ou redefinir a arquitetura para melhor execução na nuvem.

A primeira opção de refatoração disponível é migrar sua aplicação .NET Framework existente para o .NET. A mudança para o .NET oferece a vantagem de execução no Linux em vez do Windows. Isso reduz o custo total de licenciamento, fornece as estruturas mais recentes e oferece as versões mais novas das linguagens de programação .NET.

AWS SDK para .NET

AWS SDK para .NETsimplifica o uso de Serviços da AWS fornecendo um conjunto de bibliotecas que são consistentes e familiares para desenvolvedores.NET. O AWS SDK oferece suporte multiplataforma e é distribuído usando. NuGet Os desenvolvedores podem usar o AWS SDK para chamar facilmente os serviços em nuvem a partir do código.NET, atendendo aos requisitos de armazenamento, enfileiramento, autenticação e configuração do aplicativo.

Modernizar aplicações .NET Framework

Você pode migrar do .NET Framework usando o Assistente de Portabilidade para .NET, que verifica seus arquivos de código e cria um relatório que ajuda a planejar seu roteiro de migração do portfólio de aplicações. O Porting Assistant para.NET também pode reduzir sua sobrecarga de portabilidade identificando pacotes APIs e núcleos incompatíveis e encontrando substitutos conhecidos. O AWS Toolkit para refatoração do.NET é uma extensão do Visual Studio que reduz o tempo e o esforço necessários para os desenvolvedores refatorarem aplicativos.NET herdados em alternativas baseadas em nuvem no. AWS Ele avalia o código-fonte do aplicativo para recomendar possíveis caminhos de modernização, como a migração para o.NET Core, identifica configurações de dependência do IIS e do Active Directory específicas do Windows, realiza modificações no código sempre que possível para permitir a compatibilidade com o Linux e ajuda a validar o aplicativo refatorado em. Serviços da AWS A migração de aplicativos.NET Framework para o.NET permite executá-los em processadores Graviton ARM64 baseados em uma melhor relação preço/desempenho. Para obter mais informações, consulte.NET on Graviton on GitHub e Graviton2 e contêineres em Otimizando custos com serviços baseados em AWS Graviton na documentação do Workshop Studio. AWS

Monólito para microsserviços

Muitas equipes de desenvolvimento desejam redefinir a arquitetura de suas aplicações monolíticas existentes em microsserviços. Ao migrar para arquiteturas baseadas em microsserviços, suas equipes de desenvolvimento podem aumentar a agilidade do desenvolvimento, diminuir os custos de computação, escalar os serviços individualmente e diminuir os tempos de implantação. AWS Microservice Extractor for .NETsimplifica o processo de refatoração de aplicativos monolíticos mais antigos em uma arquitetura baseada em microsserviços. Ao identificar componentes e agrupar a funcionalidade, as equipes de desenvolvimento podem extrair de forma incremental a funcionalidade das aplicações monolíticas do .NET Framework para os serviços .NET.

Refatorar aplicações com a tecnologia sem servidor

AWS Lambdaé um serviço de computação sem servidor e orientado por eventos que permite executar código para praticamente qualquer tipo de aplicativo ou serviço de back-end sem provisionar ou gerenciar servidores. Você pode extrair a lógica da sua aplicação existente para criar fluxos de trabalho sem servidor baseados em eventos que fazem o ajuste de escala automático quando necessário usando .NET e Lambda. Os casos de uso comuns do Lambda incluem workloads orientadas por eventos que são executadas por alguns segundos ou minutos com necessidades de escalabilidade variadas, como processamento de arquivos, análises, sites e aplicações móveis. Para obter mais informações, consulte Como criar funções do Lambda com C# na documentação do Lambda.

Recursos adicionais