> ## Content Index
> Fetch the complete content index at: https://www.azurebrasil.cloud/llms.txt
> Use this file to discover other available public pages before exploring further.

# Migrando Legados - Planejando a migração de uma aplicação .NET Full Framework para a cloud
- URL: https://www.azurebrasil.cloud/blog/migrar-net-full-sql-server/
- Published: 2024-10-03T10:00:40.000Z
- Updated: 2024-10-03T10:00:40.000Z
- Author: Bruno Brito
- Tags: azure-app-services, estudo-de-caso, azure-sql-database

Como planejar a migração de uma aplicação em .NET Full Framework 4.8, atualmente hospedada em um servidor Windows e utilizando SQL Server 2008, que gera arquivos para download?

![opcoes-modernizacao](https://www.brunobrito.net.br/content/images/2019/06/opcoes-modernizacao.JPG)

# 6 Rs da Migração para a Nuvem

Em um processo de migração é necessário considerar as melhores estratégias para uma transição eficiente para a nuvem. Neste processo, surgem várias questões, como a escolha do provider de nuvem, quais os serviços que melhor se adaptam ao cenário atual.

Os 6 Rs da migração para a nuvem, é uma framework desenvolvida pela Amazon (AWS). Ela oferece estratégias para empresas que buscam otimizar a migração de suas aplicações e serviços para a nuvem. Neste contexto, vamos focar em duas abordagens que são mais comuns: ReHost e RePlataform.

A estratégia ReHost, frequentemente chamada de "lift-and-shift", é uma abordagem direta onde a aplicação é transferida para a nuvem sem modificações significativas. Essa opção é particularmente atraente em cenários onde a familiaridade com as opções de serviço de nuvem é limitada ou quando se deseja evitar alterações na aplicação. A grosso modo, pode dizer que é como fazer um backup da aplicação On-Premise e restaurá-la em uma VM na Cloud.

Por outro lado, a estratégia RePlataform busca adaptar a aplicação para aproveitar melhor as vantagens da nuvem, mas sem fazer alterações significativas na arquitetura ou no código. O objetivo é realizar ajustes mínimos que permitam otimizar a aplicação para o ambiente de nuvem, como a utilização de serviços de banco de dados gerenciados ou recursos de armazenamento e processamento escaláveis. Essa abordagem busca um equilíbrio entre a minimização de mudanças na aplicação e a otimização de seu desempenho e custo no ambiente de nuvem.

Nós como arquitetos de cloud, temos como **missão** buscar entender a aplicação legada e conduzir para um RePlataform de maneira atingir um resultado ótimo.

![person playing magic cube](https://images.unsplash.com/photo-1539627831859-a911cf04d3cd?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fHNvbHV0aW9ufGVufDB8fHx8MTcwMjQxNTEwMXww&ixlib=rb-4.0.3&q=80&w=2000)

## Solução

Nesse contexto a solução envolve a utilização de um Azure App Service para hospedar a aplicação, um Azure SQL para o banco de dados e um Azure Storage para lidar com os arquivos gerados pela aplicação.

Embora o **Blob** do Storage seja uma opção, ele requer alterações no código da aplicação para fazer upload dos arquivos. Para contornar isso, pode ser utilizado um **File Share** no lugar do Blob. Dessa forma é possivel efetuar um `mount` no Azure App Service. Assim a aplicação poderá gerar arquivos e salvá-los em um diretório específico do servidor, por exemplo, `C:\mounts\`.

Esta estrutura garante que todos os arquivos criados neste diretório sejam automaticamente armazenados no **File Share** do Azure Storage. Além disso, como um benefício adicional, haverá backups automáticos destes arquivos.

O próximo passo é disponibilizar esses arquivos para download. Isso será feito configurando a pasta `/mounts` como um diretório virtual no Azure App Service, permitindo que os usuários acessem e baixem os arquivos.

Por fim, a migração do banco de dados para o Azure SQL será realizada. Isso envolve a transferência dos dados do SQL Server 2008 para o Azure SQL, porém essa abordagem requer cuidados adicionais.

# Migração do SQL Server On-Premises para o Azure SQL

A escolha entre implementar o Azure SQL ou uma VM rodando SQL Server depende de diversos fatores, incluindo o uso do SQL em termos de recursos (como Memória e CPU) e funcionalidades específicas do SQL Server. Em alguns casos, o Azure SQL pode resultar em custos mais elevados comparados à execução de uma VM com SQL Server, ou pode haver incompatibilidades em relação a determinadas funcionalidades. Para descobrir isso a Microsoft oferece [ferramentas de análise](https://learn.microsoft.com/en-us/sql/sql-server/migrate/dma-azure-migrate-compare-migration-tools?view=sql-server-ver16&ref=azurebrasil.cloud) que auxiliam nessa decisão, fornecendo recomendações baseadas no seu uso do banco de dados On-Premises.

Embora seja raro, existem situações em que o Azure SQL não é a opção recomendada. Presumindo que seu seja igual a maioria, ou seja, usar o Azure SQL, você vai ter que decidir entre duas opções de migração: online ou offline.

## Migração Offline

Esta abordagem é relativamente mais simples, mas implica em um período de downtime da aplicação. O processo envolve a criação de um backup do banco de dados on-premises, seguido pela restauração desse backup no Azure SQL. Após a restauração, é necessário atualizar a string de conexão da aplicação para apontar para o novo banco de dados no Azure, finalizando o processo.

## Migração Online

A migração online permite manter a aplicação operacional durante todo o processo. Primeiramente, é realizada uma cópia do banco de dados on-premises e restaurada no Azure SQL. Em seguida, configura a **replicação** entre o banco de dados on-premises e o Azure SQL, mantendo-os sincronizados. Uma vez concluída a sincronização, a string de conexão da aplicação é atualizada para o Azure SQL. Este método é mais complexo, mas evita tempo de inatividade da aplicação.

## Nossa decisão: Migração offline

Nosso time optou pela migração offline, pois tanto nós quanto o cliente considerou que essa abordagem seria mais rápida. O processo de setup e restauração do backup foi concluído em menos de uma hora. Realizamos a migração em um horário de menor atividade e tudo ocorreu conforme o planejado!

## Conclusão

A migração de uma aplicação para a nuvem exige uma série de decisões estratégicas e técnicas que variam de acordo com o cenário e as expectativas de cada projeto. Não existe uma solução única que seja a "melhor" para todos os casos. A escolha entre as abordagens ReHost e RePlatform, a seleção dos serviços mais adequados na nuvem, o método de transferência do banco de dados são decisões em conjunto com nossos clientes. É necessário expor os pontos positivos e negativos de cada opção.

No caso apresentado, a opção pela migração offline resultou em uma transição rápida, segura e eficiente. Com um impacto minimo para o cliente e garantindo que a aplicação estivesse operacional em pouco tempo.

Na AzureBrasil, todas as migrações são analisadas em parceria com o cliente, garantimos que a melhor estratégia seja adotada para cada situação.

Com um bom planejamento e o uso adequado das ferramentas, é possível realizar uma migração segura, otimizando os recursos e aproveitando ao máximo os benefícios da nuvem.