Как мне создать архитектуру API и фронтального приложения в Google App Engine?

Я разрабатываю свое первое приложение 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.

Какой мне использовать?

Спасибо!

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
219
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

GAE не волнует, как код будет развернут в сервисах, сопоставленных с одним или несколькими репозиториями VCS (или вообще без репозиториев). Это полностью зависит от вас.

При использовании одного репозитория вы можете столкнуться с трудностями при развертывании из конвейеров CI / CD - например, ненужных развертываний в одну службу, когда изменяется только другая.

Многие примеры посвящены приложениям, а не службам, но это не более чем службы по умолчанию для этих приложений. Лично мне нравится хранить код для разных сервисов в отдельных каталогах, см. Изображение, захваченное в Может ли служба / модуль по умолчанию в приложении Google App Engine быть родственником нестандартного с точки зрения структуры папок? (его больше нет на обновленной странице документации). Это также позволяет легко сопоставить несколько отдельных репозиториев VCS.

Что касается нескольких проектов по сравнению с несколькими услугами, этот мог бы может помочь: Преимущества внедрения сред CI / CD на уровне проекта / приложения GAE по сравнению с уровнем сервиса / модуля?

Упомянутая вами статическая ссылка на веб-сайт не является частью GAE, это часть GCS - другого продукта GCP. Это нормально использовать само по себе - для статического веб-сайта, но мог бы сложно / невозможно:

  • общаться между сервисом, работающим на нем, и сервисом, работающим в GAE - если вам это нужно
  • сделать так, чтобы 2 службы отображались как одна (например, служили под одним и тем же доменным именем)

Другие вопросы по теме