Migrar cargas de trabalho Linux e PostgreSQL

Concluído

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

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

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

Você também explora os benefícios do gerenciamento de recursos na nuvem de uma perspetiva de custo e desempenho. E você aprende a calcular e gerenciar custos com precisão antes e depois da implantação, além de otimizar o desempenho tanto do ponto de vista da computação quanto dos dados.

Carga de trabalho e dados

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

Embora este aplicativo pudesse ser facilmente executado dentro de um contêiner, as partes interessadas optaram por não fazê-lo nesta fase. A criação de um contêiner, a implantação em uma plataforma de contêiner ou o uso da orquestração de contêineres estão atualmente fora do escopo. Mas a migração para contêineres pode ser um passo futuro lógico.

O repositório GitHub associado a este módulo fornece um aplicativo e os dados relacionados para você. Você aprende como 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 da migração dessa 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 beneficiam de uma vasta gama de funcionalidades de segurança e conformidade, incluindo firewalls, redes virtuais, acesso a VM just-in-time, encriptação, controlo de acesso baseado em funções (RBAC) e computação confidencial. O Banco de Dados do Azure para PostgreSQL dá suporte a muitos recursos semelhantes, como criptografia com chaves gerenciadas pelo cliente, certificações de conformidade e suporte para o Microsoft Defender for Cloud.

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 uns aos outros 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 identidades do Microsoft Entra para sua carga de trabalho de 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 agentes mal-intencionados acessem seus dados.

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

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

Quer necessite de computação económica para desenvolvimento/teste ou dos tipos de computação mais recentes, de maior desempenho ou maiores disponíveis na nuvem, o Azure tem uma vasta seleção de opções de computação para máquinas virtuais e para a Base de Dados do Azure para PostgreSQL. Você pode aumentar e reduzir 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, inclusive por meio de réplicas de banco de dados e opções distribuídas, como o Azure Cosmos DB para PostgreSQL. O Azure Cosmos DB for PostgreSQL é um serviço gerido para o PostgreSQL expandido com o superpoder de tabelas distribuídas open-source Citus. Essa computação é combinada com algumas das opções de armazenamento em nuvem mais rápidas para adaptar seus requisitos de E/S de computação e armazenamento à sua carga de trabalho.

Gestão de custos e relação custo-eficácia

Você pode otimizar para gerenciamento de custos e custo-benefício nos lados Linux e PostgreSQL. Em comparação com as soluções locais, o custo pode muitas vezes ser mais adaptado e adequado à sua situação. Você pode dimensionar corretamente sua computação em comparação com uma solução local. Também pode gerir facilmente toda a sua frota para otimizar apenas a computação e o armazenamento de que necessita, e pagar apenas pelo que utiliza, num modelo de faturação de serviços públicos.

A faturação dos serviços públicos permite aos clientes lidar com períodos de elevada procura sem terem de pagar o custo do excesso de aprovisionamento. Ele permite a migração para gerações de computação mais rápidas e eficientes à medida que se tornam disponíveis.

Os clientes também podem tirar partido do Benefício Híbrido do Azure para poupar nos custos de licenciamento de distribuições Linux específicas. Para saber mais, consulte 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 pré-pagos) com prazos de um ou três anos para máquinas virtuais e Instâncias de Máquina Virtual Reservadas do Azure. Para obter mais informações, consulte 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 de implantar.

Operações do dia 2

As operações do dia 2 para aplicativos implantados (como triagem, monitoramento, patches de segurança, backups e recuperação de desastres) tornam-se mais eficientes por meio da automação e da capacidade de atualização 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

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

Este módulo fornece um aplicativo de exemplo, dados 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 própria carga de trabalho.

Você usa o aplicativo de exemplo, Azure-Samples/tailwind-traders-go, como um substituto para o código do aplicativo a ser migrado. A infraestrutura do Bicep como código, Postgres de exemplo e dados binários e outros recursos para dar suporte à parte prática deste 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ê precisa mapear seu aplicativo de origem e dados para a estrutura a seguir.

Código da aplicação

Você deve armazenar o código do seu aplicativo no controle do código-fonte, de preferência um repositório no GitHub.

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

Dados do Postgres

Você deve armazenar seus dados Postgres em um .sql arquivo 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 Azure-Samples/linux-postgres-migration repositório. 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 próprios dados, exporte os dados do banco de dados de origem e salve-os em um .sql arquivo. Em seguida, copie o arquivo para o Armazenamento de Blob conforme descrito neste módulo.

Ficheiros 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ê aprende a migrar imagens copiando-as para o Armazenamento de Azure-Samples/linux-postgres-migration Blobs.

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

Infraestrutura como código (Bicep)

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

A segurança é um tema importante dessa migração, e escolhemos determinadas configurações de segurança para tornar a parte prática deste módulo mais fácil de concluir. Por exemplo, o Armazenamento de Blob 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, convém bloquear o acesso à rede apenas para os endereços IP que precisam acessar a 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 o 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 Banco de Dados do Azure para PostgreSQL.
  • Você usa o Microsoft Entra ID para autenticação no banco de dados.
  • Você usa o Microsoft Entra ID, em vez de chaves Secure Shell (SSH), para acessar máquinas virtuais.

Em vez de fazer uma migração de elevação e mudança, você está aproveitando a oportunidade para modernizar o aplicativo para aproveitar ao máximo os recursos de segurança e conformidade que o Azure oferece.

No local, você pode usar um nome de usuário e 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 azidentity biblioteca em Go para obter um token para a identidade gerenciada. A mesma biblioteca está disponível em SDKs da Microsoft.

Criar uma conta do Azure e instalar a CLI do Azure

Se você não tiver uma conta do Azure, poderá criar uma conta gratuita hoje. Você recebe 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 acessar um shell Bash. Este shell pode estar em qualquer uma destas áreas:

  • Na sua máquina local. Por exemplo, use macOS, Linux, Windows Subsystem for Linux (WSL) ou Docker.
  • Em uma máquina virtual. Por exemplo, use Multipass ou Azure.
  • Na nuvem. Por exemplo, use o Azure Cloud Shell ou o GitHub Codespaces.

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

Recursos