Архитектура платформы

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

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

Для работы нескольких инстансов координатора или для общения между расчетчиками необходима общая разделяемая область памяти. Также Redis обеспечивает хранение in-memory объектов и их кэша для быстрого доступа при расчетах.

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

Справочники обслуживаются в отдельном сервисе, который отвечает за полный цикл их существования.

Изолированное окружение позволяет безопасно выполнять пользовательские скрипты на языке Python. При этом возможен запуск и на воркерах, которые обслуживают расчеты.