Архитектура платформы
Архитектура платформы является микросервисной, с возможностью вынесения расчетчиков на дополнительный уровень с целью горизонтального масштабирования. При этом обработка всех запросов пользователей идет через координатор (основное приложение).
При необходимости можно нарастить количество координаторов для горизонтального масштабирования. Для этого необходимо расширять инфраструктуру с помощью дополнительных инструментов, позволяющих обеспечить автоматическую балансировку и отказоустойчивость.
Для работы нескольких инстансов координатора или для общения между расчетчиками необходима общая разделяемая область памяти. Также Redis обеспечивает хранение in-memory объектов и их кэша для быстрого доступа при расчетах.
Внешние по отношению к координатору расчетчики проводят расчеты задач для нескольких пользователей. Работа с ними организована через очередь сообщений, которая обеспечивает отправку заявок на расчет из координатора, когда приложению необходимо его произвести, а также реализует сам механизм очереди в случае, если все расчетчики заняты.
Справочники обслуживаются в отдельном сервисе, который отвечает за полный цикл их существования.
Изолированное окружение позволяет безопасно выполнять пользовательские скрипты на языке Python. При этом возможен запуск и на воркерах, которые обслуживают расчеты.
