Configure um CI/CD pipeline para migração de banco de dados usando o Terraform - Recomendações da AWS

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á.

Configure um CI/CD pipeline para migração de banco de dados usando o Terraform

Dr. Rahul Sharad Gaikwad, Ashish Bhatt, Aniket Dekate, Ruchika Modi, Tamilselvan P, Nadeem Rahaman, Aarti Rajput e Naveen Suthar, Amazon Web Services

Resumo

Este padrão aborda o estabelecimento de um pipeline de integração e implantação contínuas (CI/CD) para gerenciar migrações de banco de dados de forma confiável e automatizada. O padrão abrange o processo de provisionamento da infraestrutura necessária, a migração de dados e a personalização de alterações no esquema usando o Terraform, uma ferramenta de infraestrutura como código (IaC).

Especificamente, o padrão configura um CI/CD pipeline para migrar um banco de dados local do Microsoft SQL Server para o Amazon Relational Database Service (Amazon RDS) em. AWS Além disso, é possível usar este padrão para migrar um banco de dados do SQL Server que esteja em uma máquina virtual (VM) ou em outro ambiente de nuvem para o Amazon RDS.

Este padrão trata dos seguintes desafios relacionados ao gerenciamento e à implantação de bancos de dados:

  • A realização de implantações manuais de banco de dados é um processo demorado, sujeito a erros e não garante consistência entre diferentes ambientes.

  • A coordenação do provisionamento da infraestrutura, das migrações de dados e das alterações de esquema pode ser complexa e difícil de gerenciar.

  • A garantia da integridade dos dados e a minimização do tempo de inatividade durante atualizações de banco de dados são essenciais para sistemas de produção.

Este padrão oferece os seguintes benefícios:

  • Simplifica o processo de atualização e implantação de alterações no banco de dados implementando um CI/CD pipeline para migrações de banco de dados. Isso reduz o risco de erros, garante consistência entre os ambientes e minimiza o tempo de inatividade.

  • Contribui para melhorar a confiabilidade, a eficiência e a colaboração. Possibilita maior rapidez no lançamento de produtos e redução do tempo de inatividade durante as atualizações de banco de dados.

  • Ajuda você a adotar DevOps práticas modernas de gerenciamento de banco de dados, o que leva a uma maior agilidade, confiabilidade e eficiência em seus processos de entrega de software.

Pré-requisitos e limitações

Pré-requisitos

Arquitetura

Este padrão implementa a arquitetura apresentada a seguir, que fornece toda a infraestrutura necessária ao processo de migração de banco de dados.

Arquitetura de pipeline CI/CD para migrar um banco de dados do SQL Server on-premises para o Amazon RDS na AWS.

Nesta arquitetura:

  • O banco de dados de origem é um SQL Server que está em um ambiente on-premises, em uma máquina virtual (VM) ou hospedado por outro provedor de nuvem. O diagrama assume que o banco de dados de origem encontra-se em um data center on-premises.

  • O data center local e AWS estão conectados por meio de uma VPN ou AWS Direct Connect conexão. Isso fornece comunicações seguras entre o banco de dados de origem e a AWS infraestrutura.

  • O banco de dados de destino é um banco de dados do Amazon RDS hospedado dentro da nuvem privada virtual (VPC) com a ajuda de um AWS pipeline de provisionamento de banco de dados.

  • AWS Database Migration Service (AWS DMS) replica seu banco de dados local para o. AWS O serviço é usado para configurar a replicação do banco de dados de origem para o banco de dados de destino.

O diagrama a seguir mostra a infraestrutura configurada com diferentes níveis do processo de migração do banco de dados, que envolve provisionamento, AWS DMS configuração e validação.

Detalhes do pipeline CI/CD do processo de migração de um ambiente on-premises para a AWS.

Neste processo:

  • O pipeline de validação realiza todas as verificações. O pipeline integrado avança para a próxima etapa quando todas as validações necessárias forem concluídas.

  • O pipeline de provisionamento de banco de dados consiste em vários AWS CodeBuild estágios que executam ações do Terraform no código do Terraform fornecido para o banco de dados. Após a conclusão dessas etapas, ele provisiona os recursos na Conta da AWS de destino.

  • O AWS DMS pipeline consiste em vários CodeBuild estágios que realizam testes e, em seguida, provisionam a AWS DMS infraestrutura para realizar a migração usando o IaC.

Ferramentas

Serviços da AWS e ferramentas

  • AWS CodeBuildé um serviço de integração contínua totalmente gerenciado que compila o código-fonte, executa testes e produz pacotes ready-to-deploy de software.

  • O AWS CodePipeline é um serviço de entrega contínua totalmente gerenciado que ajuda a automatizar os pipelines de lançamento para atualizações rápidas e confiáveis de aplicações e infraestrutura.

  • O Amazon Relational Database Service (Amazon RDS) ajuda você a configurar, operar e escalar um banco de dados relacional na Nuvem AWS.

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos que oferece escalabilidade, disponibilidade de dados, segurança e desempenho.

  • AWS Database Migration Service (AWS DMS) ajuda você a migrar armazenamentos de dados para Nuvem AWS ou entre combinações de configurações na nuvem e no local.

