Перейти к содержанию

Архитектура программного обеспечения

Общее описание

Решение VK People Hub имеет микросервисную архитектуру.

Выбранная архитектура решения предоставляет возможности:

  • эксплуатации решения с минимальными затратами на обслуживание;
  • обеспечения высокого уровня отказоустойчивости и безопасности портальных систем;
  • обеспечения репликации данных на уровне СУБД;
  • оперативной реакции на возникающие задачи и ситуации в рамках портальной платформы;
  • обеспечения предсказуемости в управлении всем комплексом портальных решений в процессе его развития;
  • обеспечения архитектурной целостности поставляемого решения, кастомизации Продукта за счёт модульности микросервисной архитектуры и имеющихся технологических возможностей.

Продукт учитывает планы и стратегию развития и модернизации в перспективе:

  • обеспечивается возможность горизонтальной масштабируемости серверов приложений, балансировки, кэширования, файлового хранения, СУБД и т.д.;
  • для обеспечения требуемой функциональности Продукта и целевых значений производительности используется in-memory СУБД в качестве горячего кеша;
  • на уровне пользовательских интерфейсов используются наиболее распространенные фреймворки (библиотеки) с открытым исходным кодом;
  • продукт поддерживает модель разработки виджетов с использованием JavaScript и встраивание их в пользовательский интерфейс с возможностью многократного использования;
  • в качестве основной СУБД используется реляционная СУБД PostgreSQL с открытым исходным кодом.
  • продукт может размещаться на серверах в ЦОД Клиента;
  • продукт поддерживает поставку и оркестрацию контейнеров Docker на базе платформы Kubernetes.

Функциональная архитектура

Продукт VK People Hub помогает решить следующие задачи:

  • реализация единого технологического решения, в рамках которого пользователю обеспечивается доступ ко всем необходимым функциям соответствующих бизнес-процессов;
  • обеспечение связности пользовательского опыта, стилистическое и функциональное единство между отдельными сервисами решения.

Продукт VK People Hub обеспечивает руководителей и сотрудников достаточными инструментами для реализации всех необходимых шагов, требующих участия сотрудника и руководителя, в следующих бизнес-процессах:

  • взаимодействие между коллегами, оптимизированное за счёт прозрачной организационной структуры и наличия доступа к информации о сотрудниках, позволяющей определить их компетенции;
  • общение между сотрудниками внутри организаций, направленное на взаимную помощь в решении корпоративных задач;
  • своевременное информирование сотрудников организаций о корпоративных изменениях и новостях в сферах профильного взаимодействия и их профессиональных интересов;
  • получение от сотрудников обратной связи в результате проведения публичных или закрытых опросов;
  • мотивация сотрудников принимать активное участие в корпоративной жизни организации;
  • формирование команд для выполнения совместных задач;
  • проектное взаимодействие сотрудников, направленное на выполнение общей задачи;
  • консолидация профессиональных и корпоративных знаний в едином информационном пространстве;
  • информирование сотрудников о проводимых в организации мероприятиях;
  • помощь в планировании времени сотрудников и бронировании офисного пространства общего пользования при организации встреч.

Более подробное описание бизнес-функций сервисов VK People Hub представлено на странице Функциональное описание.

Технологическая архитектура

Продукт VK People Hub построен на базе распространенных и применяемых среди аналогов инструментов:

  • Backend бизнес-логика:
    • Язык программирования: Python3;
    • Базовый фреймворк: Django;
    • Библиотеки:
      • Asyncio,
      • Celery,
      • Fastapi.
  • Frontend бизнес-логика:
    • Язык программирования: TypeScript;
    • Базовый фреймворк: React.

В качестве прикладного ПО используется:

  • СУБД:
    • PostgreSQL (OLTP, основная модель данных, включающая ПДн);
    • ClickHouse (OLAP);
    • Redis (горячий кеш);
    • MinIO (объектное хранилище).
  • Межсервисное взаимодействие:
    • Kafka (брокер сообщений);
    • IAM;
    • KeyCloak (авторизация и аутентификация).

