Аудит конфігурації ресурсів реєстру

Цей документ містить рекомендації та правила конфігурації реєстру для забезпечення стабільності, масштабованості та продуктивності.

Предмет аудиту — налаштування ресурсів реєстру.

1. RS-01. Ресурси для контейнерів

1.1. Загальні відомості

Опис

Щоб Kubernetes-кластер працював стабільно, необхідно правильно налаштувати ресурси для кожного контейнера — пам’ять і CPU. Це запобігатиме надмірному використанню ресурсів окремими контейнерами та забезпечить ефективний розподіл ресурсів між сервісами.

Рекомендації
  • Встановлюйте однакові значення Request і Limit для пам’яті контейнерів в OKD/Kubernetes. Це запобігає ситуаціям, коли контейнер споживає більше ресурсів, ніж передбачено, і негативно впливає на стабільність віртуальної машини.

  • Використовуйте НЕ більше 3 реплік одного сервісу. Особливо для Java-застосунків ефективнішим є вертикальне масштабування — збільшення ресурсів для однієї репліки, а не створення додаткових. Кожна додаткова репліка значно збільшує витрати пам’яті та знижує ефективність використання ресурсів.

Вплив
  • Якщо не встановити ліміти пам’яті для контейнерів, то при різкому зростанні споживання пам’яті контейнер може перевищити доступні ресурси. Це може знизити продуктивність або спричинити аварійне завершення роботи інших контейнерів на ноді.

  • Використання понад 3 реплік для сервісу із Java-застосунками призведе до суттєвого збільшення споживання пам’яті через значне використання ресурсів кожною реплікою. Це неефективно розподілить ресурси, що погіршить загальну продуктивність системи.

1.2. Предмет аудиту

Предмет аудиту — ресурси контейнерів, які працюють (running) у реєстрі. До аудиту включені лише контейнери, які споживають понад 100 МБ пам’яті. Не враховані такі, що споживають менше, а також ті, що стосуються одноразових пайплайнів (Job). Контейнери відсортовано за пріоритетом відповідно до фактичного обсягу споживання пам’яті, від найбільшого до найменшого.

Нижче наведено таблицю з переліком підсистем реєстру та відповідних їм сервісів.

Таблиця 1. Перелік сервісів реєстру
Підсистема реєстру Сервіси

Підсистема виконання бізнес-процесів

  • bpms

  • process-history-service-persistence-deployment

  • digital-document-service

  • form-schema-provider-deployment

  • process-history-service-api-deployment

  • user-process-management

  • user-task-management

  • form-submission-validation

Підсистема управління даними реєстру

  • registry-rest-api-deployment

  • registry-kafka-api-deployment

Підсистема управління нереляційними базами даних

  • rfr-redis-sentinel

Підсистема асинхронного обміну повідомленнями

  • kafka-cluster-kafka

  • kafka-cluster-entity-operator

  • kafka-cluster-zookeeper

Підсистема управління реляційними базами даних

  • operational-instance

  • analytical-instance

  • operational-pool

Підсистема формування витягів реєстру

  • excerpt-service-api-deployment

  • excerpt-worker-csv-deployment

  • excerpt-worker-deployment

  • excerpt-worker-docx-deployment

Підсистема зовнішніх інтеграцій

  • bp-webservice-gateway

  • platform-gateway-deployment

  • registry-rest-api-ext-deployment

  • registry-rest-api-public-deployment

  • registry-soap-api-deployment

Підсистема аналітичної звітності реєстру

  • redash-viewer

  • redash-viewer-adhocworker

  • redash-viewer-scheduler

Підсистема управління зовнішнім трафіком операційної зони реєстру

  • kong-kong

  • istio-ingressgateway

Підсистема журналювання подій аудиту

  • kafka-connect-cluster-connect

  • kafka-schema-registry

Підсистема цифрових підписів

  • digital-signature-ops

Підсистема нотифікацій користувачів

  • ddm-notification-service

Підсистема управління налаштуваннями користувачів

  • user-settings-service-api-deployment

Підсистема управління геоданими

  • geo-server

