Comprendre la tâche de déploiement de base de données
L’intégration de tâches de déploiement de base de données dans les workflows CI/CD Azure Pipelines et GitHub Actions automatise l’approvisionnement et les mises à jour de bases de données en même temps que les déploiements d’applications. Cette intégration permet une coordination transparente entre les cycles de vie des applications et des bases de données tout en réduisant les erreurs et les incohérences des déploiements manuels. L’automatisation du provisionnement de base de données accélère les cycles de publication, réduit les erreurs humaines et améliore la collaboration entre les équipes de développement, d’opérations et de base de données.
Considérations
Les déploiements de bases de données automatisés nécessitent une considération minutieuse de l’intégrité des données et de la prévention de la perte. Résolvez ces risques par le biais des dispositions suivantes :
- Séparation des données : conservez une séparation claire entre les modifications de schéma de base de données et les opérations de manipulation des données. Les modifications de schéma de base de données, telles que les modifications de table ou les mises à jour de schéma, doivent être gérées séparément des opérations de manipulation des données, telles que l’amorçage des données initiales ou l’importation et l’exportation de jeux de données.
- Conservation des données : implémentez des stratégies pour préserver les données existantes pendant le redéploiement du pipeline ou du flux de travail. Cela peut impliquer la sauvegarde des données critiques avant de déployer des modifications ou d’utiliser des scripts de migration de données pour transférer des données entre des environnements sans remplacer les données existantes.
- Opérations idempotentes : assurez-vous que les opérations de déploiement de base de données sont idempotentes, ce qui signifie qu’elles peuvent être réexécutées en toute sécurité plusieurs fois, ce qui entraîne toujours le même résultat. L’idempotence doit éliminer la possibilité de créer des objets de schéma et/ou des enregistrements en double.
- Contrôle de version et restauration : maintenez le contrôle de version sur les modifications de schéma de base de données, les migrations de données et les scripts de déploiement pour suivre les modifications et faciliter les procédures de restauration. Utilisez des référentiels de contrôle de code source pour gérer les scripts de base de données, appliquer des étiquettes de version ou des étiquettes à des modifications de base de données et implémenter des stratégies de restauration qui restaurent les modifications de base de données.
- Test et validation : effectuez des tests et une validation approfondis des modifications de base de données dans un environnement intermédiaire ou de test avant le déploiement en production. Utilisez des frameworks de test automatisés, des tests unitaires de base de données et des tests d’intégration pour vérifier les déploiements de base de données et garantir la compatibilité avec les données existantes.
- Surveillance et alertes : implémentez des mécanismes de surveillance et d’alerte pour détecter les anomalies, les erreurs ou les problèmes de performances lors des déploiements de base de données. Surveillez les métriques d’intégrité de la base de données, suivez les journaux d’audit et configurez les alertes déclenchées par tout comportement ou défaillance inattendu.
Les flux de travail Azure Pipelines et GitHub Actions partagent des concepts et des activités similaires pour le déploiement de base de données. L’incorporation du déploiement de base de données dans Azure Pipelines nécessite plusieurs tâches d’implémentation :
- Création de scripts de déploiement de base de données pour définir le schéma de base de données, les données initiales et appliquer toutes les configurations supplémentaires. Les scripts doivent résider dans le référentiel de contrôle de code source pour faciliter le suivi des modifications et le contrôle de version.
- Création de chaînes de connexion de base de données et stockage sécurisé de ces chaînes en tant que variables secrètes ou secrets de coffre de clés Azure. Cela nécessite également d’accorder aux pipelines l’accès aux secrets.
- Utilisation de tâches Azure DevOps ou d’extensions tierces pour exécuter des scripts de déploiement de base de données dans le cadre du pipeline.
- Configuration du pipeline pour déployer toutes les dépendances nécessaires, telles que les instances SQL Server, ainsi que les outils et utilitaires requis.
- Y compris les tâches de test de base de données dans le pipeline pour valider les modifications de base de données et vérifier que les déploiements réussissent. Cela implique généralement l’exécution de tests unitaires de base de données, de tests d’intégration ou de vérifications de validation des données.
- Implémentation de mécanismes de restauration et de récupération dans le pipeline pour gérer les échecs de déploiement ou les erreurs inattendues. Cela peut inclure la création d’instantanés de base de données, de sauvegardes ou de scripts de restauration transactionnelle pour rétablir les modifications en cas de problèmes.
Les spécificités des tâches d’implémentation varient considérablement en fonction de la technologie de base de données cible. La section suivante examine ces spécificités pour les déploiements de service Azure SQL.
Techniques et outils spécifiques à SQL Server et Azure SQL
Lorsque vous utilisez SQL Server ou Azure SQL Database dans des pipelines CI/CD, vous pouvez tirer parti de nombreux outils et techniques, notamment les suivants :
- SQL Server Data Tools (SSDT) : ensemble d’outils de développement qui permet aux développeurs de bases de données de générer, déboguer, gérer et refactoriser des schémas et des objets de base de données dans Visual Studio. Vous pouvez utiliser des projets SSDT pour gérer les modifications de schéma de base de données et générer des scripts de déploiement pour SQL Server ou Azure SQL Database.
- SQLPackage.exe: utilitaire de ligne de commande inclus dans SSDT qui simplifie l’automatisation des déploiements de bases de données SQL Server à l’aide de fichiers DACPAC (Data-tier Application Component). Vous pouvez utiliser SQLPackage.exe dans des pipelines CI/CD pour déployer des modifications de base de données sur SQL Server ou Azure SQL Database.
- Tâches Azure DevOps : tâches intégrées telles que le déploiement Azure SQL Database et SqlAzureDacpacDeployment qui vous permettent de déployer des modifications de base de données directement à partir de fichiers DACPAC vers Azure SQL Database. Ces tâches intègrent le déploiement de base de données dans des pipelines CI/CD sans nécessiter de script personnalisé.
- Interface azure Command-Line (CLI) : utilitaire qui vous permet d’interagir avec les ressources Azure, y compris Azure SQL Database, à partir de la ligne de commande. Vous pouvez utiliser des commandes Azure CLI dans des pipelines CI/CD pour automatiser l’approvisionnement, la configuration et les tâches de déploiement de bases de données, telles que la création de serveurs de base de données, le déploiement de fichiers DACPAC et l’exécution de scripts SQL.
- SQL Server Management Studio (SSMS) : outil graphique fourni par Microsoft pour la gestion des bases de données SQL Server. Bien que principalement utilisé pour les tâches d’administration manuelles, SSMS peut également générer des scripts de déploiement et automatiser les déploiements de base de données à l’aide de l’Assistant Générer des scripts ou de la fonctionnalité Déployer une base de données sur Microsoft Azure SQL Database.
- Entity Framework (EF) : technique programmatique qui prend en charge la fonctionnalité Object-Relational Mapper (ORM). Vous pouvez tirer parti de la fonctionnalité de migration basée sur EF pour gérer les modifications de schéma de base de données et automatiser les migrations de base de données dans les pipelines CI/CD. Les migrations EF vous permettent de définir les modifications apportées à votre schéma de base de données à l’aide de migrations code-first et de les appliquer automatiquement au démarrage de l’application.
- Scripts personnalisés : PowerShell, Bash ou SQL qui automatisent les tâches de déploiement de base de données dans les pipelines CI/CD. Ces scripts peuvent utiliser des modules SQLCMD ou Azure PowerShell pour exécuter des scripts SQL, déployer des fichiers DACPAC ou interagir avec Azure SQL Database par programmation.