Архитектура программного обеспечения¶
Общее описание¶
Решение 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.
Рисунок. Компонентная архитектура 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 в контуре корпоративной сети¶
Самый простой вариант топологии развёртывания - модель 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¶
Аналогичный вариант топологии развёртывания, учитывающий подключение конечных пользователей, находящихся за пределом офисной ЛВС клиента, посредством VPN (Point-to-Site), например, OpenVPN. На диаграмме опущена низкоуровневая сетевая инфраструктура, в т.ч. L4-МСЭ, эксплуатируемая клиентом.
Вариант 3. Гибридная модель on-cloud с интегрируемыми ИС в контуре корпоративной сети¶
Гибридная модель развёртывания. Решение 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.
Пароль, используемый для аутентификации пользователя на Портале, имеет набор настраиваемых характеристик:
- требование для пользователя сменить пароль при первом входе на портал;
- количество дней срока действия пароля;
- ограничение количества предыдущих паролей, запрещённых для повторения по отношению к актуальному паролю;
- запрет на использование паролей определённой конфигурации;
- минимальное количество символов в пароле;
- регулярность использования и алгоритм видов символов и регистров в пароле;
- запрет использования в качестве пароля логина и электронной почты;
- обязательное использование в пароле цифр и специальных символов;
- обязательное использование в пароле символов верхнего и нижнего регистра;
- правами блокировки учетной записи пользователя обладает Администратор Портала.