Поддерживается реализация SSO с IAM-решением клиента с использованием протоколов OIDC, SAML, Kerberos/SPNEGO.

technical_architecture

Рисунок. Компонентная архитектура VK People Hub.

API

Для доступа к данным и внутренним функциональным сервисам, продукт реализует версионированные контракты REST API с поддержкой обратной совместимости устаревшего API.

По запросу клиента предоставляется актуальная версия документации API к необходимым сервисам. Формат возвращаемых данных – JSON.

Архитектура развёртывания

Решение VK People Hub поставляется в виде набора helm chart и образов контейнеров Docker, содержащих исполняемые файлы ПО.

Решение разворачивается на подготовленной и предоставляемой клиентом (или реализуемой проектно) платформе оркестрации на базе Kubernetes.

Важно! Поставка коробочной версии ПО VK People Hub не включает в себя и не осуществляет поддержку дистрибутивов:

  • платформы оркестрации Kubernetes и нижележащей инфраструктуры;
  • средств виртуализации Docker;
  • инфраструктурных, сетевых компонентов;
  • внешних средств информационной безопасности.

Требования к инфраструктуре on-premises

Чек-лист учёта требований к инфраструктуре

  • аппаратное обеспечение удовлетворяет рекомендуемым требованиям к аппаратному обеспечению;
  • развёрнутый или предоставленный Заказчиком кластер удовлетворяет требованиям, а также:
    • заложены дополнительные ресурсы на ОС, антивирус, агенты СРК/мониторинг, иной приклад заказчика;
    • заложены дополнительные ресурсы на Master-узлы K8s и процессы K8s на Worker-узлах;
    • в требованиях к ресурсам учтена репликация Master-узлов (2n-1, n >= 2 для продуктивной среды);
  • в требованиях к ресурсам учтены факторы репликации подов (рекомендуется >=2 для продуктивной среды);
  • в требованиях к ресурсам учтена избыточность данных СУБД (S3, PostgreSQL, ClickHouse);
  • в манифестах подов K8s указаны корректные limits.

Дополнительно:

  • в требованиях к ресурсам учтена группировка распределения подов по узлам, половина пода не может быть запланирована на Worker-узле;
  • для репликации подов >= 2, требования к ресурсам учитывают распределение подов по узлам в соответствии с политикой anti-affinity (узлов должно хватать);
  • в случае использования MinIO, реально необходимые ресурсы под кластер рассчитаны с учётом калькулятора erasure coding;
  • требования к ресурсам учитывают рост бизнеса и тенденции к масштабированию.

Рекомендованные требования к аппаратному обеспечению

Минимальные требования к аппаратному обеспечению не предъявляется.

Рекомендуемые требования к одному физическому узлу
Характеристика Описание
Поддержка функционирования в средах аппаратной виртуализации (VMWare, KVM, ...) Да
Архитектура CPU x86_64
Линейка CPU (не ниже) Семейство Intel Xeon IceLake 2gen (линейка AMD также поддерживается)
Тактовая частота CPU 2.2 GHz
Линейка RAM DDR3 / DDR4
OS (root) Тип ROM SSD (до 700Mbps); NVMe SSD (до 7000Mbps)
OS (root) Тип PV local, другие не рекомендуются
OS Минимальный объём ROM 140Gb
СУБД Тип ROM HDD, SSD
LAN 2 x 1Gbps (1 x LACP)
Доступ в WAN Да, в случае наличия в поставке сервисов, осуществляющих доступ в интернет
Допустимая переподписка vCPU/pCPU до 10 (dev); до 6 (pre-prod); до 2 (prod)
Допустимая переподписка vRAM/pRAM до 1.5 (dev, pre-prod); до 1 (prod)
Обязательные требования к кластеру Kubernetes
Категория Требование Значение
Версия Минимальная поддерживаемая версия Kubernetes 1.24
Максимальная поддерживаемая версия Kubernetes 1.30 (уточняйте актуальные данные у команды поддержки продукта)
Сеть TCP latency между подами на одном узле <2 мс
TCP latency между подами на разных узлах <2 мс
Ping <2 мс
CNI Calico или Cilium
Сеть/Ingress IngressController Nginx
Сеть/Egress Наличие доступа в интернет Да (SNAT ок), в случае наличия в поставке сервисов, осуществляющих доступ в интернет
Storage/PV Должна быть организована поддержка PV В случае, если СУБД разворачиваются внутри K8s, для СУБД должны быть доступны быстрые типы PV
Требования к прикладному ПО

