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


правильно настроив a развитие сервер производства сервер, я хотел бы создать постановка среда на Google App Engine полезно протестировать новые разработанные версии в реальном времени, прежде чем развертывать их в производство.

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

А. первый вариант заключается в изменении приложение.и YAMLверсия параметр.

version: app-staging

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

  1. промежуточная версия и производственная версия используют одно и то же хранилище данных
  2. промежуточная версия и производственная версия используют одни и те же журналы

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

Б. второй вариант заключается в изменении приложение.и YAMLприложение параметр

application: foonamestaging

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

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

5 54

5 ответов:

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

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

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

  1. вы можете сохранить функцию версий для реального управления версиями производственных приложений.
  2. вы можете сохранить функцию версий для разделения трафика.
  3. вы можете сохранить пространство имен функцию для мульти-аренды.
  4. вы можете легко копировать объекты из одного приложения в другое. Это не так просто между пространствами имен.
  5. несколько API все еще не делают поддержка пространств имен.
  6. для команд с несколькими разработчиками вы можете предоставить разрешение на загрузку в производство для одного человека.

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

что касается сценария развертывания, вы можете иметь любое имя приложения, которое вы хотите в своем приложении.и YAML. Некоторые фиктивные / dev имя и при развертывании, просто используйте -A параметр:

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

это значительно упростит ваш сценарий развертывания, не нужно заменять строку или что-то подобное в вашем приложении.и YAML

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

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

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

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

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

Я предпочитаю вариант A, и я пытаюсь настроить a создать простой скрипт в automatise для того чтобы обрабатывать