Je travaille dans l'équipe de gestion des versions d'une très grande entreprise Internet. Nous utilisons essentiellement le processus que vous avez décrit ci-dessus, et nous avons choisi ce processus exprès. Dans notre méthodologie, la mise en scène sert de mécanisme de branchement pour un niveau final de test en production.
Évidemment, vous voulez faire tous les tests avant de passer à la production, mais dans un environnement vaste et complexe avec beaucoup d'utilisateurs, c'est un objectif très difficile à atteindre. En particulier, il est pratiquement impossible de charger adéquatement un logiciel de test dans QA. Les tests fonctionnels sont beaucoup plus faciles à automatiser que les tests de charge. Lorsque vous avez plusieurs milliers d'utilisateurs sur vos serveurs, les choses échouent de manière étrange et difficile à prévoir.
Voici donc ce que nous faisons:
- Développement
- comprend une intégration continue et des tests automatisés
- test de version
- mon groupe analyse la version elle-même
- examen des journaux d'installation
- test de restauration
- QA
- tests d'acceptation des utilisateurs
C'est à ce point que nous passons entre la mise en scène et la production. Nous utilisons un modèle de train pour les versions, avec un nouveau train commençant toutes les quelques semaines. Même les trains numérotés vont aux serveurs intermédiaires (qui sont en production). Les trains impairs ne le font pas.
Entre les trains pairs, les développeurs ont la possibilité de pousser des modifications individuelles sur les serveurs de transfert ( après que ces changements ont été testés par QA bien sûr). Cela leur permet de valider que leur logiciel fonctionne comme prévu dans un environnement de production réel. Ceci est généralement réservé aux composants qui sont considérés comme à risque plus élevé, nous ne poussons pas chaque petite pièce à la mise en scène.
Ensuite, tout le monde comprend que lorsque le prochain train pair commencera, il effacera ce qui se trouve sur les serveurs de transit et les replacera sur la ligne de base du train. Les développeurs s'assurent que leurs modifications sont entrées dans le train, ou décident qu'ils ne sont pas encore prêts pour une utilisation générale, auquel cas ces modifications sont simplement effacées sur les serveurs de transfert.
Pour résumer, la réponse courte (au moins pour nous) est qu'il est impossible de tester complètement des systèmes complexes en AQ. La mise en scène fournit un moyen sûr d'effectuer des tests de production limités.
Sur une note connexe, voici mes diapositives d'une présentation que je viens de donner sur le fonctionnement de notre processus de publication.