O blog da AWS
Migrando Aplicações para Nuvem
Por Leonardo Azize Martins, Arquiteto de Infraestrutura Cloud do time de Professional Services para o Setor Público na AWS Brasil,
Antonio Cesar Vergani Junior, Arquiteto de Infraestrutura Cloud do time de Professional Services para o Setor Público na AWS Brasil,
Marcus Santos, Arquiteto especializado em migrações do time de Professional Services na AWS Brasil,
Dan Rezende, Arquiteto de Infraestrutura Cloud do time de Professional Services para o Setor Público na AWS Brasil,
Andreia Gouveia, Arquiteta especializado em migrações do time de Professional Services na AWS Brasil
Neste post vamos explicar sobre o processo de migração de aplicações do ambiente corporativo (on-premises) para Amazon Web Services (AWS). Uma necessidade bastante comum para empresas que estão na jornada de migração para a nuvem.
Você pode migrar qualquer carga de trabalho: aplicações, sites, bancos de dados, armazenamento, servidores físicos ou virtuais e até mesmo datacenters inteiros de um ambiente on-premises ou outra nuvem pública para a AWS.
Empresas do setor privado e público migram para AWS afim de obter aumento da capacidade de inovação, flexibilidade, escalabilidade, segurança e redução de custo com infraestrutura e serviços.
Anos de experiência com migrações bem sucedidas permitiram à AWS desenvolver metodologias, práticas, ferramentas e serviços que simplificam e aceleram os projetos de migração de seus clientes. Através de automação e orientação impulsionada por dados, a AWS simplifica cada etapa do processo de migração, reduzindo o esforço e a complexidade envolvida. Isso ajuda acelerar as suas migrações, otimizando o tempo para perceber o valor de sua migração para a nuvem.
Este post mostra como avaliar o ambiente a ser migrado, ilustrar as técnicas de migração disponíveis, e quais ferramentas podem ser utilizadas em cada etapa do processo de migração.
Passos de uma Migração
Recomendamos iniciar o projeto de migração com um levantamento do ambiente atual a ser migrado, seguido por um plano de migração, onde serão considerados todos os requisitos de negócio e as expectativas do resultado da migração. O plano de migração também deve considerar os pré-requisitos necessários para executar a migração no tempo esperado e com o mínimo de indisponibilidade possível. Veja os passos abaixo:
- Levantamento do Ambiente On-premises
- Análise do Ambiente
- Plano de Migração
- Migração de Aplicação e Dados
- Validação
Migrações podem ser off-line e on-line. Para cada uma, existem diferentes técnicas e ferramentas conforme o tipo de dados, armazenamento de arquivos, banco de dados, servidores de aplicação, entre outros.
Levantamento do Ambiente On-premises
O primeiro passo para o processo de migração é fazer um levantamento do ambiente on-premises atual. Esse levantamento fornecerá informações mais detalhadas dos recursos e aplicações a serem migrados. Quantidade, tamanho, volume, dependências, entre outros.
Você pode utilizar as ferramentas do AWS Application Discovery Service (ADS) para executar este levantamento. O ADS possui o Discovery Agent, um agente instalado localmente em cada máquina virtual (VM) ou máquina física. O agente coleta os processos em execução e conexões de rede, além de especificações da máquina e dados de performance sumarizados.
Há também a opção do Discovery Connector, um conector publicado no VMware vCenter. O conector coleta especificações e dados de performance sumarizada de cada VM, sem a necessidade da instalação de um agente em cada VM ou servidor.
O ADS é totalmente integrado ao AWS Migration Hub. O Migration Hub disponibiliza um único local para rastrear o progresso das migrações de aplicativos entre várias soluções da AWS, além de proporcionar visibilidade sobre o status da migração no portfólio de aplicativos. O Migration Hub também disponibiliza métricas importantes sobre o progresso da migração para aplicações individuais, independentemente de quais ferramentas estão sendo usadas para migrá-las. Isso permite obter atualizações de forma rápida relacionadas ao status atual de todas as migrações, ajudando a identificar e solucionar facilmente qualquer problema, bem como reduzir o tempo e os esforços gerais despendidos em projetos de migração.
Usando o Discovery Agent você terá uma visualização das conexões de rede entre cada máquina. Essa funcionalidade facilita a identificação de silos dentro do seu ambiente e o mapeamento da interdependência entre sistemas.
Figura 1. AWS Discovery Service, servers network map
Análise do Ambiente
O custo da solução na nuvem é um fator importante no processo de migração. Usar os recursos corretos, as ferramentas e as facilidades da AWS são essenciais para manter o custo sob controle. Escalar o seu ambiente horizontalmente é muito rápido e fácil com Amazon EC2 Auto Scaling. Crescer verticalmente também é simples com as API’s e SDK. Se você não precisar do seu ambiente ligado 24 horas por dia, 7 dias por semana, você pode usar o AWS Instance Scheduler para automatizar o stop/start de instâncias EC2 e bancos de dados RDS do seu ambiente.
Definir o tamanho e tipo correto de cada máquina virtual é o ponto principal da análise. Você pode usar o Migration Hub para obter recomendações das instâncias EC2. Os dados coletados pelo ADS vão possibilitar essa recomendação sobre o tamanho das instâncias EC2, portanto é importante fazer a coleta em todo os principais períodos de uso da aplicação, como por exemplo, no período do fim de um ciclo mensal, época comum para picos de utilização das corporações.
Outro ponto a ser considerado durante a análise são os diferentes tipos de ambiente que você possui em suas aplicações. É comum as empresas terem mais de um ambiente para a mesma aplicação; por exemplo, ambientes de desenvolvimento, homologação e produção. É uma boa estratégia definir a prioridade de cada ambiente que será alvo da migração, e iniciar por um ambiente de menor criticidade, onde o impacto para o negócio será minimizado, como por exemplo nos ambientes de desenvolvimento e homologação. Com isso, você poderá validar o seu processo e plano de migração antes de migrar o seu ambiente mais crítico, o de produção.
Plano de Migração
O plano de migração definirá a estratégia a ser utilizada na execução do processo, ajudando a responder questões como:
- De que forma a migração será feita?
- Quanto tempo vai demorar?
- Qual o tamanho da janela de manutenção?
- Quanto tempo o ambiente ficará indisponível?
- Será on-line ou off-line?
- Será em ondas ou big-bang?
- Adotaremos uma estratégia lift & shift?
- Ou vamos migrar e transformar ao mesmo tempo?
- Será feita uma re-arquitetura completa da aplicação?
On-line e Off-line
No processo de migração off-line, os dados são enviados do ambiente on-premises para AWS através de algum dispositivo de transferência, ao invés de usar um link de conexão. Nesse caso, recomendamos a família AWS Snow, composta pelos serviços AWS Snowball, AWS Snowcone e AWS Snowmobile.
Na migração off-line a quantidade de dados a serem migrados não impacta tanto no tempo de migração, pois o uso de dispositivos desconectados suporta escalas de exabytes. A distância física também não tem impacto.
Já a migração on-line pode ser considerada quando há um link de conexão disponível entre on-premises e AWS. O link deverá ter capacidade de transferência suficiente para possibilitar a cópia dos dados necessários dentro da janela de migração pré-definida nos requisitos do projeto. Esse link pode ser através da internet tradicional, ou utilizando a AWS Site-to-Site VPN ou AWS Direct Connect.
Ondas e Big-bang
Uma migração em ondas é sempre preferível quando você tem silos dentro do seu ambiente on-premises, resultando em um conjunto de máquinas isoladas e sem grandes dependências de outros ambientes, principalmente se o ambiente a ser migrado for muito grande, com dezenas ou centenas de máquinas. A migração em ondas minimiza o risco, pois são ambientes menores e mais controlados que serão migrados em cada onda, o que minimiza a necessidade de grandes janelas de migração.
Não é uma boa prática dividir o mesmo ambiente, ou seja, migrar o servidor de aplicação e não migrar o banco de dados. Ou vice-versa.
Quando um ambiente migrado tem dependências de recursos que não foram migrados, é necessário avaliar a sensibilidade quanto a latência desta integração. Se for uma integração em batch ou assíncrona, o impacto para o ambiente migrado é menor. Por exemplo, envio de e-mail, mensagem enviada para uma fila ou para um stream.
Já a migração big-bang consiste na migração completa do ambiente, em uma única janela de manutenção. Esse tipo de migração deve ser utilizado em ambientes pequenos ou quando há grande acoplamento entre servidores e aplicações, tornando extremamente difícil dividir o ambiente em silos e realizar as ondas de migração.
O tamanho da janela de migração e a performance do link passam a ter um papel mais importante neste tipo de migração.
7R’s
Figura 2. Migration 7R’s
Fazer o levantamento do seu ambiente e determinar a melhor estratégia de migração de todas as suas aplicações é o passo crítico para o sucesso do seu plano e resultado da migração. É comum as pessoas cogitarem o processo de refatoração (refactoring) das aplicações, afim de obter o máximo de vantagem da nuvem. Porém, isso pode resultar em um longo processo de redesenhar (redesign) a arquitetura antes de mover a primeira aplicação. Com base nesta experiência, recomendamos você considerar as vantagens de um processo de Lift & Shift, onde os estágios do seu processo de migração serão iniciados de forma mais rápida, o que também significa obter mais experiência com o ambiente de nuvem, já tendo interações desde o início.
A migração de cada aplicação tende a seguir um dos 7 diferentes caminhos.
1. Rehosting (Lift & Shift)
A forma mais simples de migrar é através do Rehosting (Lift & Shift), que consiste em mover uma aplicação para a nuvem sem fazer nenhuma alteração, afim de aproveitar os recursos que a nuvem oferece. Exemplo: migre seu banco de dados local para uma instância EC2 na nuvem AWS. Muito comum esse tipo de migração representar 50% ou até mais do ambiente a ser migrado, e geralmente fornece suporte a execução através de ferramentas que automatizam o processo de migração.
2. Relocate (Lift & Shift a nível de hypervisor)
A infraestrutura é migrada para a nuvem sem a necessidade de aquisições de longo prazo, sem reescrever aplicativos ou modificar suas operações existentes. Este cenário de migração é específico para VMware Cloud na AWS, que suporta compatibilidade de máquina virtual (VM) e portabilidade de carga de trabalho entre seu ambiente local e AWS. Você pode usar as tecnologias VMware Cloud Foundation de seus data centers locais ao migrar sua infraestrutura para VMware Cloud na AWS. Suporta mover dezenas de aplicações em dias.
3. Replatforming (Lift and Reshape)
Algumas aplicações podem ser modificadas para endereçar uma oportunidade específica, por exemplo, custo com licença ou custo de manutenção. Exemplo: migre seu banco de dados relacional on-premises para o Amazon Relational Database Service (Amazon RDS) na nuvem AWS.
4. Repurchasing
A aplicação será substituída por um produto diferente, uma solução cloud-native ou por uma solução como serviço, mudando do modelo de uma licença tradicional para um modelo SaaS (Software as a Service). Exemplo: migrando seu sistema de gerenciamento de relacionamento com o cliente (CRM).
5. Refactoring / Re-architecting
Em alguns casos, você deseja executar um redesenho (redesign) da arquitetura da sua aplicação tornando-a cloud-native, e usando toda a gama de serviços disponíveis na AWS, como soluções baseadas em conteiners, serverless e NoSQL.
6. Retire
A aplicação será descontinuada, portanto não há necessidade em ser migrada. Isso reduzirá o custo final do seu projeto de migração.
7. Retain
A aplicação não será migrada para a AWS, e num futuro próximo será avaliada novamente, afim de decidir se permanece desta forma ou se será descontinuada.
Migração de Aplicação e Dados
Nesta etapa o processo de migração dos servidores, aplicações e/ou dados é iniciado na prática. As técnicas de migração apresentadas acima irão influenciar como cada componente será migrado. Se servidores inteiros serão migrados de uma só vez, se apenas a aplicação ou apenas os dados, entre outros.
Independente da técnica escolhida, será necessário usar alguma ferramenta para executar esta migração. Estas ferramentas podem exigir alguns pré-requisitos para funcionarem, cada uma com a sua necessidade específica.
Pré-requisitos
Se for decidido por uma migração off-line, o pré-requisito será a solicitação do dispositivo da família Snow.
Para a migração on-line, o pré-requisito será a comunicação de rede entre o ambiente on-premises e a AWS. Essa comunicação pode ser pela internet, por Site-to-Site VPN ou pelo Direct Connect.
Outros pontos comuns relativos à comunicação são as rotas de rede interna do ambiente on-premises, uso de proxy e a resolução de nomes de DNS.
Dependendo da ferramenta utilizada para a migração, também será necessário obter credenciais no VMware vCenter ou no Sistema Operacional das máquinas virtuais, afim de realizar a instalação dos conectores ou agentes. Ou até mesmo uma credencial para acessar o compartilhamento de arquivos ou banco de dados.
Antes de iniciar a migração, é necessário se certificar de que todos estes pontos estão mapeados e resolvidos.
Ferramentas
Existem diversas ferramentas que podem ser usadas, conforme o tipo de dados.
- Podemos usar AWS Application Migration Service (AWS MGN) para migrar servidores inteiros;
- AWS Server Migration Service (AWS SMS) para migrar máquinas virtuais, sem a necessidade de instalar um agente;
- AWS Database Migration Service (AWS DMS) para migrar banco de dados, em cenários de migrações homogêneas e heterogêneas;
- AWS DataSync para migrar compartilhamento e sistemas de arquivos;
- AWS Import/Export para migrar uma imagem de máquina virtual.
Figura 3. Fluxo de decisão para ferramentas de migração
Família Snow
O Snowball é uma solução de transporte de dados na escala de petabytes, que usa dispositivos seguros designados para transferir grandes quantidades de dados para dentro e para fora da Nuvem AWS. O uso do Snowball resolve desafios comuns relacionados a transferências de dados em grande escala, como altos custos de rede, transferências demoradas e preocupações de segurança. Atualmente, os clientes usam o Snowball para migrar dados analíticos, dados genômicos, bibliotecas de vídeo, repositórios de imagens, backups e para arquivar parte dos desligamentos do datacenter, substituição de fitas ou projetos de migração de aplicativos. A transferência de dados com o Snowball é simples, rápida, mais segura e pode chegar a um quinto do custo da transferência por Internet de alta velocidade. Com o Snowball, você não precisa escrever nenhum código ou adquirir hardware para transferir seus dados. Basta criar uma tarefa no Console de Gerenciamento da AWS (“Console”) e um dispositivo do Snowball será enviado automaticamente para você. Quando você o receber, conecte o dispositivo à sua rede local, faça o download e execute o cliente do Snowball (Snowball Client) ou o AWS OpsHub para estabelecer uma conexão. Por fim, use uma das opções para selecionar os diretórios de arquivos que você deseja transferir para o dispositivo. O processo fará a criptografia e a transferência dos arquivos para o dispositivo em alta velocidade. Quando a transferência for concluída e o dispositivo estiver pronto para ser devolvido, a etiqueta de envio será atualizada automaticamente e você poderá monitorar o status da tarefa via Amazon Simple Notification Service (SNS), mensagens de texto ou diretamente no Console da AWS.
A família Snow é composta pelas seguintes opções:
- AWS Snowball Edge Storage Optimized
- AWS Snowball Edge Compute Optimized
- AWS Snowcone
- AWS Snowmobile
AWS Import/Export
O VM Import/Export é um serviço que permite que você importe imagens de máquina virtual (VM) do seu ambiente de virtualização para o Amazon EC2 e, em seguida, as exporte de volta ao seu ambiente local. Isso permite que você migre aplicativos e cargas de trabalho para o Amazon EC2, copie o catálogo de imagens de VM para o Amazon EC2 ou crie um repositório de imagens de VM para backup e recuperação de desastres. Esta oferta permite aproveitar os investimentos existentes nas máquinas virtuais que você construiu para atender aos seus requisitos de segurança de TI, de gerenciamento de configurações e de conformidade, trazendo essas máquinas virtuais para o Amazon EC2 como instâncias prontas para usar. Também é possível exportar instâncias importadas, levando-as de volta para sua infraestrutura de virtualização local, o que permite implementar cargas de trabalho por toda sua infraestrutura de TI.
AWS Server Migration Service (AWS SMS)
AWS SMS é um serviço que funciona sem agente, e que facilita e agiliza a migração do seu ambiente para a AWS. O serviço permite que você automatize, agende e monitore replicações incrementais dos volumes ativos dos servidores, o que facilita a coordenação da migração de servidores em larga escala. A replicação incremental de servidores permite que você reduza significativamente o período de inatividade do servidor. Atualmente, você pode usar o AWS SMS para migrar máquinas virtuais (VM) rodando em VMware vSphere, Microsoft Hyper-V ou Microsoft Azure.
O AWS SMS permite você migrar usando o link de internet, AWS Site-to-Site VPN ou AWS Direct Connect.
AWS Application Migration Service (AWS MGN)
O AWS Application Migration Service é o principal serviço de migração recomendado para migrações lift-and-shift de suas aplicações para a AWS, pois permite que você perceba rapidamente os benefícios da migração de aplicações para a nuvem sem alterações e com o mínimo de tempo de inatividade. O AWS MGN minimiza processos manuais demorados e propensos a erros, convertendo automaticamente seus servidores de origem em uma infraestrutura física, virtual ou na nuvem para uma execução nativa na AWS. Ele simplifica ainda mais sua migração, permitindo utilizar o mesmo processo automatizado para uma ampla variedade de aplicações.
Com o AWS MGN, você pode manter as operações empresariais normais durante todo o processo de replicação. Ele replica continuamente os servidores de origem, o que se traduz em pouco ou nenhum impacto na performance. A replicação contínua também facilita a realização de testes sem interrupções, e reduz a janela de downtime para disponibilizar suas aplicações em produção na AWS.
A AWS recomenda aos clientes do AWS SMS utilizarem o AWS MGN em suas futuras migrações, por reduzir a possibilidade de falhas e fornecer maior automação (utiliza menos processos manuais, que consomem tempo).
AWS Database Migration Service (AWS DMS)
O AWS Database Migration Service é um serviço utilizado na migração de bancos de dados para a AWS, de modo rápido e seguro. O banco de dados de origem permanece totalmente operacional durante a migração, minimizando o tempo de inatividade de aplicativos que dependem do banco de dados. O AWS Database Migration Service pode migrar dados de/para a maioria dos bancos de dados comerciais e de código aberto mais utilizados. O AWS Database Migration Service viabiliza migrações homogêneas, como de Oracle para Oracle, além de migrações heterogêneas entre plataformas de banco de dados diferentes, como de Oracle ou de Microsoft SQL Server para o Amazon Aurora. Com o AWS Database Migration Service, você pode replicar continuamente os dados com alta disponibilidade e consolidar bancos de dados em um data warehouse na escala de petabytes, fazendo o streaming de dados para o Amazon Redshift e o Amazon S3. Saiba mais sobre os bancos de dados de origem e destino suportados. É possível configurar uma tarefa DMS para migração única e/ou replicação contínua. Uma tarefa de replicação contínua mantém seus bancos de dados de origem e destino sincronizados. Depois de configurada, a tarefa de replicação contínua aplicará continuamente as alterações da origem ao destino, com latência mínima.
AWS DataSync
O AWS DataSync é um serviço de transferência de dados on-line que simplifica, automatiza e acelera a movimentação de dados entre os sistemas de armazenamento on-premises e os serviços de armazenamento da AWS, e também entre serviços de armazenamento na própria infraestrutura da AWS.
Escrever, manter, monitorar e solucionar problemas em scripts para transferir grandes quantidades de dados pode ser um fardo para suas operações de TI, e desacelerar projetos de migração. O DataSync elimina ou gerencia automaticamente esse trabalho para você. Ele otimiza o uso de largura de banda e se recupera automaticamente em caso de falhas de conectividade de rede.
O DataSync pode copiar dados entre compartilhamentos do Network File System (NFS), compartilhamentos do Server Message Block (SMB), armazenamento autogerenciado de objetos, AWS Snowcone, buckets do Amazon Simple Storage Service (Amazon S3) e sistemas de arquivos do Amazon Elastic File System (Amazon EFS) e do Amazon FSx for Windows File Server.
Use o DataSync para fazer uma cópia inicial de todo o conjunto de dados e programe transferências incrementais subsequentes dos dados que são alterados até a migração final para a AWS. O DataSync preserva os metadados entre os sistemas de armazenamento que apresentam estruturas de metadados semelhantes, permitindo uma transição fácil de usuários finais e aplicações para seu serviço de destino no armazenamento da AWS.
Validação
Quando uma migração é finalizada, seja uma migração do tipo big-bang ou em ondas, é necessário validar o novo ambiente para confirmar que ele esteja funcionando como esperado e com todas as regras de negócio validadas pelas áreas de negócio.
Caso a aplicação já utilize práticas de CI/CD, testes automatizados e testes integrados, isso pode ser utilizado nesta etapa da migração para facilitar e dar agilidade à validação. Caso contrário, será necessário um plano de teste com responsáveis definidos para que possam executar o teste manualmente e coletar evidências se a aplicação está funcionando como esperado ou não.
Além das validações funcionais da área de negócios, também é necessário validar requisitos não funcionais. Por exemplo, o tempo de resposta da aplicação e o nível de segurança do ambiente.
Existem ferramentas que auxiliam no processo de migração do ambiente on-premises para a AWS, e também no caminho inverso, ou seja, da AWS para o ambiente on-premises. Isso é muito utilizado caso seja identificado uma divergência na aplicação e seja decidido por fazer o rollback.
Conclusão
Neste post ilustramos as metodologias, diferentes fases, técnicas e ferramental necessário, assim como boas práticas e pontos de atenção para execução de uma migração rápida e bem sucedida de uma ou mais aplicações para a plataforma AWS.
Planejamento, um bom processo de descoberta (discovery) e uma execução organizada são pontos essenciais para uma migração de sucesso. Tudo isso alinhado com a área de negócios, afim de garantir o funcionamento da aplicação, torna a migração um processo muito mais seguro e com baixo risco.
Sobre os autores
Andreia Gouveia é um arquiteto do time de Professional Services da AWS, especializado em migrações. Entusiasta em projetos de migração, arquiteturas serverless, Data Lake e IOT, atua com em grandes projetos de migracoes e implementacao de novas arquiteturas utilizando servicos AWS.
Antonio Cesar Vergani Junior é Arquiteto de Infraestrutura Cloud do time de Professional Services para o Setor Público. Tendo trabalhado em projetos de arquitetura de dados, migrações e Machine Learning em empresas nacionais e multinacionais. Nos horários livres gosta de aproveitar o tempo com sua família, assistir filmes/séries e curtir um churrasco com familiares e amigos.
Dan Rezende é Arquiteto de Infraestrutura Cloud do time de Professional Services para o Setor Público. Tendo trabalhado com migrações e provisionamento de infraestrutura de aplicações em empresas do setor público e privado. Em seu tempo livre, Dan gosta de viajar e passar o tempo com a família.
Leonardo Azize Martins é Arquiteto de Infraestrutura Cloud em Professional Services para o Setor Público. Tendo trabalhado com desenvolvimento e infraestrutura de aplicações web em multinacionais. Quando não está trabalhando, Leonardo gosta de passar o tempo com a família e brincar com a filha.
Marcus Santos é um arquiteto do time de Professional Services da AWS, especializado em migrações. Entusiasta em projetos de migração, segurança de plataformas em nuvem, bancos de dados e DevOps, vem atuando com o objetivo de promover e agilizar a jornada de adoção de nuvem para os clientes de setor público da AWS.