

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
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform"></a>

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

## Resumo
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-summary"></a>

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
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-prereqs"></a>

**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](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli))
+ Terraform AWS Provider versão 3.0.0 ou posterior de HashiCorp (consulte o [GitHub repositório deste](https://github.com/hashicorp/terraform-provider-aws) 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](https://aws.amazon.com/blogs/security/techniques-for-writing-least-privilege-iam-policies/))

## Arquitetura
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-architecture"></a>

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.](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/87845d9f-8e6e-4c51-b9ee-9e7833671d05/images/a1e95458-419a-4de9-85ef-b17d8340700a.png)


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.](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/87845d9f-8e6e-4c51-b9ee-9e7833671d05/images/3aca17e5-6fd7-4317-b578-ab5e485c6efb.png)


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
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-tools"></a>

**Serviços da AWS e ferramentas**
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)é 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](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) é 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)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) ajuda você a configurar, operar e escalar um banco de dados relacional na Nuvem AWS.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos que oferece escalabilidade, disponibilidade de dados, segurança e desempenho.
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 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](https://www.terraform.io/) é 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](https://github.com/aws-samples/aws-terraform-db-migration-framework-samples).

## Práticas recomendadas
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-best-practices"></a>
+ 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
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-epics"></a>

### Configure sua estação de trabalho local.
<a name="set-up-your-local-workstation"></a>


| 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](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). | DevOps engenheiro | 
| Crie uma pasta de projeto e adicione os arquivos do GitHub repositório. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-ci-cd-pipeline-for-db-migration-with-terraform.html) | DevOps engenheiro | 

### Provisionamento da arquitetura de destino
<a name="provision-the-target-architecture"></a>


| Tarefa | Description | Habilidades 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.<br />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:<pre>terraform init</pre> | DevOps engenheiro | 
| Visualize o plano do Terraform. | Para criar um plano do Terraform, digite o seguinte comando:<pre>terraform plan -var-file="terraform.sample"  </pre><br />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. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-ci-cd-pipeline-for-db-migration-with-terraform.html) | DevOps engenheiro | 

### Verificar a implantação
<a name="verify-the-deployment"></a>


| Tarefa | Description | Habilidades 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.<br />1. Faça login no e AWS Management Console, em seguida, abra o [AWS CodePipeline console](https://console.aws.amazon.com/codesuite/codepipeline/home).<br />2. No painel de navegação, selecione **Pipelines**.<br />3. Selecione o pipeline `db-cicd-integration`.<br />4. Verifique se a execução do pipeline foi concluída com êxito. | DevOps engenheiro | 

### Limpar a infraestrutura após o uso
<a name="clean-up-infrastructure-after-use"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Limpe a infraestrutura. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-ci-cd-pipeline-for-db-migration-with-terraform.html) | DevOps engenheiro | 

## Recursos relacionados
<a name="set-up-ci-cd-pipeline-for-db-migration-with-terraform-resources"></a>

**AWS documentação**
+ [Começando com um produto Terraform](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-Terraform.html)

**Documentação do Terraform**
+ [Instalação do Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli)
+ [Configuração de backend do Terraform](https://developer.hashicorp.com/terraform/language/backend)
+ [Documentação do Terraform AWS Provider](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)