Требования

Здесь описаны требования, предъявляемые платформой «Агредатор» к IT-инфраструктуре, в которую планируется интеграция. Поскольку платформа представляет собой комплексное и конфигурируемое решение, то данные требования носят консультационный характер и могут меняться в зависимости от конкретной выбранной схемы размещения или иных условий.

Системные требования

«Агредатор» должен работать на любой современной операционной системе семейства Linux и на любой современной версии Docker. На данный момент единственной поддерживаемой архитектурой является 64-bit x86.

Поскольку требования к аппаратной части сильно зависят от планируемой загрузки (и выбранной схемы размещения), тут будут приведены приблизительные характеристики серверов с «Агредатором», базой данных, RabbitMQ и Minio, позволяющие обрабатывать различные потоки обращений к платформе.

Внимание

Пропускная способность сильно зависит от характера и размера сообщений, обрабатываемых системой. При данной оценке рассматривалась работа с типовым ВС СМЭВ. Такая работа включает несколько циклов сетевого взаимодействия в рамках обработки одного «запроса»: обращения для выполнения цифровой подписи, сохранение промежуточных XML-документов в надёжное хранилище, обработка файла вложения и непосредственное взаимодействие с поставщиком данных.

Рекомендованные требования сервера приложений «Агредатор»

Запросы VM ЦПУ ОЗУ
До 50 тыс. в сутки (~2 rps) 1 4 vCPU 8Gb
До 200 тыс. в сутки (~4 rps) 1 8 vCPU 12Gb
До 1 млн в сутки (~10 rps) 3 4 vCPU 8Gb
До 10 млн в сутки (~100 rps) 3 10 vCPU 12Gb

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

  До 50 тыс. в сутки 1 До 200 тыс. в сутки 1 До 1 млн в сутки 2
RabbitMQ 2 vCPU 2Gb ОЗУ
100Gb HDD
4 vCPU 4Gb ОЗУ
200Gb HDD
3 x (3 vCPU 6Gb ОЗУ 200Gb SSD)
PostgreSQL 2 vCPU 4Gb ОЗУ
100Gb HDD
6 vCPU 12Gb ОЗУ
200Gb HDD
12 vCPU 24Gb ОЗУ
200Gb+ SSD 3
MinIO (S3) 2 vCPU 4Gb ОЗУ
100Gb HDD
4 vCPU 8Gb ОЗУ
200Gb SSD
8 vCPU 16Gb ОЗУ
200Gb+ SSD 3

1. Подсистемы хранения данных могут располагаться на том же сервере, что и сервер приложений «Агредатор».

2. Кластеризация RabbitMQ и иных компонентов необходима для обеспечения отказоустойчивости и рассчитывается отдельно.

3. Объём дискового пространства (для СУБД или S3) обусловлен требуемым сроком хранения данных и должен быть рассчитан под конкретные условия.

Оценка объёма данных, подлежащих хранению

Для некоторых поставщиков данных (ВС СМЭВ) результатом информационного обмена являются юридически значимые цифровые документы (в виде XML-файлов), которые подлежат длительному хранению и могут занимать значительный объём. Далее приведён примерный расчёт размера хранимых данных для типового ВС СМЭВ без файлов вложения.

Запросы Запросов в секунду Данных в день Данных в месяц
До 50 тыс. в сутки 2 7,5Gb 220Gb
До 200 тыс. в сутки 4 15Gb 450Gb
До 1 млн в сутки 10 37Gb 1,1Tb
До 10 млн в сутки 100 370Gb 11Tb
Расчет занимаемого объёма