Підсистема управління секретами та шифруванням

  • hashicorp-vault

Підсистема моделювання регламенту реєстру

  • ddm-language-server

  • report-exporter-deployment

  • registry-regulation-management-deployment

  • gerrit

Підсистема обслуговування операційної зони реєстру

  • business-process-administration-portal

  • pgadmin-deployment

Підсистема розгортання регламенту реєстру

  • jenkins

  • nexus

Підсистема управління зовнішнім трафіком адміністративної зони реєстру

  • kong-admin-tools-kong-admin-tools

2. RS-02. Розмір і кількість віртуальних машин

2.1. Загальні відомості

Опис

Ефективне управління розміром і кількістю віртуальних машин є ключовим фактором для забезпечення стабільності та відмовостійкості OKD/Kubernetes-кластера. Ефективний розподіл ресурсів допомагає уникнути перевантаження окремих машин і полегшує подальше масштабування.

Рекомендації
  • Загальний обсяг пам’яті, виділеної на всі сервіси (з урахуванням Requests і Limits), не повинен перевищувати 80% від обсягу пам’яті віртуальних машин, на яких ці сервіси будуть запущені. Це дозволить уникнути ризиків вичерпання ресурсів та забезпечить резерв для стабільної роботи.

  • Щоб забезпечити відмовостійкість, додавайте ще одну додаткову віртуальну машину (+1) до загальної кількості необхідних машин. Це допоможе швидко відновити роботу у випадку збою однієї машини або при необхідності масштабування.

  • Надавайте пріоритет вертикальному масштабуванню (збільшенню ресурсів на одній машині), оскільки це ефективніше використовує ресурси та дозволяє уникнути додаткових витрат пам’яті й CPU, пов’язаних з розподілом навантаження між більшою кількістю віртуальних машин.

  • Високонавантажені сервіси, що активно споживають ресурси, рекомендується розміщувати на окремих віртуальних машинах. Це допоможе уникнути конфліктів з іншими сервісами та підвищить стабільність роботи.

2.2. Предмет аудиту

Предмет аудиту — віртуальні машини, виділені для реєстру, а також сервіси з високим навантаженням, що можуть потребувати окремих (ексклюзивних) нод.

Нижче наведено перелік сервісів, які є кандидатами на виділення окремих віртуальних машин.

Таблиця 2. Перелік сервісів-кандидатів на ексклюзивні віртуальні машини
Підсистема реєстру Сервіси

Підсистема управління реляційними базами даних

  • operational-instance

  • analytical-instance

Підсистема асинхронного обміну повідомленнями

  • kafka-cluster-kafka

Підсистема управління нереляційними базами даних

  • rfr-redis-sentinel

3. RS-03. Ресурси для Java-застосунків

3.1. Загальні відомості

Опис

Java-застосунки мають особливі вимоги до налаштування пам’яті та ресурсів через специфіку роботи JVM (Java Virtual Machine). Правильне налаштування ресурсів є критично необхідним для стабільної роботи та високої продуктивності Java-застосунків у контейнерах.

Рекомендації
  • Використовуйте вертикальне масштабування Java-застосунків (збільшення ресурсів одного інстансу), а не горизонтальне. Це дозволить ефективніше використовувати ресурси та уникнути додаткових витрат на управління декількома інстансами.

  • Завжди явно налаштовуйте розмір Java heap memory. Встановлюйте початковий (-Xms) і максимальний (-Xmx) розмір пам’яті. Якщо цього не зробити, JVM автоматично виділить на heap memory 25% від ресурсів віртуальної машини.

  • Встановлюйте однакові значення для початкового та максимального розмірів heap (-Xms = -Xmx). Це запобігає зміні розміру виділеної пам’яті під час роботи застосунку.

  • Обмежуйте кількість доступних процесорів за допомогою параметра -XX:ActiveProcessorCount. Це забезпечить ефективний контроль над ресурсами CPU.

  • Розмір heap memory рекомендовано розраховувати за формулою:

    Heap = min(RAM × 0.75, RAM – 0.5 GB)

    де RAM — загальний обсяг пам’яті, виділений контейнеру.

    Приклади розрахунку heap memory:

    • Для контейнера з 1 GB RAM: heap = 500 MB

    • Для контейнера з 4 GB RAM: heap = 3 GB

