Оптимизация бизнес-критичных процессов в РУСАГРО
В конце 2017 года к нам обратился ИТ-директор компании Русагро с вопросом: можем ли мы ускорить выполнение процедуры «Закрытие месяца» в 2 раза? Заказчика не устраивало, что процедура выполняется по 8 часов и на период выполнения процедуры работа пользователей блокирована. Задача осложнялась тем, что результат нужен был к первым рабочим дням 2018 года, а до конца года оставалась неделя.
Предварительный анализ показал, что каких-либо серьезных проблем в системе нет, всё работает относительно оптимально и, пытаясь исправить неплохо работающий код, мы никак не добьемся ускорения в 2 раза. Причиной столь долгого выполнения процедуры было огромное количество обрабатываемых документов. Для решения задачи оставался один путь: выполнять проведение документов не последовательно один за одним, а параллельно в несколько потоков. Но делать это «правильно», т.к. зависимые друг от друга документы должны проводиться строго последовательно, а независимые могут проводиться параллельно. К тому же, наши разработчики из группы поддержки Русагро перед этим проделали работу по выводу системы из режима совместимости со старыми версиями платформы, что избавило нас от возможных проблем с блокировками.
Алгоритм поиска зависимостей несколько раз переписывался для достижения оптимального результата. В связи со сменой алгоритма бизнес-критичного процесса, был необходим хороший тест, в котором нам помогли консультанты ФТО группы поддержки Русагро.
Порядок действий для пользователей не изменился. Необходимо только перед началом работы указать использование нового метода, и дальнейшая работа происходит в автоматическом режиме. Возможность проводить документы классическим методом сохранилась.
А результат первого закрытия в январе был следующий: 1.5 часа на выполнение обработки против стандартных 7-8. Прирост производительности более чем в 4 раза! Оборудование при выполнении процедуры задействовалось максимально, тогда как в типовой обработке участвует только 1 ядро процессора.