Поддерживаемые поставки и версии прикладного ПО (в т.ч. СУБД), используемого VK People Hub, строго фиксированы и заданы в инструкциях к развёртыванию на конкретный мажорный релиз (4 квартал 2023 года, 1 квартал 2024 года).

Интеграция с аналогичным ПО сторонних вендоров (отличных от оригинальных) не поддерживается, за исключением S3-совместимого объектного хранилища.

Требования к S3-совместимому объектному хранилищу

Поддержка и полная реализация публичного протокола API AWS S3.

Поддержка функционирования с использованием библиотеки boto3.

Варианты развёртывания

В процессе архитектурного проектирования информационных систем рекомендуется ссылаться на референтные топологии развёртывания.

Вариант 1. Простая модель on-premises в контуре корпоративной сети

technical_architecture

Самый простой вариант топологии развёртывания - модель on-premises полностью в контуре корпоративной сети клиента. На диаграмме опущена низкоуровневая сетевая инфраструктура, в т.ч. L4-МСЭ, эксплуатируемая клиентом.

Логическая зона Название элемента Предоставляет Описание
ДМЗ WAF Заказчик Web Application Firewall – L7/HTTP firewall
Внутренняя сеть HTTP Load Balancer Заказчик Балансировщик нагрузки, интегрируемый с Ingress Controller кластера Kubernetes. Может также служить proxy-сервером. Терминирует SSL/TLS
Внутренняя сеть Jump-host Заказчик Промежуточный сервер для доступа эксплуатации к API kubernetes и СУБД
Внутренняя сеть Кластер Kubernetes Заказчик
Внутренняя сеть Сервисы в кластере Kubernetes VK Бизнес-сервисы решения VK People Hub
Внутренняя сеть PostgreSQL Заказчик/VK РСУБД PostgreSQL
Внутренняя сеть Другие СУБД Заказчик/VK Другие используемые в VK People Hub СУБД: Redis, ClickHouse, …
Внутренняя сеть Хранилище S3 Заказчик/VK Объектное хранилище с S3-совместимым API. Например, VKCS S3
ИТ- и Бизнес-системы HCM Заказчик Интегрируемые бизнес-системы Заказчика
ИТ- и Бизнес-системы LMS Заказчик Интегрируемые бизнес-системы Заказчика
ИТ- и Бизнес-системы Другие бизнес-системы Заказчик Интегрируемые бизнес-системы Заказчика
ИТ- и Бизнес-системы LDAP-провайдер Заказчик Необязательно. IdP, работающий по протоколу LDAP. Например, Microsoft Active Directory
ИТ- и Бизнес-системы Инструменты развёртывания Заказчик Система развёртывания для управления деплойментами Kubernetes-кластера и СУБД. Например, GitLab
ИТ- и Бизнес-системы Docker реестр (зеркало) Заказчик Локальное зеркало-репозиторий для образов контейнеров Docker. Рекомендуется настройка в режиме pull through cache

Вариант 2. Простая модель on-premises в контуре корпоративной сети с клиентским VPN

technical_architecture

