Migrar cargas de trabalho do Linux e do PostgreSQL

Concluído

Este módulo orienta você pela migração de uma carga de trabalho existente de um ambiente de nuvem ou local para o Azure. Ele abrange a migração da computação para uma VM (Máquina Virtual) do Azure e os dados para o Banco de Dados do Azure para PostgreSQL. O aplicativo é um exemplo independente de nuvem que substitui qualquer aplicativo do mundo real preparado para migração para a nuvem.

Nesta unidade, você explorará o valor de fazer as seguintes transições com o benefício de um conjunto completo de controles de segurança e identidade fornecidos pelo Azure:

  • Mudando de um ambiente auto-hospedado (como de um banco de dados autogerenciado) para uma oferta de banco de dados totalmente gerenciada
  • Mudando da computação bare-metal para VMs hospedadas na nuvem

Você também explora os benefícios de gerenciar recursos na nuvem de uma perspectiva de custo e desempenho. Você aprenderá a calcular e gerenciar custos com precisão antes e depois da implantação, além de como otimizar o desempenho tanto da perspectiva de computação quanto de dados.

Carga de trabalho e dados

Nossa carga de trabalho é um aplicativo escrito no Go e funciona com dados dentro do PostgreSQL. Nossos dados são um conjunto de dados aberto que permite que você explore o poder da nossa plataforma Postgres e extensões relacionadas.

Embora esse aplicativo pudesse ser facilmente executado em um contêiner, as partes interessadas optaram por fazê-lo nesse estágio. A criação de um contêiner, a implantação em uma plataforma de contêiner ou o uso da orquestração de contêiner está fora do escopo no momento. Mas a migração para contêineres pode ser uma etapa lógica futura.

O repositório GitHub associado a este módulo fornece um aplicativo e os dados relacionados para você. Você aprenderá a preparar seu aplicativo e exportar seus dados para alcançar um estado semelhante a este aplicativo de exemplo. Você também pode usar o aplicativo de exemplo como um modelo para uma implantação greenfield.

Qual é o valor de migrar essa carga de trabalho?

Você pode se perguntar sobre os benefícios de migrar essa carga de trabalho para a nuvem. Aqui estão algumas das propostas de valor.

Segurança e conformidade

Quando você traz cargas de trabalho de computação e dados para a nuvem, elas se beneficiam de maiores recursos de segurança.

As máquinas virtuais no Azure se beneficiam de uma ampla gama de recursos de segurança e conformidade, incluindo firewalls, redes virtuais, acesso just-in-time à máquina virtual, criptografia, RBAC (controle de acesso baseado em função) e computação confidencial. O Banco de Dados do Azure para PostgreSQL oferece suporte a muitos recursos semelhantes, tal como criptografia com chaves gerenciadas pelo cliente, certificações de conformidade e suporte para Microsoft Defender para Nuvem.

Segurança de conexões entre suas máquinas virtuais e bancos de dados

À medida que você integra uma máquina virtual ao Banco de Dados do Azure para PostgreSQL, é fundamental que eles possam se conectar um ao outro de maneira segura que reduza o risco de perda de dados.

A autenticação do Microsoft Entra permite que você se conecte ao Banco de Dados do Azure para PostgreSQL sem senhas tradicionais. Em vez disso, você usa as identidades do Microsoft Entra para a carga de trabalho do aplicativo (ou seja, identidades gerenciadas), usuários e administradores por meio de suas contas de usuário do Microsoft Entra. Essa abordagem reduz o risco de credenciais de longa duração serem comprometidas e permitir que pessoas mal-intencionadas acessem seus dados.

O Microsoft Entra ID, as identidades gerenciadas e o RBAC detalhado podem permitir que a carga de trabalho do seu aplicativo acesse dados e gerencie recursos no Azure com segurança, seguindo o princípio do menor privilégio.

Acesso a computação de alto desempenho e econômica em diversas regiões

Se você precisar de computação econômica para desenvolvimento/teste ou os tipos de computação mais recentes, de alto desempenho ou maiores disponíveis na nuvem, o Azure tem uma ampla seleção de opções de computação para máquinas virtuais e o Banco de Dados do Azure para PostgreSQL. Você pode escalar verticalmente e reduzir verticalmente essas opções conforme necessário e elas estão disponíveis em mais de 60 regiões no Azure.

