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
Um ativo Conta da AWS
Terraform 0.12 ou em versões posteriores instalado na sua máquina local (para obter instruções, consulte a documentação do Terraform
) Terraform AWS Provider versão 3.0.0 ou posterior de HashiCorp (consulte o GitHub repositório deste
provedor) Política de privilégios mínimos AWS Identity and Access Management (IAM) (consulte a postagem do blog Técnicas para escrever políticas de IAM com privilégios mínimos
)
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.

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.

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
| Tarefa | Description | Habilidades 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. |
| DevOps engenheiro |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Atualize os parâmetros necessários. | O Na | DevOps engenheiro |
Inicialize a configuração do Terraform. | Na pasta
| DevOps engenheiro |
Visualize o plano do Terraform. | Para criar um plano do Terraform, digite o seguinte comando:
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. |
| DevOps engenheiro |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Valide a implantação. | Verifique o status do pipeline 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 4. Verifique se a execução do pipeline foi concluída com êxito. | DevOps engenheiro |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Limpe a infraestrutura. |
| DevOps engenheiro |
Recursos relacionados
AWS documentação
Documentação do Terraform