Аналогичный вариант топологии развёртывания, учитывающий подключение конечных пользователей, находящихся за пределом офисной ЛВС клиента, посредством VPN (Point-to-Site), например, OpenVPN. На диаграмме опущена низкоуровневая сетевая инфраструктура, в т.ч. L4-МСЭ, эксплуатируемая клиентом.

Вариант 3. Гибридная модель on-cloud с интегрируемыми ИС в контуре корпоративной сети

technical_architecture

Гибридная модель развёртывания. Решение VK People Hub разворачивается на вычислительных ресурсах облачного провайдера (VK Cloud). Сетевое взаимодействие с интегрируемыми ИС клиента осуществляется посредством долгоживущего VPN-тоннеля (Site-to-Site) между сетевыми контурами корпоративной сети клиента и облачного провайдера.

Соответствие требованиям информационной безопасности

Восстановления при аварийных ситуациях

Для обеспечения отказоустойчивости всех компонентов продукта VK People Hub имеет возможность функционирования в кластерном режиме (обеспечивается платформой оркестрации Kubernetes).

В случае аварийного отключения электропитания серверной части, а также программного сбоя общесистемного ПО, инициирующего незапланированную перезагрузку Портала восстановление базы данных будет производиться из резервной копии, сохраняя при этом конфигурации всех предыдущих кодов разработки.

Возможность выполнения задач резервного копирования и восстановления элементов системы без прерывания функционирования всего продукта может быть обеспечено с использованием платформы оркестрации Kubernetes.

Осуществление резервного копирования информации может осуществляться в режимах (периодичность и очередность этих операций определяются клиентом в собственном корпоративном регламенте эксплуатации VK People Hub):

  • создание полной копии базы данных;
  • сохранение изменений, внесенных со времени создания последней архивной копии.

Для хранения снимков файловой системы (snapshots) с возможностью дальнейшего восстановления используются средства хранения, определяемые Клиентом.

Зоны системного ландшафта

Продукт VK People Hub имеет возможность управляемого переноса конфигураций между зонами системного ландшафта, т.е. компоновки и переноса конфигураций между средой разработки, средой тестирования, продуктивной средой.

Обновление (перенос) конфигураций пакетов helm chart между зонами системного ландшафта происходит через взаимодействие в системе управления репозиториями.

Управление доступом пользователей на Портал

Контроль (предоставление/отказ) доступа субъектов к защищаемым информационным ресурсам осуществляется в соответствии с матрицей доступа, сопровождающей Продукт, распределяющей между ролями пользователей права для выполнения действий на портале. Наборы групп пользователей, их роли, права и состав управляются Администратором.

Администратор обладает возможностями:

  • присвоение и ограничение прав пользователя в соответствии с его участием в соответствующей группе пользователей;
  • обеспечение разграничения уровней доступа пользователей, как с возможностью индивидуальной настройки прав доступа, так и с использованием механизма системных ролей;
  • обеспечение разграничения доступа к информационным ресурсам (наборам документов, НСИ и т.д.);
  • обеспечение разграничения доступа к функциям Продукта;
  • аутентификация пользователя на Портале производится в едином сервисе авторизации по персональному уникальному логину по паролю при входе из корпоративной сети через SSO (решение Single-Sign On) на базе Keycloak.

Пароль, используемый для аутентификации пользователя на Портале, имеет набор настраиваемых характеристик:

  • требование для пользователя сменить пароль при первом входе на портал;
  • количество дней срока действия пароля;
  • ограничение количества предыдущих паролей, запрещённых для повторения по отношению к актуальному паролю;
  • запрет на использование паролей определённой конфигурации;
  • минимальное количество символов в пароле;
  • регулярность использования и алгоритм видов символов и регистров в пароле;
  • запрет использования в качестве пароля логина и электронной почты;
  • обязательное использование в пароле цифр и специальных символов;
  • обязательное использование в пароле символов верхнего и нижнего регистра;
  • правами блокировки учетной записи пользователя обладает Администратор Портала.