Descripción de la tarea de implementación de base de datos

Completado

La integración de tareas de implementación de bases de datos en flujos de trabajo de Azure Pipelines y Acciones de GitHub de CI/CD automatiza el aprovisionamiento y las actualizaciones de bases de datos junto con las implementaciones de aplicaciones. Esta integración permite una coordinación sin problemas entre los ciclos de vida de la aplicación y de la base de datos, al tiempo que reduce los errores e incoherencias de las implementaciones manuales. La automatización del aprovisionamiento de bases de datos acelera los ciclos de versión, minimiza los errores humanos y mejora la colaboración entre los equipos de desarrollo, operaciones y bases de datos.

Consideraciones

Las implementaciones automatizadas de bases de datos requieren una consideración cuidadosa de la integridad de los datos y la prevención de pérdida. Solucione estos riesgos a través de las siguientes disposiciones:

  • Separación de datos: mantenga una separación clara entre los cambios de esquema de base de datos y las operaciones de manipulación de datos. Los cambios en el esquema de la base de datos, como las modificaciones de tabla o las actualizaciones de esquema, deben administrarse independientemente de las operaciones de manipulación de datos, como la propagación de datos iniciales o la importación y exportación de conjuntos de datos.
  • Conservación de datos: implemente estrategias para conservar los datos existentes durante la canalización o la reimplementación del flujo de trabajo. Esto puede implicar la copia de seguridad de datos críticos antes de implementar cambios o usar scripts de migración de datos para transferir datos entre entornos sin sobrescribir los datos existentes.
  • Operaciones idempotentes: asegúrese de que las operaciones de implementación de base de datos sean idempotentes, lo que significa que se pueden volver a ejecutar de forma segura varias veces, lo que siempre da como resultado el mismo resultado. La idempotencia debe eliminar la posibilidad de crear objetos de esquema y/o registros duplicados.
  • Control de versiones y reversión: mantenga el control de versiones sobre los cambios de esquema de base de datos, las migraciones de datos y los scripts de implementación para realizar un seguimiento de los cambios y facilitar los procedimientos de reversión. Usa repositorios de control de código fuente para administrar scripts de base de datos, aplicar etiquetas de versión a los cambios de base de datos e implementar estrategias de reversión para revertir los cambios de la base de datos.
  • Pruebas y validación: realice pruebas exhaustivas y validación de los cambios de base de datos en un entorno de ensayo o de prueba antes de realizar la implementación en producción. Use marcos de pruebas automatizadas, pruebas unitarias de base de datos y pruebas de integración para comprobar las implementaciones de base de datos y garantizar la compatibilidad con los datos existentes.
  • Supervisión y alertas: implemente mecanismos de supervisión y alertas para detectar anomalías, errores o problemas de rendimiento durante las implementaciones de bases de datos. Supervise las métricas de estado de la base de datos, realice un seguimiento de los registros de auditoría y configure alertas desencadenadas por cualquier comportamiento o error inesperados.

Los flujos de trabajo de Acciones de GitHub y Azure Pipelines comparten conceptos y actividades similares para la implementación de bases de datos. La incorporación de la implementación de bases de datos en Azure Pipelines requiere varias tareas de implementación:

  • Crear scripts de implementación de base de datos para definir el esquema de base de datos, los datos de inicialización y aplicar configuraciones adicionales. Los scripts deben residir en el repositorio de control de código fuente para facilitar el control de cambios y el control de versiones.
  • Crear cadenas de conexión de base de datos y almacenarlas de forma segura como variables secretas o secretos de Azure Key Vault. Esto también requiere que se conceda a las canalizaciones acceso a los secretos.
  • El uso tareas de Azure DevOps o de extensiones de terceros para ejecutar scripts de implementación de bases de datos como parte de la canalización.
  • Configurar la canalización para implementar las dependencias necesarias, como las instancias de SQL Server, junto con las herramientas y utilidades necesarias.
  • Incluir tareas de prueba de base de datos en la canalización para validar los cambios de la base de datos y asegurarse de que las implementaciones se realizan correctamente. Esto suele implicar la ejecución de pruebas unitarias de base de datos, pruebas de integración o comprobaciones de validación de datos.
  • Implementación de mecanismos de reversión y recuperación en la tubería para manejar fallos de implementación o errores inesperados. Esto puede incluir la creación de instantáneas de base de datos, copias de seguridad o scripts de reversión transaccional para revertir los cambios en caso de problemas.

Los detalles de la tarea de implementación varían significativamente en función de la tecnología de base de datos de destino. En la sección siguiente se examinan estos detalles para las implementaciones del servicio Azure SQL.

Técnicas y herramientas específicas de SQL Server y Azure SQL

Al trabajar con SQL Server o Azure SQL Database en canalizaciones de CI/CD, hay numerosas herramientas y técnicas que puede aprovechar, incluidas las siguientes:

  • SQL Server Data Tools (SSDT): un conjunto de herramientas de desarrollo que permite a los desarrolladores de bases de datos compilar, depurar, mantener y refactorizar esquemas y objetos de base de datos en Visual Studio. Puede usar proyectos de SSDT para administrar los cambios en el esquema de base de datos y generar scripts de implementación para SQL Server o Azure SQL Database.
  • SQLPackage.exe: una utilidad de línea de comandos incluida en SSDT que simplifica la automatización de implementaciones de bases de datos de SQL Server mediante archivos de componente de aplicación de capa de datos (DACPAC). Puede usar SQLPackage.exe en canalizaciones de CI/CD para implementar cambios de base de datos en SQL Server o Azure SQL Database.
  • Tareas de Azure DevOps: tareas integradas como la implementación de Azure SQL Database y SqlAzureDacpacDeployment que permiten implementar cambios de base de datos directamente desde archivos DACPAC en Azure SQL Database. Estas tareas integran la implementación de bases de datos en canalizaciones de CI/CD sin necesidad de scripting personalizado.
  • Interfaz de Azure Command-Line (CLI): una utilidad que permite interactuar con los recursos de Azure, incluida Azure SQL Database, desde la línea de comandos. Puede usar comandos de la CLI de Azure en canalizaciones de CI/CD para automatizar el aprovisionamiento, la configuración y las tareas de implementación de bases de datos, como la creación de servidores de bases de datos, la implementación de archivos DACPAC y la ejecución de scripts SQL.
  • SQL Server Management Studio (SSMS): una herramienta gráfica proporcionada por Microsoft para administrar bases de datos de SQL Server. Aunque se usa principalmente para tareas de administración manual, SSMS también puede generar scripts de implementación y automatizar implementaciones de bases de datos mediante el Asistente para generar scripts o la característica Implementar base de datos en Microsoft Azure SQL Database.
  • Entity Framework (EF): técnica de programación que admite la funcionalidad ORM (mapeo relacional de objetos). Puede aprovechar la funcionalidad de migración basada en EF para administrar los cambios del esquema de base de datos y automatizar las migraciones de bases de datos en canalizaciones de CI/CD. Las migraciones de EF permiten definir cambios en el esquema de la base de datos mediante migraciones de código primero y aplicarlos automáticamente durante el inicio de la aplicación.
  • Scripts personalizados: scripts de PowerShell, Bash o SQL que automatizan las tareas de despliegue de bases de datos en canalizaciones de CI/CD. Estos scripts pueden usar módulos SQLCMD o Azure PowerShell para ejecutar scripts SQL, implementar archivos DACPAC o interactuar con Azure SQL Database mediante programación.