Implémenter CI/CD pour Azure SQL Database

Effectué

Vous savez désormais comment déployer, configurer et utiliser Azure SQL Database pour poser les bases solides d’une application moderne. Les exigences des applications évoluant constamment, l’étape suivante consiste à comprendre comment mettre à jour votre base de données en cas de besoin. DevOps (Development Operations) est un ensemble de principes et de pratiques qui peuvent vous aider.

DevOps regroupe les personnes, les processus et les technologies pour fournir en permanence de la valeur aux clients. Les équipes qui adoptent la culture, les pratiques et les outils de DevOps sont plus performantes, créent de meilleurs produits plus rapidement et améliorent la satisfaction des clients.

Dans la mesure où une base de données est l’une des parties principales d’une solution, son intégration à vos pratiques DevOps est un élément clé du développement d’applications modernes et agiles.

Avec Azure SQL, vous disposez de plusieurs approches pour inclure votre base de données dans votre processus DevOps. Un pipeline d’intégration continue (CI) et de livraison continue (CD) est l’épine dorsale d’un environnement DevOps. Vous pouvez intégrer Azure SQL à l’outil CI/CD de votre choix. Deux des outils les plus courants et les plus utilisés dans Azure sont GitHub Actions et Azure DevOps.

Implémenter CI/CD pour les bases de données

Le fait que la base de données fasse partie d’un pipeline CI/CD signifie que vous souhaitez configurer et déployer la structure (et peut-être même une partie des données) de manière entièrement automatisée, reproductible et déterministe. Une fois la configuration effectuée, vous pouvez exécuter le processus de déploiement ou de mise à jour à tout moment, autant de fois que vous le souhaitez, et obtenir des résultats cohérents.

Dans cette unité, vous allez découvrir les trois principales approches relatives à l’implémentation d’un pipeline CI/CD pour des bases de données :

  • État souhaité
  • Migrations Code First
  • Scripts personnalisés

Utiliser l’approche État souhaité avec SqlPackage.exe

Dans l’approche État souhaité, vous prenez une capture instantanée de la structure d’une base de données de référence pour représenter l’état souhaité. Vous pouvez ensuite utiliser cette capture instantanée pour synchroniser une autre base de données cible (la base de données de test ou de production, en règle générale) à l’état souhaité. Vous pouvez utiliser un outil comme SqlPackage.exe pour prendre l’instantané dans un fichier .dacpac. Quand le fichier .dacpac est appliqué à la base de données cible, il trouve automatiquement les différences, génère le bon script et applique ce script pour synchroniser le schéma cible avec la référence.

Nous utilisons l’approche de l’état souhaité dans le scénario de localisation de bus. Il s’agit probablement de l’approche la plus simple parmi les trois présentées.

Implémenter Migrations Code First en fonction de votre langage

Une autre option est utile quand vous ne souhaitez pas écrire de scripts T-SQL : laissez C#, Python ou Node et les entités définies dans votre solution (par exemple un bus, une route ou un emplacement) générer automatiquement la base de données et le schéma. En règle générale, un outil spécifique est fourni avec une plateforme ou un framework, ou s’applique à ces derniers. Ces outils permettent de garantir que chaque fois que vous changez ou ajoutez un champ ou une entité, la nouvelle structure est reflétée dans la base de données. Vous trouverez des références à des outils pour des plateformes et des frameworks spécifiques à la fin de ce module.

Utiliser des scripts manuels pour les déploiements pas à pas

Dans l’approche basée sur des scripts manuels, un développeur écrit et gère avec soin les scripts nécessaires pour créer et changer la base de données au fil du temps. Une fois qu’un script a été déployé en production, il ne peut plus être changé. À la place, un autre script est créé. Chaque script contient le code nécessaire pour faire évoluer la base de données vers le nouveau schéma. Dans les cas où une base de données doit être déployée à partir de zéro, tous les scripts doivent être exécutés selon la bonne séquence pour garantir la création et l’évolution correctes de la base de données. Une fois qu’un script a été déployé, vous pouvez utiliser des outils comme l’utilitaire Comparer les schémas dans SQL Server Data Tools (SSDT) pour comparer les définitions de base de données. Cela permet de s’assurer que le script déployé n’est pas appliqué à nouveau à la même base de données lors des exécutions suivantes.

Sélectionnez un outil de pipeline pour implémenter CI/CD en toute simplicité

Une fois que vous avez identifié l’approche qui correspond le mieux à la façon dont vous allez mettre à jour votre base de données, vous avez le choix entre deux solutions courantes, Azure DevOps ou GitHub Actions, pour implémenter cette approche.

Implémenter la CI/CD avec Azure DevOps

Azure DevOps est une suite de produits prenant entièrement en charge tous les aspects de DevOps, notamment un pipeline CI/CD. Un pipeline se compose de tâches qui définissent les étapes du pipeline. La nature d’une tâche est pratiquement illimitée, de l’exécution d’un exécutable à la génération d’une solution .NET. Vous pouvez utiliser une tâche spécifique nommée Tâche de déploiement de base de données Azure SQL pour déployer un fichier .dacpac ou exécuter un script .sql.

Implémenter CI/CD avec GitHub Actions

Les actions GitHub Actions permettent de définir un pipeline CI/CD. Vous utilisez les actions pour créer les étapes du pipeline. Vous pouvez utiliser une action pour exécuter quasiment n’importe quel type de processus. L’action Azure SQL Deploy vous permet de déployer un fichier .dacpac.

Vous pourrez vous familiariser avec ce concept dans l’exercice suivant en utilisant des actions Azure SQL pour déployer et mettre à jour le schéma de base de données.

Contrôle des connaissances

1.

Laquelle des approches suivantes n’est pas une approche de CI/CD dans Azure SQL Database ?

2.

Nous avons défini DevOps comme l’union de trois choses. Laquelle des options suivantes n’en fait pas partie ?