Je sais que nous devrions avoir au moins 3 environnements différents lors du développement d'une solution:
J'ai examiné cette question sur SoftwareEngineering , et cette question sur ServerFault , et ils semblent différer sur la signification de l'environnement de transfert. En outre, page Wikipedia sur le sujet indique que:
L'utilisation principale d'un environnement de transfert consiste à tester tous les scripts et procédures d'installation/configuration/migration avant de les appliquer à l'environnement de production. Cela garantit que toutes les mises à niveau majeures et mineures de l'environnement de production seront effectuées de manière fiable et sans erreur, en un minimum de temps.
Pour moi, Staging équivaut à UAT, où vous devez tester les procédures d'application et de déploiement avant de passer au monde réel. Donc, nous poussons le package avec les modifications d'UAT de la même manière que nous poussons vers la production, entièrement automatisé et avec toute la cérémonie que nous devrions avoir avec l'environnement de production.
Cela étant dit, quelle est la bonne différence entre un environnement UAT et un environnement de transfert?
-
EDIT: Juste pour être clair, je pense en termes d'application Web, que ce soit un site Internet ou un site intranet. Pas d'application "formulaires" ni d'application mobile.
La différence, ce sont les données.
Un environnement UAT est mis en place pour "l'acceptation par l'utilisateur" des nouvelles fonctionnalités. Afin de tester cette fonctionnalité, le contrôle qualité ou les parties prenantes peuvent configurer des profils utilisateur d'une manière particulière afin d'exercer des fonctionnalités particulières, ou peuvent configurer des produits ou des configurations fictifs pour les vérifier tous.
Un environnement intermédiaire est souvent mis en place avec une copie des données de production, parfois anonymisées. Certaines sociétés "actualisent" régulièrement leur base de données intermédiaire à partir d'un instantané de production. L'objectif principal est de garantir que l'application fonctionnera en production de la même manière que dans UAT. Au lieu de reconfigurer les données, les testeurs rechercheront dans la base de données des profils et des produits qui correspondent à un ensemble essentiel de cas de test. Souvent, les "vraies" données contiennent des caprices qui donnent lieu à des cas Edge inattendus qui ont été manqués pendant l'UAT. De plus, tout test de migration de données devrait avoir lieu dans l'environnement de transfert.
| Environment | Software version | Way of usage of software |
------------- ------------------- --------------------------
| UAT | New | Same as production |
| Staging | New or production | New for this version |
La définition de l'utilisation est très large ici et peut inclure toutes sortes de choses allant d'un changement de configuration effectué par les utilisateurs finaux à une fonctionnalité d'infrastructure coûteuse non disponible sur l'environnement UAT. Il est important de noter que la version du produit logiciel sur la mise en scène peut être nouvelle ou actuelle, mais toujours une version qui a déjà été acceptée.
En d'autres termes:
Remarque: comme cela a été décrit dans la question elle-même, il existe différentes interprétations de "l'environnement de transfert" et celle utilisée dans votre entreprise/environnement peut être différente.
L'utilisation de ces différents environnements dépend vraiment de vos besoins. D'après votre commentaire que "staging == UAT", cela ressemble beaucoup à si vous avez une très petite application sans équipe QA, et seulement quelques développeurs.
Les environnements d'application plus importants peuvent avoir un environnement de test d'intégration, ainsi qu'un environnement QA, le premier où les développeurs exécutent leurs tests d'intégration et le second où l'équipe QA exécute leurs tests. Il peut exister un environnement de formation contenant des données de stock qui sont restaurées avant chaque session de formation. L'environnement de mise en scène serait sous le contrôle de l'équipe des opérations, pour s'assurer que les déploiements se déroulent correctement. L'environnement de test d'acceptation par l'utilisateur (UAT) serait utilisé par l'équipe client. Il peut également y avoir un environnement d'instantané de production pour reproduire les problèmes des clients.
Mon point est de se méfier du point de vue unique lors de la détermination des environnements dont vous avez besoin.