Оптимизация биллинговой системы для компании из сферы энергетики
Выполнили оптимизацию биллинговой системы (программный комплекс для учета услуг, тарификации и обработки платежей). Повысили эффективность работы главного расчетного модуля для обслуживания юридических лиц. Благодаря новой системе начислений платежей нагрузка на базу данных уменьшилась на 62%. Также мы исключили ручные сверки и объединили разрозненные интерфейсы в единое рабочее пространство.
Клиент
Российская компания, работающая в сфере комплексной автоматизации учета и контроля энергоресурсов.
Задача
Для бизнеса:
-
сократить ручной труд сотрудников отдела расчетов за счет автоматизации процессов сверки и подготовки документов;
-
минимизировать временные затраты на закрытие отчетных периодов, чтобы повысить качества управленческого учета;
-
минимизировать ошибки в финансовых расчетах с юридическими лицами, повысив точность и прозрачность начислений;
-
снизить затраты на IT-инфраструктуру за счет уменьшения нагрузки на серверное оборудование и СУБД.
Технические задачи:
-
уменьшить нагрузку на базы данных при массовых пересчетах;
-
объединить разрозненные функциональные модули в единый удобный интерфейс для пользователей;
-
разработать механизм автоматической сверки выгрузок показаний, полностью исключив ручные проверки.
-
найти технически обоснованный и экономически эффективный баланс между потребностями бизнеса и возможностями текущей архитектуры системы.
Решение
Обоснование выбранного подхода
Сформулировали основную причину избыточной нагрузки на СУБД – массовый пересчет данных даже при незначительных изменениях. Проведенный анализ показал, что на процедуру перерасчета приходилось более 60% от общего объема вычислительной мощности. Приняли решение выполнить переход на событийную модель пересчета, при которой система обрабатывает только записи, которых коснулись изменения.
Изучение данных показало, что ежедневно обновляется 20% от всего объема информации. При этом система обрабатывает 100% записей. Сосредоточив фокус на оптимизации этого процесса, нам удалось значительно снизить нагрузку на СУБД и ускорить работу без замены ядра биллинговой системы. Такой подход оказался наиболее быстрым и экономически оправданным.
Этапы и инструменты
1. Анализ работы расчетной системы и СУБД
Выявлены операции, отнимающие больше всего ресурсов, влияющие на задержки и участки кода, нуждающиеся в доработке.
2. Проектирование логики работы обновлений системы.
Внедрили механизм событийного перерасчета, отслеживания изменений и запуска расчета только при изменении данных.
3. Разработка и рефакторинг:
-
внедрили механизм выборочного пересчета;
-
объединили разрозненные модули для формирования документов в единый интерфейс
-
создали инструмент для автоматического сравнения входящих выгрузок показаний с данными в системе.
4. Тестирование:
-
проверка точности расчетов, проведение тест-кейсов;
-
нагрузочные тесты, которые подтвердили снижение нагрузки на БД.
5. Поэтапный ввод в промышленную эксплуатацию
Результат
-
На 62% снижена нагрузка на расчетное ядро и СУБД. Подтверждена основная гипотеза проекта
-
Сотрудники избавлены от рутинных проверок. Система автоматически сверяет выгрузки и сообщает о расхождениях
-
Изменения интерфейса позволяют формировать документы в одном окне, что сокращает время трудозатрат и исключает ошибки по причине человеческого фактора
-
Сокращено время закрытия отчетных периодов за счёт оптимизации ключевых расчётов