Архитектура решения
GANDIVA реализована в соответствии с принципами сервисно-ориентированной архитектуры (SOA). Система состоит из независимых сервисов, каждый из которых отвечает за собственную область функциональности и взаимодействует с остальными по стандартным сетевым протоколам (HTTP/HTTPS, REST). Такой подход обеспечивает слабую связанность компонентов, их независимое обновление и горизонтальное масштабирование.
Контейнерное исполнение
Все сервисы поставляются и исполняются в виде контейнеров. Каждый сервис представляет собой самодостаточный образ, что обеспечивает независимость развертывания и особенностей конкретной инфраструктурной площадки.
Состав компонентов
| КОМПОНЕНТ | ТИП СЕРВИСА | НАЗНАЧЕНИЕ |
|---|---|---|
| Обратный прокси | Системный | Приём клиентских соединений, терминация HTTPS, маршрутизация и балансировка нагрузки между прикладными сервисами. |
| REST API-приложение | Прикладной | Серверная бизнес-логика, программный интерфейс REST API, обработка запросов пользователей и внешних систем. |
| Web-приложение | Прикладной | Пользовательский веб-интерфейс системы. |
| Фоновые процессы / планировщик | Прикладной | Фоновые и выполняемые по расписанию задачи. В ближайших выпусках выделяется в отдельный сервис без публикации во внешнюю сеть. |
| СУБД PostgreSQL | Хранение данных | Постоянное хранение данных. Развёртывается на отдельном узле или в кластере. |
Независимость и масштабируемость сервисов
Прикладные сервисы (REST API и Web) спроектированы как независимые, поэтому могут запускаться в нескольких экземплярах. Это позволяет наращивать производительность горизонтально и распределять нагрузку средствами обратного прокси и оркестратора. Подробнее — в подразделах «Масштабирование и балансировка нагрузки» и «Контейнеризация и оркестрация».
Оркестрация
Управление жизненным циклом контейнеров (запуск, перезапуск, масштабирование, распределение по узлам) выполняется средствами оркестратора. Выбор оркестратора определяется масштабом внедрения и инфраструктурными требованиями заказчика:
- Swarm — применяется для небольших и средних внедрений; обеспечивает простую и надёжную оркестрацию для типовых конфигураций.
- Kubernetes — применяется для крупных внедрений и кластерных конфигураций, где требуются расширенные возможности управления, автоматического масштабирования и отказоустойчивости.
Архитектура системы не привязана к конкретному оркестратору: поскольку сервисы независимы и поставляются в виде контейнеров, возможны различные сценарии оркестрации в зависимости от потребностей и масштаба эксплуатирующей организации.
Поддержка систем виртуализации
Система может быть развёрнута на любой платформе виртуализации, поддерживающей контейнерные технологии.
Поддерживается инсталляция на российские системы виртуализации, зарегистрированные в Едином реестре российских программ (ЕРРП), — в частности прддерживается «Горизонт-ВС»
Контейнерный характер развёртывания позволяет эксплуатировать GANDIVA как на физических серверах, так и в виртуальной инфраструктуре без изменений в составе компонентов.