Версия:

Основное

Ядро представляет собой комплекс решений необходимых для реализации различных задач для бизнеса и не только. Его задача избавить команду разработки от необходимости собирать множество различных решений и приемов для построения web приложения со всеми обязательными его частями, начиная от соединения фронта с бэком и авторизацией и продолжая продуманной ORM, умной системой кэширования, профайлом для каждой сущности, гибкой системой доступов, логированием, множеством готовых решений для различных специфических, но не редких, задач, таких как например, запросов выпадающих списков для редакторов полей или фильтров или построение данных для отрисовки дерева для иерархических данных. Со стороны фронта также имеется разработанный каркас, позволяющий с нуля подгружать меню, работать с таблицами (на основе профайлов для сущностей получаемых с бэка), формами (подвижными, масштабируемыми и сворачивающимися), встраиваемыми в формы или модальные окна (куда угодно) фреймами (не путать с iframe), также позволяющими выводить поля сущностей в соответствии с профайлами с сервера и/или реализовывать свою кастомную верстку и логику, а при желании можно встроить и отдельные например реакт приложения или компоненты и соединить их с бэком ядра.

Кроме реализации базовых потребностей web приложений, ядро содержит реализации частых бизнес процессов, таких как покупки, для которых реализованы взаимосвязанные и хорошо работающие цепочки сущностей от продуктов (товары/услуги), заказов, создаваемых для них платежей, с возможностью оплаты частями и различными методами, и отдельной сущностью транзакций платежных систем, для реализации универсального взаимодействия платежей с внешними платежными системами, до системы внутренних счетов, с пополнениями, снятиями и переводами, с архитектурой обеспечивающей целостность денежных данных. Или, например, система сбора событий (например успешных покупок) и назначения для них определенных действий, что позволяет разносить логику различных последовательных действий на независимые процессы (и при желании выносить в отдельный инстанс).

Ядро построено как монолит, но все общие данные, а именно кэш и блокировки, написаны так, что в любой момент могут быть вынесены во внешнее быстрое хранилище, например Redis, что позволит запускать несколько инстансов и разделять нагрузку с помощью просто увеличения количество ресурсов либо с разделением логики на различные машины.