Outros serviços

  • O Terraform é uma ferramenta de IaC HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.

Repositório de código

O código desse padrão está disponível no GitHub Database Migration DevOps Framework usando o repositório de amostras do Terraform.

Práticas recomendadas

  • Implemente testes automatizados para a migração de banco de dados a fim de verificar a correção das alterações de esquema e a integridade dos dados. Isso inclui testes de unidade, testes de integração e end-to-end testes.

  • Implemente uma estratégia robusta de backup e restauração para os bancos de dados, especialmente antes da migração. Isso garante a integridade dos dados e oferece uma opção de fallback em caso de falhas.

  • Implemente uma estratégia robusta de reversão para desfazer alterações no banco de dados em caso de falhas ou problemas durante a migração. Isso pode envolver a reversão a um estado anterior do banco de dados ou a desfazer scripts de migração individuais.

  • Configure mecanismos de monitoramento e de registro em log para acompanhar o progresso e o status das migrações de banco de dados. Dessa forma, é possível localizar e solucionar problemas rapidamente.

Épicos

TarefaDescriptionHabilidades necessárias

Configure e instale o Git em sua estação de trabalho local.

Instale e configure o Git em sua estação de trabalho local seguindo as instruções apresentadas na documentação do Git.

DevOps engenheiro

Crie uma pasta de projeto e adicione os arquivos do GitHub repositório.

  1. Abra o GitHub repositório desse padrão.

  2. Selecione Código para visualizar as opções de clonagem e copie o URL disponível na guia HTTPS.

  3. Crie uma pasta para o projeto em sua estação de trabalho.

  4. Abra um terminal e acesse esta pasta.

  5. Clone o GitHub repositório:

    git clone <github-repository-url>

    em que <github-repository-url> corresponde ao URL copiado na etapa 2.

  6. Quando a clonagem for concluída, acesse o repositório clonado na pasta do seu projeto:

    cd <folder-name>/aws-terraform-db-migration-framework-samples
  7. Abra esse projeto em um ambiente de desenvolvimento integrado (IDE) de sua preferência.

DevOps engenheiro
TarefaDescriptionHabilidades necessárias

Atualize os parâmetros necessários.

O ssm-parameters.sh arquivo armazena todos os AWS Systems Manager parâmetros necessários. É possível configurá-los com valores personalizados para o seu projeto.

Na setup/db-ssm-params pasta da sua estação de trabalho local, abra o ssm-parameters.sh arquivo e defina esses parâmetros antes de executar o CI/CD pipeline.

DevOps engenheiro

Inicialize a configuração do Terraform.

Na pasta db-cicd-integration, execute o seguinte comando para inicializar seu diretório de trabalho que contém os arquivos de configuração do Terraform:

terraform init
DevOps engenheiro

Visualize o plano do Terraform.

Para criar um plano do Terraform, digite o seguinte comando:

terraform plan -var-file="terraform.sample"

O Terraform avalia os arquivos de configuração para determinar o estado de destino dos recursos declarados. Em seguida, ele compara o estado de destino com o estado atual e cria um plano.

DevOps engenheiro

Verificar o plano.

Analise o plano e confirme se ele configura a arquitetura necessária na sua Conta da AWS de destino.

DevOps engenheiro

Implante a solução.

  1. Digite o seguinte comando para aplicar o plano:

    terraform apply -var-file="terraform.sample"
  2. Digite yes para confirmar. O Terraform cria, atualiza ou destrói a infraestrutura para atingir o estado de destino declarado nos arquivos de configuração. Para obter mais informações sobre a sequência, consulte a seção Arquitetura deste padrão.

DevOps engenheiro
TarefaDescriptionHabilidades necessárias

Valide a implantação.

Verifique o status do pipeline db-cicd-integration para confirmar que a migração do banco de dados foi concluída.

1. Faça login no e Console de gerenciamento da AWS, em seguida, abra o AWS CodePipeline console.

2. No painel de navegação, selecione Pipelines.

3. Selecione o pipeline db-cicd-integration.

4. Verifique se a execução do pipeline foi concluída com êxito.

DevOps engenheiro
TarefaDescriptionHabilidades necessárias

Limpe a infraestrutura.

  1. Após a conclusão do seu projeto, limpe a infraestrutura que você criou usando o comando:

    terraform destroy --var-file=terraform.sample
  2. Digite yes para confirmar.

DevOps engenheiro

Recursos relacionados

AWS documentação

Documentação do Terraform