Вплив

Неправильно налаштований розмір heap memory може спричинити:

  • часті паузи для garbage collection;

  • помилки типу OutOfMemoryError;

  • нестабільну роботу застосунку;

  • неефективне використання пам’яті.

3.2. Предмет аудиту

Предмет аудиту — Java-застосунки, запущені у реєстрі. Застосунки відсортовані за пріоритетом залежно від фактичного споживання пам’яті (від найбільшого до найменшого).

Таблиця 3. Перелік Java-застосунків реєстру
Підсистема реєстру Java-застосунки

Підсистема виконання бізнес-процесів

  • bpms

  • process-history-service-persistence-deployment

  • digital-document-service

  • form-schema-provider-deployment

  • process-history-service-api-deployment

  • user-process-management

  • user-task-management

Підсистема управління даними реєстру

  • registry-rest-api-deployment

  • registry-kafka-api-deployment

Підсистема асинхронного обміну повідомленнями

  • kafka-cluster-kafka

  • kafka-cluster-entity-operator

  • kafka-cluster-zookeeper

Підсистема формування витягів реєстру

  • excerpt-service-api-deployment

  • excerpt-worker-csv-deployment

  • excerpt-worker-deployment

  • excerpt-worker-docx-deployment

Підсистема зовнішніх інтеграцій

  • bp-webservice-gateway

  • platform-gateway-deployment

  • registry-rest-api-ext-deployment

  • registry-rest-api-public-deployment

  • registry-soap-api-deployment

Підсистема журналювання подій аудиту

  • kafka-connect-cluster-connect

  • kafka-schema-registry

Підсистема цифрових підписів

  • digital-signature-ops

Підсистема нотифікацій користувачів

  • ddm-notification-service

Підсистема управління налаштуваннями користувачів

  • user-settings-service-api-deployment

Підсистема управління геоданими

  • geo-server

Підсистема моделювання регламенту реєстру

  • ddm-language-server

  • report-exporter-deployment

  • registry-regulation-management-deployment

  • gerrit

Підсистема обслуговування операційної зони реєстру

  • business-process-administration-portal

Підсистема розгортання регламенту реєстру

  • jenkins

  • nexus

4. RS-04. База даних

4.1. Загальні відомості

Опис

Правильне налаштування бази даних є критично важливим для стабільної роботи реєстру. Це передбачає оптимізацію підключень, ресурсів, сховища та конфігурації відповідно до потреб реєстру. Особливу увагу слід приділити ефективному керуванню пулом підключень (connection pool) і налаштуванням PostgreSQL для досягнення максимальної продуктивності.

Рекомендації
  • Загальна кількість підключень клієнтів (connection pool) має бути меншою за максимальну кількість підключень, дозволену базою даних. Рекомендований буфер між цими значеннями — 10%. Це допоможе уникнути ситуацій, коли підключення вичерпуються, що може призвести до відмови в обслуговуванні.

  • За умови очікуваного високого навантаження базу даних слід розгорнути на окремій віртуальній машині. Це забезпечить ізоляцію ресурсів та покращить продуктивність.

  • Розмір сховища бази даних (storage) необхідно визначати відповідно до очікуваного обсягу даних і прогнозованих темпів їх зростання.

  • Розраховуючи розмір connection pool, враховуйте:

    • кількість одночасних користувачів;

    • характер запитів;

    • тривалість транзакцій;

    • пікові навантаження.

  • Налаштуйте параметри PostgreSQL залежно від виділених ресурсів:

    • максимальний розмір WAL (Write-Ahead Logging);

    • обсяг shared buffers;

    • обсяг effective cache size.

  • Для підвищення продуктивності операцій вводу-виводу (I/O) рекомендовано використовувати нативні (thin) диски.

4.2. Предмет аудиту

Предмет аудиту — конфігурація бази даних реєстру та її клієнтів.

Нижче наведено перелік клієнтів, які використовують базу даних.

