Entender como funciona a tarefa de implantação de banco de dados

Concluído

A integração de tarefas de implantação de banco de dados aos fluxos de trabalho ci/CD Azure Pipelines e GitHub Actions automatiza o provisionamento e as atualizações de banco de dados junto com implantações de aplicativos. Essa integração permite a coordenação perfeita entre os ciclos de vida do aplicativo e do banco de dados, reduzindo erros e inconsistências de implantações manuais. A automação de provisionamento de banco de dados acelera os ciclos de versão, minimiza erros humanos e aprimora a colaboração entre equipes de desenvolvimento, operações e banco de dados.

Considerações

As implantações automatizadas de banco de dados exigem uma consideração cuidadosa da integridade dos dados e da prevenção contra perda. Resolva esses riscos por meio das seguintes disposições:

  • Separação de dados: mantenha uma separação clara entre as alterações de esquema de banco de dados e as operações de manipulação de dados. As alterações de esquema de banco de dados, como modificações de tabela ou atualizações de esquema, devem ser gerenciadas separadamente das operações de manipulação de dados, como propagar dados iniciais ou importar e exportar conjuntos de dados.
  • Preservação de dados: implemente estratégias para preservar dados existentes durante a reimplantação de pipeline ou fluxo de trabalho. Isso pode envolver o backup de dados críticos antes de implantar alterações ou usar scripts de migração de dados para transferir dados entre ambientes sem substituir os dados existentes.
  • Operações Idempotentes: verifique se as operações de implantação de banco de dados são idempotentes, o que significa que elas podem ser executadas novamente com segurança várias vezes, resultando sempre no mesmo resultado. A idempotência deve eliminar a possibilidade de criar objetos e/ou registros de esquema duplicados.
  • Controle de versão e reversão: mantenha o controle de versão sobre alterações de esquema de banco de dados, migrações de dados e scripts de implantação para controlar as alterações e facilitar procedimentos de reversão. Use repositórios de controle do código-fonte para gerenciar scripts de banco de dados, aplicar marcas de versão ou rótulos a alterações de banco de dados e implementar estratégias de reversão que revertem alterações de banco de dados.
  • Teste e validação: execute testes completos e validação de alterações de banco de dados em um ambiente de preparo ou teste antes de implantar em produção. Use estruturas de teste automatizadas, testes de unidade de banco de dados e testes de integração para verificar as implantações de banco de dados e garantir a compatibilidade com os dados existentes.
  • Monitoramento e alertas: implemente mecanismos de monitoramento e alerta para detectar anomalias, erros ou problemas de desempenho durante implantações de banco de dados. Monitore as métricas de integridade do banco de dados, acompanhe os logs de auditoria e configure alertas disparados por qualquer comportamento ou falhas inesperadas.

Os fluxos de trabalho do Azure Pipelines e do GitHub Actions compartilham conceitos e atividades semelhantes para implantação de banco de dados. A incorporação da implantação de banco de dados no Azure Pipelines requer várias tarefas de implementação:

  • Criar scripts de implantação de banco de dados para definir o esquema de banco de dados, dados de semente e aplicar configurações adicionais. Os scripts devem residir no repositório de controle do código-fonte para facilitar o controle de alterações e o controle de versão.
  • Criar cadeias de conexão de banco de dados e armazená-las com segurança como variáveis secretas ou segredos do cofre de chaves do Azure. Isso também requer a concessão de acesso dos pipelines aos segredos.
  • Usando tarefas do Azure DevOps ou extensões de terceiros para executar scripts de implantação de banco de dados como parte do pipeline.
  • Configurar o pipeline para implantar quaisquer dependências necessárias, como instâncias do SQL Server, juntamente com as ferramentas e os utilitários necessários.
  • Incluindo tarefas de teste de banco de dados no pipeline para validar as alterações de banco de dados e garantir que as implantações sejam bem-sucedidas. Isso normalmente envolve a execução de testes de unidade de banco de dados, testes de integração ou verificações de validação de dados.
  • Implementando mecanismos de reversão e recuperação no pipeline para lidar com falhas de implantação ou erros inesperados. Isso pode incluir a criação de instantâneos de banco de dados, backups ou scripts de reversão transacional para reverter alterações em caso de problemas.

As especificidades da tarefa de implementação variam significativamente com base na tecnologia de banco de dados de destino. A seção a seguir examina essas especificidades para implantações de serviço SQL do Azure.

Ferramentas e técnicas específicas do SQL Server e do SQL do Azure

Ao trabalhar com o SQL Server ou o Banco de Dados SQL do Azure em pipelines de CI/CD, há várias ferramentas e técnicas que você pode aproveitar, incluindo as seguintes:

  • SSDT (SQL Server Data Tools): um conjunto de ferramentas de desenvolvimento que permite aos desenvolvedores de banco de dados criar, depurar, manter e refatorar esquemas e objetos de banco de dados no Visual Studio. Você pode usar projetos SSDT para gerenciar alterações de esquema de banco de dados e gerar scripts de implantação para o SQL Server ou o Banco de Dados SQL do Azure.
  • SQLPackage.exe: um utilitário de linha de comando incluído no SSDT que simplifica a automatização de implantações de bancos de dados do SQL Server usando arquivos DACPAC (Componente de Aplicativo da camada de dados). Você pode usar SQLPackage.exe em pipelines de CI/CD para implantar alterações de banco de dados no SQL Server ou no Banco de Dados SQL do Azure.
  • Tarefas do Azure DevOps: tarefas internas, como Implantação do Banco de Dados SQL do Azure e SqlAzureDacpacDeployment, que permitem implantar alterações de banco de dados diretamente de arquivos DACPAC no Banco de Dados SQL do Azure. Essas tarefas integram a implantação de banco de dados em pipelines de CI/CD sem a necessidade de scripts personalizados.
  • CLI (Interface Command-Line do Azure): um utilitário que permite interagir com recursos do Azure, incluindo o Banco de Dados SQL do Azure, na linha de comando. Você pode usar comandos da CLI do Azure em pipelines de CI/CD para automatizar tarefas de provisionamento, configuração e implantação de banco de dados, como criar servidores de banco de dados, implantar arquivos DACPAC e executar scripts SQL.
  • SSMS (SQL Server Management Studio): uma ferramenta gráfica fornecida pela Microsoft para gerenciar bancos de dados do SQL Server. Embora usado principalmente para tarefas de administração manual, o SSMS também pode gerar scripts de implantação e automatizar implantações de banco de dados usando o assistente Gerar Scripts ou o recurso Implantar Banco de Dados no Banco de Dados SQL do Microsoft Azure.
  • Entity Framework (EF): uma técnica programática que suporta a funcionalidade de Mapeamento Objeto-Relacional (ORM). Você pode aproveitar a funcionalidade de migração baseada em EF para gerenciar alterações de esquema de banco de dados e automatizar migrações de banco de dados em pipelines de CI/CD. As migrações de EF permitem definir alterações no esquema de banco de dados usando migrações de código-primeiro e aplicá-las automaticamente durante a inicialização do aplicativo.
  • Scripts personalizados: scripts do PowerShell, Bash ou SQL que automatizam tarefas de implantação de banco de dados em pipelines de CI/CD. Esses scripts podem usar módulos SQLCMD ou Azure PowerShell para executar scripts SQL, implantar arquivos DACPAC ou interagir com o Banco de Dados SQL do Azure programaticamente.