J'essaie de déterminer la meilleure façon de déployer de nouvelles versions d'une application Web établie. Dans le passé, je l'ai fait de deux manières différentes mais cette fois, nous cherchons à faire quelque chose d'un peu différent/meilleur.Déploiement d'applications Web pour une population d'utilisateurs limitée
Nous utilisons des serveurs de développement/staging/production. Une fois le développement terminé et les fonctionnalités de base testées, nous exécutons le code de développement avec une base de données de production mise à niveau sur le serveur de transfert. Si notre assurance qualité interne ne trouve pas de problèmes dans l'environnement de transfert, nous effectuons ces changements en direct.
Cette dernière étape a été fait dans les deux façons suivantes:
Mise à niveau du code et la base de données schéma à un moment de faible utilisation, faire un peu des tests pour vous assurer que les mises à niveau allé OK, puis croiser les doigts et espérons que les utilisateurs ne trouvent pas certains bug que QA manqué, toujours prêt à éteindre les incendies ou revenir à la version précédente en cas de défaillance majeure .
Créez la nouvelle version de l'application à une URL différente. Copiez la base de données de production vers une nouvelle version , videz-la, puis copiez sur pour les utilisateurs sélectionnés et utilisez pour utiliser la nouvelle URL. C'est-à-dire, ils accéderaient à l'application de www2.example.com au lieu de www.example.com. Déplacer lentement tous les utilisateurs vers la nouvelle version, puis basculer vers les adresses précédentes.
Cette fois, je cherche à faire quelque chose comme une combinaison des deux méthodes. Fondamentalement, je pense à déplacer un petit nombre d'utilisateurs vers le nouveau service tout en gardant la même URL.
Voici ce que je considère faire dans l'hôte virtuel. Map.txt serait généré/mis à jour lorsque les nouveaux utilisateurs seraient déplacés. (Je regardais en utilisant la carte de réécriture prg mais ai peur de la pendaison apache attendant le script.)
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /web/www.example.com
ServerName www.example.com
RewriteEngine on
RewriteMap deploymentmap txt:/web/map.txt
RewriteRule ^/id/([0-9]+)/(.*)$ ${deploymentmap:$1}/id/$1/$2
</VirtualHost>
map.txt:
10001 /web/www2.example.com/
10002 /web/www2.example.com/
10003 /web/www2.example.com/
10004 /web/www2.example.com/
10005 /web/www2.example.com/
Y a-t-il des lacunes évidentes dans cette stratégie de déploiement? Est-ce que je manque une méthode de mise à niveau simple et efficace, moins douloureuse?
Merci d'avance pour toute assistance.
-Paul