Je prévois de pousser une nouvelle application Web vers un service d'application Web Azure (ancien site Web Azure). Je voudrais utiliser les emplacements de déploiement pour pouvoir tester mon déploiement avant de le pousser en production. C'est très bien tant qu'aucun changement de schéma de base de données n'est requis. Mais s'il y a un changement de schéma, je ne peux pas avoir deux versions logicielles fonctionnant sur la même version db. Étant donné que j'utilise EF Migrations, la poussée vers l'emplacement de transfert entraînerait instantanément une mise à jour de la base de données vers la dernière version.
Ma question est donc de savoir s'il existe une utilisation des emplacements de déploiement lorsqu'une migration de base de données est requise?
Comment cela se fait-il pour les grands fournisseurs de SaaS? Réalisent-ils une migration de base de données instantanément avec la nouvelle version? Cela entraînerait sûrement des temps d'arrêt.
Je ne peux penser qu'à des solutions assez complexes à ce problème, y a-t-il quelque chose de simple?
Réponses:
Les versions sans interruption utilisant les emplacements Azure App Service et une seule base de données partagée par Staging and Production sont possibles, mais vous devez vous assurer que toutes les modifications de la base de données sont rétrocompatibles, de sorte que les versions actuelle et nouvelle de l'application Web puissent s'exécuter simultanément dans les emplacements de mise en scène et de production.
Quelques règles qui garantissent que cela fonctionne:
Lorsque vous devez apporter des modifications destructives, telles que renommer ou supprimer des colonnes, vous avez besoin de 2 versions pour ce faire:
Bien que cela semble un peu compliqué, dans la pratique, vous n'effectuerez probablement pas de changements destructeurs très souvent.
la source
avez-vous regardé les éléments de configuration spécifiques à l'emplacement? Sous WebApp / Paramètres / Paramètres d'application, vous pouvez spécifier les paramètres de l'application Web, mais également définir si elle s'applique uniquement à cet emplacement.
Vous pouvez donc avoir une chaîne de connexion spécifique à l'emplacement pour votre emplacement intermédiaire et appliquer également la migration sur les emplacements de permutation.
la source