Перейти до основного вмісту

Методологія

інформація

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

Методологія X-Fiber націлена надати інструмент побудови бізнес-логіки у єдиному стилі програмування кодової бази незалежно від середовища його виконання, таким чином приховуючи всі вище перелічені складності.

інформація

Методологія базується на принципах Clean Architecture, Domain Driven Design, Event Driven Architecture, Service-oriented architecture поверх який реалізовує своє комплексне рішення.

Шари абстракцій

X-Fiber розділяє кодову базу на три основні шари: бізнес-схема, ядро оточення та інфраструктурні рішення:

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

clean-architecture

Оточення

Кодова база серверного чи браузерного оточення складається з трьох рівнів:

  1. Ядро оточення - системна область, яка надається X-Fiber та реалізовує функціональність опису бізнес-схеми, та описує роботу відповідного оточення.
  2. Інтерфейс взаємодії - системна область, яка входить в ядро оточення та описує набір правил та структур описання бізнес-схеми, а також завантажувачів цієї бізнес-схеми.
  3. Бізнес-схема - предметна область, яка описує кінцевий веб-застосунок.
інформація

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

Сервісна орієнтованість

Основною структурною одиницею бізнес-схеми є сервіс. Кожний сервіс описує ряд тісно звʼязаних між собою бізнес-процесів. Ряд сервісів складають системи, такі як ERP (Enterprise resource planing), CRM (Customer Relationship Management) тощо.

soa-arch.svg

інформація

X-Fiber надає гнучкий спосіб групування та розгортання сервісів. Наприклад в серверному оточенні, в залежності від навантаження, група сервісів можуть бути обʼєднані та запущені на одному ядрі обчислень, а високонавантажений сервіс може бути лише один на іншому ядрі обчислень, що інфраструктурно дозволить горизонтально масштабувати такий сервіс.

Предметні області

X-Fiber уніфіковує побудови сервісів за рахунок використання предметних областей. Кожний сервіс складається з групи предметних областей - бізнес-сутностей, такі як "Користувачі", "Транспорт" тощо. Взаємодія між сутностями утворюють бізнес-процеси.

примітка

X-Fiber вводить класифікацію предметних областей та описує перелік документів, якими область описується.

ddd-arch.svg

інформація

Взаємодія між предметними областями відбувається завдяки агентам бізнес-схеми schemaAgent - модуль ядра оточення, який надає доступ до:

  • Серверне оточення - до всієї структури сервісу та створює можливості комунікації між різними предметними областями цього ж сервісу, для створення взаємодії між сервісами використовується підхід Event Driven Architecture з включенням роботи менеджерів черг.
  • Браузерне оточення - до всієї структури зареєстрованих сервісів в бізнес-схемі, та надає можливості комунікації між сервісами та їх предметними областями.
warning

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

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

Подієва модель

X-Fiber вводить подію модель, який основний підхід до взаємодії між сервісами ядра серверного оточення. Замість традиційного синхронного виклику методів чи отримання даних, компоненти взаємодіють один з одним, сповіщаючи про виникнення подій, а замість зберігання стану обʼєктів взаємодії - фіксуватись на їх змінах.

eda-arch.svg

Подія модель складається з:

  • Події Events - виникають при виникненні певних станів або дій у системі. Події можуть бути сповіщеннями про зміни даних, запитами на виконання операцій або будь-якими іншими релевантними подіями.
  • Постачальники Producers: Компоненти, які генерують та поширюють події, називаються постачальниками. Вони відповідають за ініціювання та відправку подій у систему.
  • Споживачі Consumers: Компоненти, які реагують на події та виконують певні дії відповідно до них, називаються споживачами. Вони підписуються на отримання певних типів подій та реагують на них.
  • Посередники Brokers: Для ефективного розподілу та керування потоком подій часто використовуються посередники. Ці системи, такі як Apache Kafka або RabbitMQ, допомагають забезпечити надійну доставку подій до споживачів, забезпечуючи масштабованість та відмовостійкість

Декомпозиваний графічний інтерфейс

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

Декомпозиція заключається в поділі графічного інтерфейсу на складові:

  • UI компоненти - X-Fiber вводить поняття "Розповідь", яка описує простір імен UI компонентів з їх реалізацією.
  • Бізнес-логіки - описується окремо від графічних інтерфейсів, та складається з графічних представлень бізнес-сутностей.
  • Складові конкретного графічного інтерфейсу - шаблонів, статичних матеріалів, типу фреймворку опису графічного відображення та потреб в візуалізації.