61 votes

Comment configurer un environnement intermédiaire sur Google App Engine

Après avoir correctement configuré un Développement et un serveur de Production de serveur, je tiens à mettre en place une mise en scène de l'environnement sur Google App Engine utile pour tester de nouvelles versions live avant de les déployer en production.

Je sais que les deux approches différentes:

A. La première option est par la modification de l' application.yaml version de paramètre.

version: app-staging

Ce que je n'aime pas de cette approche est que les données de Production est pollué par ma mise en scène tests car (corrigez-moi si je me trompe):

  1. Mise en scène de la version et de la version de Production de partager la même banque de données
  2. Mise en scène de la version et de la version de Production de partager les mêmes journaux

Concernant le premier point, je ne sais pas si cela peut être "fixe" à l'aide de la nouvelle les espaces de noms API python.

B. La deuxième option est par la modification de l' application.yaml application paramètre

application: foonamestaging

avec cette approche, je voudrais créer une deuxième application totalement indépendante de la version de Production.
Le seul inconvénient que je vois, c'est que je suis obligé de configurer une deuxième application (administrateurs mis en place).
Avec une sauvegarde\outil de restauration comme Gaebar cette solution fonctionne bien aussi.

Ce type d'approche que vous utilisez pour configurer un environnement de test pour votre application web?
Aussi, avez-vous des scripts automatisés pour modifier les données avant de les déployer?

17voto

Zygimantas Points 445

Si distincte de la banque de données est nécessaire, l'option B semble plus propre solution pour moi car:

  1. Vous pouvez conserver les versions de fonctionnalité pour une véritable gestion des versions des applications de production.
  2. Vous pouvez conserver les versions fonctionnalité pour le trafic de fractionnement.
  3. Vous pouvez garder les espaces de noms fonctionnalité de multi-location.
  4. Vous pouvez facilement copier les entités d'une application à l'autre. Il n'est pas si facile entre les espaces de noms.
  5. Quelques APIs encore ne comprends toujours pas le support des espaces de noms.
  6. Pour les équipes avec plusieurs développeurs, vous pouvez accorder à télécharger à la production d'autorisation pour une seule personne.

14voto

geofrank Points 124

J'ai choisi la deuxième option dans mon set-up, parce que c'était la solution la plus rapide, et je n'ai pas de script pour changer l'application de paramètres de déploiement encore.

Mais la façon dont je le vois maintenant, l'option A est une solution de nettoyage. Vous pouvez le faire avec un couple de lignes de code commutateur de la banque de données de l'espace de noms basé sur la version, que vous pouvez obtenir dynamiquement à partir de la variable d'environnement CURRENT_VERSION_ID, comme indiqué ici: http://code.google.com/appengine/docs/python/runtime.html#The_Environment

4voto

Campey Points 310

Nous utilisons l'option B.

En plus de Zygmantas suggestions sur les avantages de la séparation de dev de prod au niveau de l'application, nous utilisons également notre dev application de test de performance.

Normalement, le dev instance s'exécute sans beaucoup de disponibles dans la façon de ressources, cela permet de voir où l'application "sent" slow. Ensuite, nous pouvons aussi indépendamment de bidouiller les paramètres de rendement pour voir ce qui fait une différence (par exemple, avant la fin de l'instance de la classe).

Bien sûr, parfois nous avons besoin de mordre la balle et de le tordre et de regarder sur live. Mais c'est agréable d'avoir l'autre application pour jouer avec.

Toujours utiliser des espaces de noms et versions, il suffit de dev est sale et expérimentale.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X