Система Сфера состоит из Платформы и приложений. Платформа представляет собой набор инструментальных средств, с помощью которых реализуются все приложения Сфера. Платформа поддерживает концепцию low code, которая позволяет не программировать приложения, а собирать и настраивать их силами технологов. Эта концепция дает максимальную продуктивность, когда нужно быстро поддержать новые бизнес-требования или вывести новый продукт на рынок.

Система реализована в микросервисной архитектуре, где каждое функциональное приложение оформляется в виде отдельного микросервиса. К компонентам Платформы относятся службы и конструкторы. Службы работают во время выполнения (run time) и представляют собой библиотеки или сервисы, или включают в себя и то, и другое. Конструкторы – это инструменты, с которыми работает технолог. Они представляют собой приложения design time, предназначенные для сборки микросервисов и их настройки на различные условия применения.

В системе Сфера настраиваемыми являются практически все бизнес-объекты системы: организационная структура, правила кодирования, продукты, правила продажи, workflow и документооборот при выполнении операций, схемы принятия решений, структура плана счетов, бухгалтерские модели, определяющие проводки в зависимости от операций и условий их применения, и т.д.

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

В качестве основного инструментария для разработки микросервисов выбран фреймворк Quarkus на базе языка Java. В целях значительного сокращения размера и времени запуска микросервисов используется виртуальная машина GraalVM. Выбранная архитектура гарантирует практически неограниченное горизонтальное масштабирование системы. Зависимость потребления ресурсов от планируемой нагрузки близка к линейной.

В качестве основной СУБД для микросервисов в системе используется PostgreSQL. При этом сама система Сфера реализована так, что не зависит от используемой СУБД. Независимость достигается за счет представления данных на верхнем уровне в объектном виде в Словаре данных и автоматического преобразования для хранения с помощью объектно-реляционного маппера на базе Hibernate.

Бизнес логика в системе Сфера строится вокруг процессов. Для описания и моделирования процессов используется BPM движок Camunda и собственные компоненты, поддерживающие стандарты BPMN и UML. Настройка workflow, а также настройка и модификация широкого спектра функциональности системы не требует программирования.

Другие используемые технологии

Kubernetes – для автоматизации развертывания, масштабирования и управления контейнерами приложений

Apache Kafka – брокер обмена сообщениями между микросервисами

Redis – база данных в памяти для распределенного кэширования

Elasticsearch – для индексирования, поиска и анализа данных в реальном времени

Prometheus и Grafana – для мониторинга и визуализации работы микросервисов

MongoDB – нереляционная СУБД для сервисов специального назначения, в частности, для электронного архива и аналитики

H2 – СУБД, встроенная в Java, для отладки микросервисов

Apache Camel – интеграционная платформа

JS Reports – сервис для разработки и генерации отчетов

Keycloak – для аутентификации и контроля доступа в микросервисе Сервер безопасности

React – библиотека для разработки веб-приложения

React Native – библиотека для разработки мобильных приложений