Implementación de CI/CD para Azure SQL Database
Ahora ya sabe cómo implementar, configurar y usar Azure SQL Database con el fin de crear una base sólida para una aplicación moderna. Los requisitos de la aplicación evolucionan y cambian constantemente, por lo que el siguiente paso es comprender cómo actualizar la base de datos cuando sea necesario. Operaciones de desarrollo (DevOps) es un conjunto de principios y procedimientos que pueden ayudar.
DevOps es la unión de personas, procesos y tecnología para ofrecer un valor continuo a los clientes. Los equipos que adoptan la cultura, los procedimientos y las herramientas de DevOps tienen un alto rendimiento: se crean mejores productos a mayor velocidad para una mayor satisfacción del cliente.
Una base de datos es uno de los elementos principales de una solución; por tanto, la capacidad de tenerla integrada en las prácticas de DevOps es fundamental en el desarrollo de aplicaciones modernas y ágiles.
Con Azure SQL, hay varios métodos para incluir una base de datos en el proceso de DevOps. Una canalización de integración y entrega continuas (CI/CD) es el eje central de un entorno de DevOps y Azure SQL se puede integrar totalmente con cualquier herramienta de CI/CD que elija. Dos de las más comunes y utilizadas en Azure son Acciones de GitHub y Azure DevOps.
Implementación de CI/CD para bases de datos
Tener la base de datos como parte de una canalización de CI/CD significa que quiere configurar e implementar la estructura (y, quizá, incluso algunos datos) de una manera totalmente automatizada, reproducible y determinista. Una vez configurado, puede ejecutar el proceso de implementación o actualización en cualquier momento, todas las veces que quiera, y obtener resultados coherentes.
En esta unidad, conocerá los tres enfoques principales para implementar una canalización de CI/CD para bases de datos:
- Estado deseado
- Migraciones de Code First
- Scripts personalizados
Uso del enfoque de estado deseado con SqlPackage.exe
En un enfoque de estado deseado, se toma una instantánea de la estructura de una base de datos de referencia para representar el estado deseado. Después, puede usar esa instantánea para sincronizar otra base de datos (normalmente, la de pruebas o producción) con el estado deseado. Puede usar una herramienta como SqlPackage.exe para tomar la instantánea en un archivo .dacpac
. Cuando se aplique .dacpac
a la base de datos de destino, encontrará automáticamente las diferencias, generará el script correcto y lo aplicará para sincronizar el esquema de destino con la referencia.
Este enfoque de estado deseado se usa en el escenario del transporte en autobús; probablemente es el más sencillo de los tres que se han descrito.
Implementación de Migraciones de Code First en función del lenguaje
Hay otra opción cuando no quiere escribir scripts de T-SQL, sino permitir que C#, Python o Node, y las entidades definidas en la solución (por ejemplo, un bus, una ruta o una ubicación) generen automáticamente la base de datos y el esquema. Normalmente, hay una herramienta específica que viene con una plataforma o un marco, o se aplica a uno de ellos. Estas herramientas aseguran que, cada vez que cambia o agrega un campo o una entidad, la nueva estructura se vea reflejada en la base de datos. Al final de este módulo, encontrará referencias a herramientas para plataformas y marcos específicos.
Uso de scripts manuales para implementaciones paso a paso
Con el enfoque de scripting manual, el desarrollador escribe y mantiene cuidadosamente los scripts necesarios para crear y cambiar la base de datos con el tiempo. Después de implementar un script en producción no se cambia nunca, sino que se crea uno. Cada script contiene el código necesario para hacer evolucionar la base de datos al nuevo esquema. En los casos en los que es necesario implementar una base de datos desde cero, todos los scripts deben ejecutarse en la secuencia correcta para asegurarse de que la base de datos se crea y evoluciona correctamente. Una vez implementado un script, puede usar herramientas como la utilidad Comparación de esquemas en SQL Server Data Tools (SSDT) para comparar definiciones de base de datos. Esto ayuda a garantizar que el script implementado no se vuelva a aplicar a la misma base de datos en ejecuciones posteriores.
Selección de una herramienta de canalización para implementar CI/CD con facilidad
Una vez que ha identificado el mejor enfoque para actualizar la base de datos, puede elegir entre dos soluciones comunes a fin de implementarlo: Azure DevOps o Acciones de GitHub.
Implementación de CI/CD con Azure DevOps
Azure DevOps es un conjunto de productos que proporciona compatibilidad total con todos los aspectos de DevOps, incluida una canalización de CI/CD. Una canalización se compone de tareas que definen los pasos que la forman. Una tarea puede ser casi cualquier cosa, desde la ejecución de un ejecutable hasta la compilación de una solución de .NET. Puede usar una tarea específica denominada Tarea de implementación de Azure SQL Database para implementar un archivo .dacpac
o ejecutar un script .sql.
Implementación de CI/CD con Acciones de GitHub
Acciones de GitHub permite definir una canalización de CI/CD. Las Acciones se usan para crear los pasos de la canalización. Puede usar una acción para ejecutar procesos de casi cualquier tipo. La acción Implementar de Azure SQL permite implementar un archivo .dacpac
.
En el ejercicio siguiente, se usarán acciones de Azure SQL para implementar y actualizar el esquema de la base de datos y tendrá la oportunidad de verlo en acción.