Você pode dimensionar a computação vertical e horizontalmente, incluindo por meio de réplicas de banco de dados e opções distribuídas, como o Azure Cosmos DB for PostgreSQL. O Azure Cosmos DB for PostgreSQL é um serviço gerenciado para PostgreSQL estendido com a superpotência de tabelas distribuídas de código aberto Citus. Esse processamento é combinado com algumas das opções de armazenamento em nuvem mais rápidas para adaptar seus requisitos de E/S de processamento e armazenamento à sua carga de trabalho.

Gerenciamento de custos e custo-benefício

Você pode otimizar o gerenciamento de custos e a relação custo-benefício tanto no Linux quanto no PostgreSQL. Quando comparado com soluções locais, o custo pode muitas vezes ser mais personalizado e apropriado para sua situação. Você pode dimensionar corretamente sua computação em comparação a uma solução local. Você também pode gerenciar facilmente toda a sua frota para otimizar apenas a computação e o armazenamento necessários e pagar apenas pelo que usar em um modelo de cobrança de serviços públicos.

A cobrança do utilitário permite que os clientes lidem com períodos de alta demanda sem precisar pagar o custo de superprovisionamento. Ele permite a migração para gerações mais rápidas e eficientes de computação conforme elas se tornam disponíveis.

Os clientes também podem aproveitar o Benefício Híbrido do Azure para economizar nos custos de licenciamento para distribuições específicas do Linux. Para saber mais, confira Benefício Híbrido do Azure para máquinas virtuais Red Hat Enterprise Linux (RHEL) e SUSE Linux Enterprise Server (SLES).

Os clientes também podem reduzir custos—até 72% em comparação com os preços de pagamento conforme o uso—com termos de um ou três anos para máquinas virtuais e Instâncias de Máquinas Virtuais Reservadas do Azure. Para obter mais informações, confira Como o desconto de reserva do Azure é aplicado a máquinas virtuais. Os preços do Azure são transparentes e previsíveis, e você pode usar a Calculadora de Preços do Azure para estimar seus custos antes da implantação.

Operações de segundo dia

As operações de segundo dia para aplicativos implantados (como triagem, monitoramento, aplicação de patch de segurança, backups e recuperação de desastre) tornam-se mais eficientes por meio da automação e da capacidade de atualizar com tempo de inatividade potencialmente zero. Além disso, você pode gerenciar sua infraestrutura de ponta a ponta com cadeias de ferramentas padrão do setor.

Antes de começar

Esse módulo foi desenvolvido para ajudar você a migrar uma carga de trabalho existente do Linux e PostgreSQL para o Azure. No entanto, ele não se concentra em como exportar os dados do seu banco de dados de origem ou como preparar o aplicativo para migração. Um motivo para essa abordagem é que há muitos tipos de bancos de dados de origem e aplicativos que você pode migrar e o processo para cada tipo é exclusivo.

Este módulo fornece a você um aplicativo de exemplo, dados do Postgres, arquivos binários e infraestrutura como código que você pode usar para simular o processo de migração. Depois de concluir a migração simulada, você pode usar o conhecimento adquirido para aplicar os mesmos princípios à sua carga de trabalho.

Use nosso aplicativo de exemplo, Azure-Samples/tailwind-traders-go como substituto para o código do aplicativo a ser migrado. A infraestrutura Bicep como código, dados binários e Postgres de amostra e outros recursos para dar suporte à parte prática desse módulo estão disponíveis no repositório GitHub Azure-Samples/linux-postgres-migration.

Para aplicar essa abordagem à sua própria carga de trabalho, você precisará mapear seu aplicativo e dados de origem para a estrutura a seguir.

Código do aplicativo

O código do seu aplicativo deve ser armazenado no controle do código-fonte, de preferência em um repositório no GitHub.

A migração neste módulo mostra o cenário mais simples de clonagem do repositório diretamente para sua máquina virtual do Azure. Em um cenário do mundo real, você provavelmente teria um pipeline de implantação mais complexo, como o GitHub Actions, que cria e implanta o código do seu aplicativo nos seus recursos de computação.

Dados Postgres

