Развертывание FrontEnd и BackEnd как двух отдельных приложений с помощью Google Cloud App Engine
У меня есть два приложения, которые я хочу развернуть с помощью Google Cloud App Engine.
Одним из них является react front end, и я хочу обслуживать его через www.videoo.io
Второй - back-end, который будет обслуживаться через api.videoo.io
Frontend yaml файл react.yaml :
runtime: nodejs16
env: standard
handlers:
- url: /static
static_dir: static
secure: always
- url: www.videoo.io/*
service: frontend
script: auto
secure: always%
API yaml файл, api.yaml :
runtime: python37
entrypoint: gunicorn -b :$PORT videoo.wsgi
service: "videoo-api"
env: standard
handlers:
- url: api.videoo.io/*
service: backend
script: auto
secure: always%
Правильно ли это?
Какова наилучшая стратегия для обслуживания этих двух отдельных приложений, которые будут интерактивно взаимодействовать (Frontend будет делать вызовы к API для получения информации об объектах, которая хранится в приложении Django)?
Вот также информация о моем доменном имени в настройках Google App Engine :
Вы на правильном пути. Вы используете архитектуру microservices, которая, по сути, представляет собой развертывание отдельных приложений как частей (сервисов) в рамках одного проекта.
- Ваша служба фронтенда, похоже, используется по умолчанию, поэтому вам не нужно имя службы для нее. Каждое приложение GAE App нуждается в службе по умолчанию
- Переименуйте
в
react.yaml
(поскольку это будет ваш сервис по умолчанию) и обновите содержимое доapp.yaml
runtime: nodejs16 env: standard handlers: - url: /static static_dir: static secure: always - url: /.* script: auto secure: always
- Также переименуйте
в
api.yaml
, поскольку именно так вы назвали свою службу (не уверен, что это обязательно, но я делаю это, чтобы легко отслеживать, что управляет моей службой). Обновите содержимое файла доbackend.yaml
service: backend runtime: python37 entrypoint: gunicorn -b :$PORT videoo.wsgi env: standard handlers: - url: api.videoo.io/* script: auto secure: always
- Вам понадобится файл
dispatch.yaml для маршрутизации трафика к различным сервисам. Что-то вроде
- Последний шаг заключается в том, что во время развертывания вы развернете 2 службы в дополнение к файлу dispatch.yaml. Файл dispatch.yaml должен находиться в корневой папке вашего проекта .
dispatch:
# Send all api traffic to the backend service.
- url: "api.videoo.io/*"
service: backend
# Send all other traffic to the default (frontend).
- url: "*/*"
service: default
gcloud app deploy app.yaml dispatch.yaml <path_to_backend.yaml>