

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 name="migrating-net-workloads"></a>

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 aborda as diferentes opções para hospedar suas aplicações .NET na AWS. Você pode escolher entre usar uma VM, uma solução gerenciada como o [AWS Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/), conteinerizar seu código ou refatorá-lo em uma arquitetura baseada em microsserviços ou na tecnologia sem servidor.

## Avaliar
<a name="migrating-net-workloads-assess"></a>

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). Ambos compartilham muitos dos mesmos componentes e podem executar código de aplicativo 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 novo.NET também pode ser hospedado em OS-based serviços Linux. Ao modernizar Framework-based cargas de trabalho do.NET, você pode usar [o.NET AWS Transform para](https://docs.aws.amazon.com/transform/latest/userguide/dotnet.html) escanear seu código e gerar um relatório de avaliação de compatibilidade. Ao descobrir se há APIs incompatíveis do .NET Framework referenciadas 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 runtime 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
<a name="migrating-net-workloads-mobilize"></a>

Há três diferentes caminhos de migração a serem considerados ao migrar suas workloads .NET para a 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 ASP.NET-based sites nos Serviços de Informações da Internet (IIS) executados em instâncias do 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 [Applications WorkSpaces ](https://aws.amazon.com/appstream2/) ou Amazon. WorkSpaces](https://aws.amazon.com/workspaces-family/)
+ **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 redefinir a plataforma de suas aplicações existentes para o [Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/) ou usar os contêineres do Docker hospedados no [Amazon ECS](https://aws.amazon.com/ecs/), no [Amazon EKS](https://aws.amazon.com/eks/) ou no [AWS App Runner](https://aws.amazon.com/apprunner/).
+ **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 .NET](https://aws.amazon.com/sdk-for-net/) para chamar vários serviços da Nuvem AWS no código .NET. Ferramentas como [o.NET podem ser usadas AWS Transform para](https://docs.aws.amazon.com/transform/latest/userguide/dotnet.html) portar sua base de código do.NET Framework para o.NET. Ao refatorar suas workloads .NET existentes para serem executadas no [AWS Lambda](https://aws.amazon.com/lambda/), você pode usar a computação sem servidor para evitar o provisionamento e o gerenciamento da infraestrutura.

## Migrar
<a name="migrating-net-workloads-migrate"></a>

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
<a name="net-rehost"></a>

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 Windows-based sites, hospedar novamente geralmente significa executá-los nos Serviços de Informações da Internet (IIS) ativados 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
<a name="net-iis"></a>

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 instância do Amazon EC2 que execute o Windows Server. Depois que o IIS estiver habilitado e configurado, você poderá implantar seus ASP.NET sites e serviços usando o mesmo mecanismo de implantação usado em ambientes locais.

Se você hospeda o IIS em instâncias do EC2 Windows, é importante seguir a [AWS Well-ArchitectedEstrutura](https://aws.amazon.com/architecture/well-architected/) 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 Wizard](https://docs.aws.amazon.com/launchwizard/latest/userguide/what-is-launch-wizard-iis.html)porque 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
<a name="net-hosting"></a>

Muitos clientes precisam acessar aplicações thick client baseadas em Windows. Você pode escolher entre três diferentes plataformas:
+ [Amazon EC2](https://aws.amazon.com/pm/ec2/) — Escolha essa opção se quiser que seus usuários se conectem a um Server-based ambiente Windows usando o Microsoft Remote Desktop. Com essa opção, você é responsável por corrigir e manter seu sistema operacional. Você também deve comprar mais licenças de acesso ao cliente Remote Desktop Services (RDS CALs) para seus usuários e o [Software Assurance (SA) ativo](https://aws.amazon.com/windows/resources/licensemobility/). Para obter mais informações, consulte [Licenciamento da Microsoft AWS na](https://aws.amazon.com/windows/resources/licensing/) AWS documentação.
+ [Amazon WorkSpaces](https://aws.amazon.com/workspaces-family/) — 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 Manager](https://aws.amazon.com/systems-manager/)para entregar seus aplicativos.NET aos seus WorkSpaces ambientes. Os usuários podem se conectar usando o navegador ou o [ WorkSpacescliente Amazon](https://clients.amazonworkspaces.com/).
+ [Amazon WorkSpaces Applications](https://aws.amazon.com/appstream2/) — 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 WorkSpaces Aplicativos para permitir que seus usuários acessem seus aplicativos.NET pela web. [Se você já tiver CALs de RDS existentes e SA ativo, poderá usar essas licenças com WorkSpaces aplicativos usando a Mobilidade de Licenças.](https://aws.amazon.com/windows/resources/licensemobility/)

## Redefinir a plataforma
<a name="migrating-net-workloads-replatform"></a>

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
<a name="net-beanstalk"></a>

Você pode usar o [AWS Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/) para redefinir a plataforma das suas workloads do .NET Framework. Se você empacotar seus ASP.NET Core-based aplicativos ASP.NET-based ou aplicativos, 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 gerencia os detalhes de provisão de capacidade, balanceamento de carga, escalabilidade e monitoramento do status da aplicação.

Para saber mais, consulte os seguintes recursos:
+ [Criação e implantação de aplicações .NET no Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_NET.html) (documentação do Elastic Beanstalk)
+ [Trabalhar com .NET Core no Linux](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-dotnet-core-linux.html) (documentação do Elastic Beanstalk)
+ [Multi-App Support com domínios personalizados para.NET e AWS Elastic Beanstalk](https://aws.amazon.com/blogs/developer/multi-app-support-with-custom-domains-for-net-and-aws-elastic-beanstalk/) (AWS Developer Tools Blog)

### Conteinerizar aplicações existentes
<a name="net-containerize-existing"></a>

Você pode usar o Amazon ECS ou o Amazon EKS para hospedar seus aplicativos em Docker-based contêineres. 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 Linux-based contêineres ou Windows-based contêineres.

Para saber mais, consulte os seguintes recursos:
+ [Contêineres Windows para Amazon EC2](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_Windows.html) (documentação do Amazon ECS)
+ [Habilitar o suporte do Windows para seu cluster do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/windows-support.html) (documentação do Amazon EKS)
+ [Running Windows Containers with Amazon ECS on AWS Fargate](https://aws.amazon.com/blogs/containers/running-windows-containers-with-amazon-ecs-on-aws-fargate/) (Blog da AWS)
+ [Acelerando os tempos de lançamento de contêineres do Windows com o EC2 Image Builder e a estratégia de cache de imagens](https://aws.amazon.com/blogs/containers/speeding-up-windows-container-launch-times-with-ec2-image-builder-and-image-cache-strategy/) (AWS Blog)
+ [Início rápido: CI/CD para aplicativos.NET em AWS Fargate](https://aws.amazon.com/quickstart/architecture/dotnet-cicd-fargate/) (AWS documentação)

A conteinerização de aplicações baseadas em .NET depende do runtime usado do .NET. Considere o seguinte:
+ **Aplicativos.NET Framework-based executados em contêineres do Windows** — A adição do suporte ao Docker aos aplicativos existentes é feita por meio da criação de um arquivo Docker que descreve como o aplicativo precisa ser armazenado em contêineres.
+ **.NET ou .NET Core** — Além de executar versões mais recentes. NET-based aplicativos web no Amazon ECS ou no Amazon EKS, você também pode usar [AWS App Runner](https://aws.amazon.com/apprunner/). 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.

### Refactor/re-architect código existente
<a name="net-refactor"></a>

Escolha essa opção se você tiver uma forte necessidade de negócios de adicionar recursos, escala ou performance que, de outra forma, seriam difíceis de alcançar no ambiente atual da aplicação. 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
<a name="sdk-for-net"></a>

[AWS SDK para .NET](https://aws.amazon.com/sdk-for-net/)simplifica 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
<a name="net-modernize"></a>

Você pode migrar do.NET Framework usando AWS Transform o [for.NET](https://docs.aws.amazon.com/transform/latest/userguide/dotnet.html), 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 aplicativos. O Assistente de Portabilidade para .NET também pode reduzir sua sobrecarga de portabilidade identificando APIs e pacotes do .NET Core incompatíveis e descobrindo substitutos conhecidos. A migração de aplicativos.NET Framework para o.NET permite executá-los em processadores ARM64-based Graviton para obter uma melhor relação preço/desempenho. Para obter mais informações, [consulte.NET on Graviton](https://github.com/aws/aws-graviton-getting-started/blob/main/dotnet.md) on GitHub e [Graviton and containers na documentação](https://catalog.workshops.aws/graviton/en-US/amazoncontainers) do AWS Workshop Studio.

### Monólito para microsserviços
<a name="net-monolith"></a>

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ço, 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. 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
<a name="net-serverless-refactor"></a>

O [AWS Lambda](https://aws.amazon.com/lambda/) é um serviço computacional sem servidor e orientado a eventos que permite executar código em praticamente qualquer tipo de aplicação ou serviço de backend sem o provisionamento ou o gerenciamento de 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](https://docs.aws.amazon.com/lambda/latest/dg/applications-usecases.html) 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 [Criar funções do Lambda com C\#](https://docs.aws.amazon.com/lambda/latest/dg/lambda-csharp.html) na documentação do Lambda.

## Recursos adicionais do
<a name="migrating-net-workloads-resources"></a>
+ [Kit de ferramentas da AWS para Azure DevOps](https://aws.amazon.com/vsts/) (documentação da AWS )
+ [Configurando um CI/CD pipeline integrando o Jenkins com AWS CodeBuild e AWS CodeDeploy](https://aws.amazon.com/blogs/devops/setting-up-a-ci-cd-pipeline-by-integrating-jenkins-with-aws-codebuild-and-aws-codedeploy/) (AWS DevOps Blog)
+ [Sobre a ferramenta de AWS implantação para.NET](https://aws.github.io/aws-dotnet-deploy/) (AWS GitHub)
+ [.NET em AWS](https://aws.amazon.com/developer/language/net/) (AWS documentação)
+ [aws/dotnet](https://github.com/aws/dotnet) (GitHub)