Для типового ВС СМЭВ полный цикл информационного взаимодействия состоит их трех шагов: отправка/получение запроса, получение/отправка ответа, отправка подтверждения. Каждый шаг состоит из двух XML-документов, содержащих цифровую подпись: XML-запроса и XML-ответа. Средний размер XML-файла в СМЭВ составляет 7,5 Kb. Таким образом, расчёт занимаемых данных выглядит следующим образом:
Размер = 6 × 7,5 × RPS × Срок Хранения
При 1 запросе в секунду и периоде хранения 1 день получается 6 × 7,5 × 1 × 86400 = 3,7Gb
Использование сжатия (на уровне «Агредатора» или СХД) позволяет уменьшить данный размер почти в 2 раза, при условии что в информационном взаимодействии отсутствуют файлы вложения.

Окружение и ПО

Для запуска платформы или её сервисов можно использовать современную ОС семейства Linux. Тем не менее есть минимальные требования, которые гарантируют стабильную работу и простоту запуска, поскольку они используются при разработке и тестировании платформы.

  • ОС: Debian 9.5 x64 или выше, Ubuntu 18.04 x64 или выше
  • наличие на машине доступа к docker.rnds.pro, harbor.rnds.pro, hub.docker.com по протоколу HTTPS на порт 443 для скачивания Docker образов сервисов. Если на подготавливаемом сервере нет доступа в интернет, образы можно получить у нас через архивацию
  • системная служба docker не ниже версии 20.10. Более ранние версии также поддерживаются, но требуют некоторого изменения файлов конфигурации docker-compose.yml
  • утилита docker-compose не ниже версии 1.25. Более ранние версии имеют команды и синтаксис, отличный от приведённого в документации, но также позволяют выполнять все необходимые действия по запуску и обслуживанию ПО

Информацию о том, как установить docker и docker-compose, а также описание эксплуатации и допустимых команд можно найти по ссылкам:

Безопасность

Требования к безопасности в существенной степени определяются окружением клиента и принятыми внутренними регламентами, уставными документами и иными нормативными и законодательными актами.

Платформа «Агредатор» спроектирована для работы в изолированной сети, исключающей несанкционированный доступ. Доступы от внешних систем (пользователей) к платформе должны явно настраиваться с учетом внутренней политики безопасности заказчика. Отсутствие несанкционированного доступа к компонентам системы извне является неотъемлемым требованием системы.

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

Сеть и требования к ней

Для продуктового развертывания мы рекомендуем строго ограничивать трафик и возможность подключения к определенному набору портов, специально выбранных для этих целей. Большинство сервисов и подсистем платформы не имеют прямого интерфейса взаимодействия и для общения с ними используются HTTP-шлюз или точка подключения AMQP. Конкретные порты и протоколы приведены в описании сервисов.

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

Хранение данных

Все компоненты платформы «Агредатор» не хранят данные локально и представляют из себя read-only контейнеры. Все данные сохраняются в строго определенных местах: RabbitMQ, PostgreSQL и Redis, которые в свою очередь не являются частью платформы и могут быть настроены и запущены силами специалистов заказчика согласно установленным нормам.

Кроме того, большинство сервисов платформы спроектированы так, чтоб во время работы не сохранять сами данные, с которыми они работают, а хранить лишь информацию о выполненной работе - какой запрос как именно был обработан. Таким образом, есть строго определённые сервисы и точно известные места (таблицы в СУБД) где данные хранятся непосредственно, что позволяет гибко настроить политику работы с данными, резервное копирование, архивирование и удаление.

Взаимодействие сервисов

Основным протоколом взаимодействия сервисов является AMQP. При этом используется TLS-соединение между всеми сервисами и брокером сообщений RabbitMQ. HTTP-взаимодействие используется при передаче файлов (например XML-логов взаимодействия СМЭВ) между некоторыми сервисами.

Всё взаимодействие с внешним миром, такое как работа операторов, взаимодействие по API с АБС или другими системами должно производиться строго с использованием защищенного соединения HTTPS. Управление доменными именами, сертификатами, TLS-терминация, балансировка входной нагрузки (использование прокси-серверов nginx и подобных) выполняется силами и средствами заказчика, исходя из требований внутренней инфраструктуры и политики ИБ.