Разделы

Бизнес Цифровизация Бизнес-приложения

Как заставить ERP-систему работать?

Несмотря на кризисный и посткризисный спад на рынке ИТ тема внедрения, поддержки и дальнейшего развития ERP-системы на предприятии сегодня очень актуальна. По мере совершенствования продукт обычно становится все более "тяжелым", "тормозит", раздражает пользователей, "съедает" много ресурсов. Для того чтобы решить эти проблемы, надо разобраться, за счет выполнения каких бизнес-процессов замедляется работа, и как можно обеспечить ее быстродействие.

Традиционно задачи по увеличению быстродействия информационных систем специалисты, занимающиеся этой проблематикой, делят на три обособленные группы - оборудование, СУБД и код приложения. Причем оптимизация кода наиболее интересное и перспективное направление приложения творчества ИТ-персонала. Чаще всего оборудование уже выбрано, роли серверов максимально фрагментированы и разнесены, и любая новая закупка более мощного сервера ставит нелегкий вопрос: "А куда девать старый?". Особенно трагично выглядит лицо ИТ-специалиста, наблюдающего индикаторы утилизации CPU и HDD на уровне 10% от номинала после удачно проведенной комбинации по "отжиманию" немалых инвестиций у руководства. Возможности по прокачке СУБД за счет оптимизации индексов, регулирования параллелизма и отключения журнала транзакций также быстро заканчиваются. После этого вдруг с тоской вспоминается эпоха, когда все "летало" на более слабом железе и закрадывается предательская мысль: а так ли хороши хваленые ERP-системы?

Обеспечить быстродействие

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


Ни один бухгалтер не получает удовольствия от ночных посиделок за компьютером, пока ERP-система готовит документ по закрытию месяца

Далее следует классифицировать пользователей по информационным ресурсам, в которых они нуждаются и по степени свежести (оперативности) этих ресурсов. Менеджерам по продажам нужны оперативные остатки товаров, сроки поставок отсутствующей продукции и взаиморасчеты с покупателями, причем платежи они должны видеть сразу после разнесения бухгалтером банковских выписок. Бухгалтерам важно успеть рассчитать и перечислить налоги к определенной дате, сдать регламентированную отчетность, в режиме реального времени они отслеживают только банк и кассу. Расчетчику надо до 5 числа каждого месяца рассчитать зарплату и подать руководству на подпись платежную ведомость, а в бухгалтерию передать информацию по затратам и налогам.

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

Оптимизировать код

Существует несколько технологических приемов, реализовав которые в ERP-системе, можно значительно облегчить жизнь как ИТ-отдела компании, так и пользователей.

Государство и бизнес делят ИИ на зоны ответственности
Импортонезависимость

Во-первых, это механизм управляемых блокировок. Он позволяет увеличить параллельность проведения однотипных документов за счет того, что при операции типа "запись" блокируется не вся таблица, а только указанный диапазон строк. Это позволяет одномоментно проводить два документа, если в них нет одинаковых товаров. Причем механизм управляемых блокировок работает независимо от СУБД, т.к. срабатывает на уровне сервера приложений.

Также необходимо реализовать концепцию "тонкий клиент". Это решение применяется сегодня во многих ИСУП, например в "1С: Предприятие", SAP NetWeaver, Oracle e-Business Suite и пр. Таким образом, скорость реакции системы перестает зависеть от способностей "железа" компьютеров конечных пользователей.

Также необходимо, чтобы в системе был реализован механизм удаления или откладывания "лишних" регистров при проведении документов. Вообще "лишний" функционал в типовой конфигурации появляется от того, что она является максимально универсальным тиражным продуктом. За универсальность приходится расплачиваться быстродействием, т.к. не весь заложенный функционал может быть востребован данным конкретным бизнесом. Или функционал может быть востребован редко, в таких случаях движение некоторых регистров можно перенести на потом или вообще отключить. Тему невостребованного функционала можно продолжить. Например, существуют сервисные фоновые задачи, которыми пользуются редко или никогда, например пересчет индексов полнотекстового поиска. Его отключение дает существенный выигрыш при проведении "тяжелых" документов, таких как "закрытие отчетного периода".

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

Валерий Федоров, Владимир Кудряшов