Могу ли я иметь два экземпляра в одном проекте App Engine — сервлет Java и конечные точки рядом?

У нас есть сервлеты Java, работающие в GAE, с использованием хранилища BLOB-объектов, хранилища данных и других облачных сервисов.

В настоящее время мы начинаем процесс миграции на облачные конечные точки и столкнулись с проблемой: если мы используем другой проект GAE, мы не сможем запрашивать текущие объекты хранилища данных (насколько мне известно, Google не не хочу, чтобы вы это делали — см. этот вопрос и Условия использования GAE — раздел 3.3d), поэтому нам нужно использовать один и тот же проект для обоих.

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

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

Кто-нибудь пробовал что-то подобное и может заверить нас, что это работает?


person Mor Blau    schedule 18.04.2016    source источник
comment
Мне непонятно, о чем вы спрашиваете. Можно ли перенаправить несколько доменов в одно приложение App Engine? Что вы можете. Можно ли перенаправить одно и то же доменное имя в два разных приложения? Нет, но это совершенно не зависит от движка приложения. Вы можете иметь сервлеты и конечные точки в одном приложении (фактически конечные точки тоже являются сервлетами), и вы можете разделить их на модули.   -  person konqi    schedule 18.04.2016
comment
Вы правы, я имел в виду проект GAE, а не домен. Редактирование моего вопроса для уточнения.   -  person Mor Blau    schedule 18.04.2016


Ответы (1)


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

  • как различные версии одного и того же приложение/модуль(и):

    • the old version remains the default, the new one can be accessed at a different URL during development (possibly via URL routing)
    • вы можете использовать разделение трафика для выполнения А/Б в реальном времени. тестирование нового кода и постепенная окончательная миграция, пока вы не сделаете новую версию по умолчанию
  • как различные модули одного и того же приложения:

    • both can run (fully functional) side by side indefinitely, but you need to be more careful during development
    • трафик направляется в модули несколькими возможными способами.
    • окончательная миграция выполняется путем публикации новых URL-адресов, в конечном итоге перенаправления старых URL-адресов и, наконец, удаления старого кода модуля.

Два подхода могут быть даже объединены, если это необходимо, в качестве окончательного решения, описанного OP в этом чем-то похожем вопросе (для среды python, но существуют эквиваленты java): Поэтапное обновление Google App Engine

person Dan Cornilescu    schedule 18.04.2016