Подтвердить что ты не робот

Как настроить промежуточную среду в Google App Engine

Правильно настроив сервер разработки и производственный сервер, я хотел бы настроить среду разработки Google App Engine для тестирования новых разработанных версий в прямом эфире до их развертывания.

Я знаю два разных подхода:

A.. Первый вариант - это изменить параметр app.yaml версия..

version: app-staging

Что мне не нравится в этом подходе, так это то, что производственные данные загрязняются моими промежуточными тестами, потому что (исправьте меня, если я ошибаюсь):

  • Простая версия и производственная версия используют один и тот же хранилище данных
  • Простая версия и производственная версия имеют одни и те же журналы

Что касается первого момента, я не знаю, может ли он быть "исправлен" с использованием нового пространства имен python API.суб >

B. Второй вариант заключается в изменении параметра app.yaml приложение

application: foonamestaging

при таком подходе я бы создал второе приложение, полностью независимое от версии Production.
Единственный недостаток, который я вижу, заключается в том, что я вынужден настроить второе приложение (администраторы настроены).
С помощью средства резервного копирования\восстановления, такого как Gaebar, это решение также хорошо работает.

Какой подход вы используете для настройки промежуточной среды для своего веб-приложения?
Кроме того, есть ли у вас автоматическая script, чтобы изменить yaml перед развертыванием?

4b9b3361

Ответ 1

Я выбрал второй вариант в моей настройке, потому что это было самое быстрое решение, и я не делал никаких script для изменения параметра приложения при развертывании.

Но, как я вижу это сейчас, вариант A является более чистым решением. Вы можете с помощью пары строк кода переключать пространство имен хранилища данных на основе версии, которую вы можете получить динамически из переменной среды CURRENT_VERSION_ID, как описано здесь: http://code.google.com/appengine/docs/python/runtime.html#The_Environment

Ответ 2

Если требуется отдельный хранилище данных, вариант B выглядит для меня более чистым решением, потому что:

  • Вы можете сохранить версию для реальной версии производственных приложений.
  • Вы можете сохранить функцию версий для разделения трафика.
  • Вы можете сохранить функцию namespaces для многопользовательской аренды.
  • Вы можете легко копировать объекты из одного приложения в другое. Это не так просто между пространствами имен.
  • Несколько API по-прежнему не поддерживают пространства имен.
  • Для команд с несколькими разработчиками вы можете предоставить загрузку для разрешения на производство для одного человека.

Ответ 3

Мы пошли с вариантом B. И я думаю, что это лучше вообще, поскольку он полностью изолирует проекты. Так, например, игра с некоторыми конфигурациями на промежуточном сервере не повлияет и не ставит под угрозу безопасность или вызывает какой-либо другой эффект бабочки в вашей рабочей среде.

Что касается развертывания script, вы можете указать любое имя приложения в своем приложении .yaml. Некоторое имя dummy/dev и при развертывании просто используйте параметр -A:

appcfg.py -A your-app-name update .

Это значительно упростит развертывание script, не нужно заменять строку или что-либо подобное в вашем приложении app.yaml

Ответ 4

Мы используем опцию B.

В дополнение к предложениям Zygmantas о преимуществах разделения dev от prod на уровне приложений мы также используем наше приложение для тестирования производительности.

Обычно экземпляр dev работает без особого доступа к ресурсам, это помогает увидеть, где приложение "чувствует" медленное. Затем мы также можем независимо настраивать параметры производительности, чтобы увидеть, что имеет значение (например, внешний класс экземпляра).

Конечно, иногда нам нужно укусить пулю и настроить и смотреть вживую. Но приятно иметь другое приложение для игры.

По-прежнему используйте пространства имен и версии, просто dev грязный и экспериментальный.

Ответ 5

Я предпочитаю вариант A, и я пытаюсь настроить простую сборку script для автоматизации процесса