Таблиця 4. Перелік клієнтів бази даних
Підсистема реєстру Клієнти бази даних

Підсистема виконання бізнес-процесів

  • bpms

  • process-history-service-persistence-deployment

  • process-history-service-api-deployment

Підсистема управління даними реєстру

  • registry-rest-api-deployment

  • registry-kafka-api-deployment

Підсистема формування витягів реєстру

  • excerpt-service-api-deployment

  • excerpt-worker-csv-deployment

  • excerpt-worker-deployment

  • excerpt-worker-docx-deployment

Підсистема зовнішніх інтеграцій

  • registry-rest-api-ext-deployment

  • registry-rest-api-public-deployment

Підсистема аналітичної звітності реєстру

  • redash-viewer

  • redash-viewer-adhocworker

  • redash-viewer-scheduler

Підсистема журналювання подій аудиту

  • kafka-connect-cluster-connect

Підсистема нотифікацій користувачів

  • ddm-notification-service

Підсистема управління налаштуваннями користувачів

  • user-settings-service-api-deployment

Підсистема управління геоданими

  • geo-server

Підсистема моделювання регламенту реєстру

  • registry-regulation-management-deployment

Підсистема обслуговування операційної зони реєстру

  • business-process-administration-portal

  • pgadmin-deployment

5. RS-05. Service Mesh (Istio)

5.1. Загальні відомості

  • Встановлюйте однакові значення Request і Limit для пам’яті контейнерів Istio sidecar.

  • Налаштовуйте ресурси для Istio sidecar відповідно до профілю навантаження.

5.2. Предмет аудиту

Предмет аудиту — сервіси, які входять до складу Istio Service Mesh. Нижче наведено перелік цих сервісів.

Таблиця 5. Сервіси, що використовують Istio Service Mesh
Підсистема реєстру Сервіси

Підсистема виконання бізнес-процесів

  • bpms

  • process-history-service-persistence-deployment

  • digital-document-service

  • form-schema-provider-deployment

  • process-history-service-api-deployment

  • user-process-management

  • user-task-management

  • form-submission-validation

Підсистема управління даними реєстру

  • registry-rest-api-deployment

  • registry-kafka-api-deployment

Підсистема управління нереляційними базами даних

  • rfr-redis-sentinel

Підсистема формування витягів реєстру

  • excerpt-service-api-deployment

  • excerpt-worker-csv-deployment

  • excerpt-worker-deployment

  • excerpt-worker-docx-deployment

Підсистема зовнішніх інтеграцій

  • bp-webservice-gateway

  • platform-gateway-deployment

  • registry-rest-api-ext-deployment

  • registry-rest-api-public-deployment

  • registry-soap-api-deployment

Підсистема управління зовнішнім трафіком операційної зони реєстру

  • kong-kong

  • istio-ingressgateway

Підсистема цифрових підписів

  • digital-signature-ops

Підсистема нотифікацій користувачів

  • ddm-notification-service

Підсистема управління налаштуваннями користувачів

  • user-settings-service-api-deployment

Підсистема управління геоданими

  • geo-server

Підсистема моделювання регламенту реєстру

  • ddm-language-server

  • report-exporter-deployment

  • registry-regulation-management-deployment

Підсистема управління зовнішнім трафіком адміністративної зони реєстру

  • kong-admin-tools-kong-admin-tools

6. RS-06. Kafka

6.1. Загальні відомості

  • Використовуйте щонайменше 3 брокери Kafka у кластері.

  • Розраховуйте розмір сховища (storage) Kafka з огляду на специфічні потреби реєстру.

  • Для topic-ів, що містять історичні події (bpm-history-process, bpm-history-task), налаштовуйте принаймні 15 партицій.

  • Фактор паралелізму сервісу обробки історичних подій (process-history-service-persistence) повинен бути не менше ніж 15. Цей параметр визначається кількістю реплік сервісу та налаштуванням _data-platform.kafka.consumer.concurrency (Config Map).

6.2. Предмет аудиту

Предмет аудиту — конфігурація Kafka та Сервіс фіксації історичних подій бізнес-процесів.