Спецпроекты

Обзор скоро выйдет
Как решить проблему производительности на low-code

Андрей Архипов

генеральный директор «Гриндата»

На пути к достижению импортонезависимости и полному переходу на отечественное ПО бизнес стремится получить полноценную поддержку своих процессов и при этом сократить затраты на внедрение и поддержку ИТ-систем. За low-code-инструментами закрепился стереотип, что подобные платформы обеспечивают решение достаточно простых задач, а созданные с их помощью приложения не выдерживают высокой нагрузки. Однако существуют low-code-решения, позволяющие реализовывать проекты, требующие сложных вычислений. О том, как работает с расчетами low-code-платформа GreenData, рассказывает генеральный директор «Гриндата» Андрей Архипов.

Большой объем в ограниченные сроки

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

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

Используя последовательную схему расчета, вряд ли удастся сделать это быстро. В связи с этим возникает необходимость в реализации возможности запуска параллельных расчетов — опроса источников и обработки полученных данных — независимо друг от друга. Либо другой вариант — разбиение исходной выборки объектов на пакеты и параллельное выполнение расчетов каждого пакета.

Все это приводит к необходимости реализации многопоточности. Многопоточность — это свойство приложения, которое позволяет распределить на несколько потоков процесс системы.

Инструменты решения задач многопоточности с платформой GreenData

Платформа предлагает два инструмента для организации параллельных вычислений:

  1. Поддержка многопоточности в рамках одного сервера приложений GreenData;
  2. Организация параллельных расчетов на разных нодах кластера, на котором развернута GreenData.

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

Поддержка многопоточности в рамках одного сервера приложений GreenData

Рассмотрим первый подход. Для реализации выполнения кода в отдельных потоках необходимо в коде алгоритма использовать следующие функции:

  • startThread — функция, которая запускает поток, выполняя указанный в нем код алгоритма;
  • waitAllThreads — функция, которая дожидается завершения выполнения всех потоков, запущенных в данном алгоритме.
low01.jpg

Все потоки запускаются сразу, асинхронно.

Пример использования многопоточности

Рассмотрим пример, который производит расчет риск-взвешенных активов по розничному портфелю размером в 1,5 млн кредитных требований.

Рекомендуется планировать число потоков по формуле «Два потока на одно ядро процессора»: количество потоков = количество ядер * 2.

Таким образом, если у нас, например, используется 6-ядерный процессор, то количество потоков будет равно 12.

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

Ниже представлен фрагмент кода алгоритма, в котором выделены:

  • функция запуска потока, в фигурных скобках которой содержится код алгоритма текущего потока;
  • функция ожидания завершения всех потоков.

На сам расчет и сохранение полученных данных потребовалось 3 минуты 20 секунд. Было проанализировано и обновлено 1,5 млн кредитных требований.

Без параллельных вычислений алгоритм работал бы порядка 30 минут.

Организация параллельных расчетов на разных нодах кластера, на котором развернута GreenData

Рассмотрим и второй подход, связанный с распределением нагрузки по разным нодам кластера.

Ноды (серверы приложений, которые участвуют в расчетах), как правило, несут большую нагрузку. Важно, чтобы параллельный расчет не распространился на пользовательские ноды, которые обслуживают бизнес-операции клиентов. Для разрешения данной ситуации в конфигурации ноды предусмотрен специальный параметр greendata-core: features: algorithm-distributed-execution. Нагрузка будет делиться только между нодами, для которых данный параметр установлен в true.

Для пользователей платформы GreenData использование многонодовых расчетов максимально упрощено. Для этого в редакторе алгоритмов необходимо вызвать метод algOnCluster. В качестве аргументов передается алгоритм, который будет выполняться на разных нодах, коллекция объектов, по которым он будет запускаться и, опционально, значения параметров, если вызываемый алгоритм параметризированный.

Платформа сама равномерно распределит вызов алгоритма по доступным нодам по переданной коллекции объектов. На рисунке ниже представлена схема расчета кредитного рейтинга страны. На вход подается список стран и методика расчета рейтинга в виде алгоритма.

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

Соответствующий код представлен ниже:

low06.jpg

В заключение

Для «самых тяжелых» случаев следует использовать сочетание двух подходов — многопоточности и распределения расчетов по разным нодам. Это позволит достичь максимального быстродействия и выполнить даже самую ресурсоемкую задачу за приемлемое время.

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

О компании

Компания GreenData обладает высоким уровнем экспертизы и более чем 8-летним опытом в области реализации решений с помощью low-code. Среди клиентов и партнеров GreenData — крупнейшие финансовые организации, интеграторы и дистрибьюторы, доверяющие GreenData сложные задачи цифровизации. Платформа GreenData позволяет создавать собственные решения для реализации самых разных бизнес-критических задач любых подразделений компании. Токен: Pb3XmBtzt3XiZMaB3v4dW8ztc34GauWuUYAmFqGРекламодатель: ООО "Гриндата"ИНН/ОГРН: 5906855741/1145958041900Сайт: https://greendata.store/

Интервью обзора