Задать вопрос

Какой стек использовать для организации деплоймента и кластеризации такого проекта?

Есть проект с такой архитектурой:
5eae94c63219e700459851.png
Frontend сообщается с api через http запросы и получает обновления в realtime через постоянные websocket соединения. Api сервера имеют единую базу данных, а так же сообщаются между собой через redis (преимущественно для доставки обновлений в realtime через вебсокеты).

Проект не очень больших масштабов. Скорее всего хватит одного реального сервера под frontend, одного под api и одного под базу данных (по началу вообще всё на одном сервере будет). В связи с этим возникают следующие вопросы:

  1. Как лучше и проще всего в данном случае организовать беспрерывный деплоймент и кластеризацию frontend'а и api. Нужно ли в данном случае прибегать к использованию, скажем, kubernetes или хватит pm2?

  2. Если использовать socket.io для реализации беспрерывного соединения, то как настроить балансировщик так чтобы не было проблем с поддержкой long polling'а?
  • Вопрос задан
  • 121 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@vitaly_il1
DevOps Consulting
1.
лучше и проще всего
- дело субъективное. Для меня проще без K8S, но наверняка молодежь скажет что с ним легче.

Скорее всего хватит одного реального сервера под frontend, одного под api и одного под базу данных (по началу вообще всё на одном сервере будет)

Если все-таки хочется кластеризации, то наверно все-таки посмотреть на K8S. Его преимущество в том, что архитектура будет очень похожа и на одном реальном сервере сегодня, и на кластере в будущем. Один раз помучаться и настроить ingres - и потом относительно легко можно мигрировать куда-нибудь.
Если для начала хотим быстро развернуть все на одном сервере - то конечно без, просто поставить nginx, API engine, Database and Redis.

Кстати, если фронтенд это angular/react и т.п., то проще деплоить их на сервис для статических страниц - S3 и т.д. (если облака рассматриваются).

2. Надо смотреть на конкретный балансировщик и app server.
Общая идея такая:
а) помечаем сервер как неактивный
б) ждем пока закончатся все сессии
в) обновляем
г) возвращаем в балансировщик
е) переходим к следующему серверу
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы