База даних публічних реактивних функціональних сигналів - Д. Вітковський; С. Теленик (Adaptivni Sistemi Avtomatičnogo Upravlinnâ, 2024)
Об’єктом дослідження є процеси комунікації між функціональними компонентами програмного забезпечення інформаційних систем. Мета полягає у підвищенні ефективності комунікації між компонентами таких систем та коректної синхронізації їх станів. Сформульована проблема підвищення ефективності комунікації між функціональними компонентами складних систем з мікросервісною архітектурою, та коректної синхронізації їх станів. У процесі аналізу існуючих підходів до вирішення сформульованої вище проблеми встановлено, що найпростішим способом комунікації між сервісами є REST API, але він не дозволяє зробити мікросервіси достатньо ізольованими, не гарантує доставку, отримання й зберігання повідомлень про транзакцію/зміну стану. Частину цих вимог задовольняють система повідомлень, такі як StormMQ, RabbitMQ, Apache Kafka та інші. Але вони не забезпечують зберігання даних, що не є повідомленнями. СКБД, наприклад MongoDB, надають певну гарантію доставки за рахунок «потоків змін» та журналу операцій, але вони дуже чутливі до налаштувань журналу. Обґрунтовано доцільність вирішення проблеми шляхом розповсюдження оновлень за допомогою стійких реактивних значень (сигналів). Запропонований підхід до вирішення проблеми на основі бази даних спеціальної структури та клієнтської бібліотеки-компаньйона, що поєднують у собі підхід до архітектури, керованої подіями, та функціональні реактивні сигнали. База даних публічних сигналів автоматично сповіщає підписників про зміни у значеннях та їх дочірніх вузлах. Запропоновано архітектуру рішення і концепцію його реалізації, варіант двійкового представлення шляху до вузлів у базі даних, описано алгоритми поведінки системи керування базами даних та клієнтських бібліотек стосовно публікації та оновлення даних у базі даних. Розроблено частковий прототип системи керування базами даних та бібліотеки для фреймворку SolidJS. Щоб розширити сценарії використання та варіанти міжсервісної комунікації, урізноманітнити поведінку застосунків-клієнтів, планується: розробити спеціальний двосторонній протокол зв’язку, до динамічної типізації даних додати статичну, розширити вибір примітивних типів і уможливити зберігання похідних сигналів та сигналів-тригерів, розробити інтерпретовану мову програмування, яка б дозволила виконувати комбінування сигналів у похідні. Для розподілених систем необхідно також реалізувати стійкі черги повідомлень для підписників, аби вони не втрачали послідовність змін у разі відмови клієнта або системи керування базами даних.