Я разрабатываю свое первое приложение node.js для развертывания в GAE.
Он будет организован как служба API и интерфейсное веб-приложение, разработанное с помощью Next.js.
Я смотрю на эту архитектуру, и, хотя у меня есть приложение, разделенное на два репозитория, у меня может быть одно объединенное репо для создания двух разных микросервисов:
https://medium.com/this-dot-labs/node-js-microservices-on-google-app-engine-b1193497fb4b
Для меня создание нового репозитория для их объединения и развертывания кажется чрезмерным трудом (разве это не нарушает одну из основных идей микросервисов по созданию изолированных развертываний?)
Я должен отговорить это, потому что нам нужно SEO в некоторых частях, и мы должны использовать Next.js (или аналогичный):
https://cloud.google.com/storage/docs/hosting-static-website
Еще одна идея, над которой я работал, - это ... создавать разные проекты GAE для внешнего интерфейса и API для независимого развертывания. На мой взгляд, это лучший вариант, но хотелось бы узнать ваше мнение как экспертов GAE.
Какой мне использовать?
Спасибо!
GAE не волнует, как код будет развернут в сервисах, сопоставленных с одним или несколькими репозиториями VCS (или вообще без репозиториев). Это полностью зависит от вас.
При использовании одного репозитория вы можете столкнуться с трудностями при развертывании из конвейеров CI / CD - например, ненужных развертываний в одну службу, когда изменяется только другая.
Многие примеры посвящены приложениям, а не службам, но это не более чем службы по умолчанию для этих приложений. Лично мне нравится хранить код для разных сервисов в отдельных каталогах, см. Изображение, захваченное в Может ли служба / модуль по умолчанию в приложении Google App Engine быть родственником нестандартного с точки зрения структуры папок? (его больше нет на обновленной странице документации). Это также позволяет легко сопоставить несколько отдельных репозиториев VCS.
Что касается нескольких проектов по сравнению с несколькими услугами, этот мог бы может помочь: Преимущества внедрения сред CI / CD на уровне проекта / приложения GAE по сравнению с уровнем сервиса / модуля?
Упомянутая вами статическая ссылка на веб-сайт не является частью GAE, это часть GCS - другого продукта GCP. Это нормально использовать само по себе - для статического веб-сайта, но мог бы сложно / невозможно: