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

🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію.

1. Загальний опис

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

2. Функції підсистеми

  • Довготривале зберігання схем UI-форм бізнес-процесів

  • Короткострокове зберігання проміжних даних бізнес-процесів

  • Короткострокове зберігання JWT-токенів аутентифікованих користувачів

3. Технічний дизайн підсистеми

redis

Підсистема управління нереляційними базами даних використовує Redis в якості key-value сховища, а відмовостійкість забезпечується за допомогою механізму Redis Sentinel.

Для автоматизації розгортання та управління кластером Redis з Redis Sentinel використовується Kubernetes-оператор Redis Operator by Spotahome.

Redis Sentinel є розподіленою системою, яка складається з декількох екземплярів Sentinel процесів, які взаємодіють один з одним.

Redis Sentinel має наступні особливості:

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

  • Sentinel сам по собі є відмовостійкою системою, яка може виконувати свої функції навіть у разі, якщо частина Sentinel екземплярів не працюють.

Redis Sentinel надає наступні можливості:

  • Моніторинг - Sentinel слідкує за тим, щоб екземпляри Redis-мастера та реплік працювали коректно

  • Алертинг - Sentinel надає можливості відправки повідомлень адміністратору у разі ідентифікації збоїв екземплярів Redis

  • Автоматичне відновлення - У разі, якщо екземпляр Redis-мастер починає працювати некоректно, Sentinel ініціює процес визначення нового Redis-мастер екземпляру та реконфігурації інших Redis-реплік на взаємодію з новим мастером.

Детальну інформацію можно знайти в офіційній технічній документації Redis Sentinel.

4. Складові підсистеми

Назва компоненти Представлення в реєстрі Походження Репозиторій Призначення

Сервіс Sentinel

rfs-redis-sentinel

3rd-party

Керування високою доступністю та автоматичним перемиканням між серверами Redis

Key-value сховище Redis

rfr-redis-sentinel

3rd-party

Збереження даних у пам’яті у форматі ключ-значення

Kubernetes оператор для Redis

redis-operator

3rd-party

Розгортання та конфігурація ресурсів Redis Sentinel

5. Класифікація даних, що зберігаються у Redis

Простір імен Підсистема власник Опис

sessions

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

Користувацькі JWT-токени

sessions_admin_tools

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

Користувацькі JWT-токени

bpm-form-submissions

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

Дані, отримані через UI-форми

bpm-message-payloads

Дані, які були породжені у результаті міжпроцесної взаємодії

bpm-form-schemas

Схеми UI-форм

bpm-form-scripts

Зовнішні скрипти для UI-форм

channel-verification-codes

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

OTP-коди для підтвердження каналу зв’язку з користувачем

6. Технологічний стек

При проектуванні та розробці підсистеми, були використані наступні технології:

7. Атрибути якості підсистеми

7.1. Scalability

Підсистема управління нереляційними базами даних підтримує вертикальне масштабування у разі збільшення навантаження шляхом виділення додаткових ресурсів для подів підсистеми.

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

7.2. Security

Підсистема управління нереляційними базами даних забезпечує захист каналу інформаційної взаємодії між сервісами підсистеми за допомогою SSL/TLS шифрування трафіку.

Взаємодія з сервісами підсистеми потребує аутентифікації клієнтів.

Дані зберігаються у Підсистемі розподіленого зберігання файлів та використовують її можливості забезпечення безпеки.

7.3. Availability

Підсистема управління нереляційними базами даних сконфігурована для роботи у режимі високої доступності за допомогою Redis Sentinel.

7.4. Observability

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

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

7.5. Reliability

Надійність Підсистеми управління нереляційними базами даних забезпечується підсистемою резервного копіювання та відновлення яка включає у себе резервне копіювання файлових систем сховища Redis.