Você deve armazenar seus dados do Postgres em um arquivo de .sql que você pode usar para criar o esquema de banco de dados e inserir os dados. Nesta migração simulada, você usa um arquivo de dados de exemplo, tailwind.sql, dentro do repositório Azure-Samples/linux-postgres-migration. Copie o arquivo para o Armazenamento de Blobs do Azure e importe-o para o Banco de Dados do Azure para PostgreSQL.

Quando chegar a hora de migrar seus dados, você exportará seus dados do banco de dados de origem e os salvará em um arquivo .sql. Em seguida, copie o arquivo para o Armazenamento de Blobs, conforme descrito neste módulo.

Arquivos binários

A maioria dos aplicativos tem outros arquivos binários, como arquivos de mídia, que precisam ser migrados. Para o aplicativo de exemplo, você aprenderá a migrar imagens copiando-as de Azure-Samples/linux-postgres-migration para o Armazenamento de Blobs.

Da mesma forma, você precisa copiar seus arquivos binários para o Armazenamento de Blobs do Azure ao migrar sua carga de trabalho. Nesse caso, a computação é sem estado e nosso aplicativo tem permissão para acessar os dados binários diretamente no Armazenamento de Blobs.

Infraestrutura como código (Bicep)

A infraestrutura como código para este módulo também é armazenada em Azure-Samples/linux-postgres-migration. Ela foi projetada para ser uma arquitetura de referência que você pode usar como está, com alterações mínimas, se você puder fazer com que os dados de origem e o aplicativo estejam em conformidade com a estrutura descrita anteriormente.

A segurança é um tema importante dessa migração, e escolhemos certas configurações de segurança para tornar a parte prática desse módulo mais fácil de concluir. Por exemplo, o Armazenamento de Blobs usa um método de autenticação mais seguro e sem chave, mas permitimos conexões de rede de qualquer endereço IP. Em um ambiente de produção, você desejaria bloquear o acesso à rede apenas para os endereços IP que precisam de acesso à conta de armazenamento.

Da mesma forma, deixamos a opção de adicionar uma regra de firewall ao servidor PostgreSQL para permitir um endereço IP específico. Em um ambiente de produção, você pode desabilitar completamente todo o acesso público ao servidor.

Diferenças entre ambientes de origem e Azure

Uma das principais diferenças na migração de outro ambiente para o Azure é que você está utilizando totalmente os controles de segurança e identidade que o Azure fornece:

  • Você usa identidades gerenciadas para máquinas virtuais e o Banco de Dados do Azure para PostgreSQL.
  • Use o Microsoft Entra ID para autenticação com o banco de dados.
  • Você usa o Microsoft Entra ID, em vez de chaves SSH (Secure Shell), para acessar máquinas virtuais.

Em vez de fazer uma migração lift-and-shift, você está aproveitando a oportunidade para modernizar o aplicativo de modo a aproveitar ao máximo os recursos de segurança e conformidade que o Azure fornece.

No local, você pode usar um nome de usuário e uma senha para autenticar seu banco de dados. No Azure, mostramos como usar a identidade gerenciada da máquina virtual para autenticar no banco de dados. Esse método de autenticação é mais seguro e reduz o risco de comprometimento de credenciais de longa duração.

O uso de uma identidade gerenciada para autenticação geralmente requer alterações de código em seu aplicativo. Este módulo mostra como usar a biblioteca de azidentity em Go para obter um token para a identidade gerenciada. A mesma biblioteca está disponível entre SDKs.

Crie uma conta do Azure e instale o CLI do Azure

Se você não tem uma conta do Azure, pode criar uma conta gratuita hoje mesmo. Você obtém créditos que pode usar para experimentar serviços pagos do Azure. Mesmo depois de usar os créditos, você pode manter a conta e usar os serviços gratuitos do Azure.

Para executar os comandos nas unidades a seguir, você precisa de acesso a um shell Bash. Esse shell pode estar em qualquer uma destas áreas:

  • No computador local. Por exemplo, use macOS, Linux, WSL (Subsistema do Windows para Linux) ou Docker.
  • Em uma máquina virtual. Por exemplo, use o Multipass ou o Azure.
  • Na nuvem. Por exemplo, use o Azure Cloud Shell ou o GitHub Codespaces.

Para concluir esse módulo, você precisa do CLI do Azure. Você pode instalar o Azure CLI em sua máquina local seguindo as instruções no artigo Instalar o CLI do Azure. Você também precisa instalar Git.

Recursos