Ядро обчислень
Головною метою веб-сервера є ефективна обробка запитів, що надходять від зовнішніх джерел взаємодії. У різних реалізаціях веб-серверів, розробники використовують внутрішню пам'ять сервера для зберігання даних, проте такий підхід може бути неефективним та призводити до перевантаження сервера.
Ефективна практика передбачає, що веб-сервер повинен обробляти лише запити, виконувати обчислення та виступати як посередник між джерелами взаємодії, бізнес-логікою та зберіганням даних у зовнішніх системах. Ядро обчислення побудоване з фокусом саме на таке застосування.
Роль веб-сервера не обмежується лише обробкою запитів. Він також повинен здійснювати моніторинг, мати можливість конфігураційного налаштування в робочому режимі, формувати специфікації, генерувати документацію та інші функції, що сприяють його ефективній роботі та взаємодії з іншими системами.
Архітектура
Ядро обчислень складається з сукупності технологій та інструментів реалізації веб-сервера, такі як логування, моніторинг, обробка запитів тощо. Окремим елементом ядра обчислень є модулі взаємодії з бізнес-схемою, які утворюють правила та структури заповнення бізнес-схеми. При запуску програми веб-сервера - ядро завантажує структуру бізнес-схеми та виконує обробку запитів у відповідність з версією бізнес-схеми. Така схема дозволяє використовувати ядро обчислень - виключно для обчислень, передаючи функції зберігання на сервери зберігання (сервер бази данних тощо), залишаючи за собою виконання обробників бізнес-логіки.
Використовуючи ООП та архітектурні підходи взаємодії між різними структурними блоками ядра обчислень - кодова база програми стійка до змін та надає прості рішення для масштабування самого ядра обчислень.
Ядро обчислень поділене на ряд рівнів абстракцій, кожне з яких необхідно для відділення структурних елементів один від одного, а також відділення більш системних модулів від більш предметних модулів:
- Перший рівень абстракції є зʼєднувачі, які поєднують частини ядра обчислень, які можуть бути розділені в фізичному плані та можуть мати між собою доступ лише через мережу.
- Другий рівень абстракції це перелік компонентів функціональності, будь-то сервіс логування, провайдер помилок та виключень тощо. Основною рушійною силою другого рівня є сервіси, які мають свій порядок запуску та зупинки.
- Третій рівень абстракції відповідає за комунікацію з бізнес-схемою. Він визначає як дані будуть завантажені та в якому форматі, а також визначає перелік методів, які будуть надані бізнес-схемі від ядра обчислень для можливостей побудови самої бізнес-схеми.
Окремою, допоміжною абстракцією третього рівня є сеттери setters
- функції помічники, які надаються ядром обчислень для
створення конкретних структур бізнес-схеми, будь-то опис сервісу, прикладної області чи конкретного документа. Вони
націлені на створення декларативного опису бізнес-схеми, а також для контролю за кодовою базою бізнес-схеми на рівні типів.
Конфігурація
Потреби веб-застосунків відрізняються, тому X-Fiber
має можливості широкого конфігураційного налаштування.
Більш того, в рамках різних застосунків - описуйте різні конфігураційні налаштування, змінюючи лише назву застосунку,
ядро обчислень здатне працювати в зовсім іншому режимі, з іншими базами даних, з можливостями роботи інших адаптерів тощо.
Гнучкість системи - одне із головних завдань, яке стоїть перед X-Fiber
.
Рівні абстракцій
Деталі реалізації, функціональне призначення конкретного рівня абстракції, його складових та використання дивись в відповідних розділах:
📄️ Зʼєднувачі
📚 Взаємодія між інфраструктурними елементами ядра
📄️ Функціональні компоненти
📚 Модулі функціональності ядра обчислень.
📄️ Взаємодія з бізнес-схемою
📚 Організація роботи та взаємодії з бізнес-схемою
Перспективи
В активній розробці ведеться створення інших надважливих функцій веб-сервера - створення моніторингу, використання
просунутих систем логування, таких як ELK, робота з хмарними сховищами даних, створення холодних та гарячих backup бази даних,
автоматична генерація документації чи специфікацій тощо. X-Fiber
робить виклик, в першу чергу перед собою, оскільки
для побудови якісного веб-сервера необхідно впровадити велику кількість системних рішень.