Price: 0
Number of applications: 2
09.01.26
договорная
Finished product
Задачи ИКТ
Extraction and processing of hydrocarbons raw materials
Geological and physical research methods
Software/ IS
Текущая система расчета экономических и инженерных кейсов для нефтегазовых проектов построена на сложном графе взаимозависимых асинхронных задач (DAG). Система использует механизм дедупликации расчетов через хеширование данных, что приводит к следующим проблемам: 1. Потеря расчетов при несохраненных изменениях: Пользователь изменяет параметры кейса, запускает расчет, но не сохраняет кейс. При повторном открытии расчет не находится, так как хеш данных кейса не совпадает с хешем расчета. 2. Накопление "мусорных" расчетов: В базе данных накапливаются расчеты, которые не привязаны ни к одному сохраненному кейсу, создавая проблемы с производительностью и занимая дисковое пространство. 3. Сложность поддержки графа зависимостей: Система создает до 40-80 взаимосвязанных подзадач для одного экономического расчета (Production, Sales, CAPEX, OPEX, Taxes, Engineer и т.д.). Управление ссылками между задачами, отслеживание shared sub-jobs и безопасное удаление становится крайне сложным. 4. Дублирование кода для фиксированных и вероятностных расчетов: Для предотвращения создания записей в БД при интерактивной работе с ползунками фиксированные расчеты реализованы отдельно, в обход системы jobs. Это привело к созданию двух параллельных веток кода для выполнения расчетов, что усложняет поддержку, увеличивает риск ошибок при синхронизации изменений и требует дублирования логики расчета. 5. Нестабильность хеширования: Различия в порядке ключей JSON, точности float-чисел и обработке null-значений приводят к созданию дубликатов расчетов с одинаковыми данными.
Внедрение оптимизированной архитектуры системы расчетов позволит: 1. Устранить потерю расчетов: Гарантировать, что каждый расчет всегда может быть найден при открытии кейса, независимо от того, был ли кейс сохранен до или после расчета. 2. Сократить нагрузку на базу данных: Уменьшить количество записей в БД на 60-80% за счет: ◦ Кэширования промежуточных результатов в Redis ◦ In-memory расчетов для интерактивного режима (без записи в БД) ◦ Автоматической очистки устаревших расчетов 3. Упростить архитектуру: Переход от сложного графа зависимостей к монолитному расчету с кэшированием промежуточных результатов, что снизит сложность кода на 70% и упростит отладку. 4. Улучшить пользовательский опыт: ◦ Мгновенная реакция на изменение параметров в интерактивном режиме (slider) ◦ Прозрачный прогресс выполнения длительных Monte Carlo симуляций ◦ Единообразное поведение для всех типов расчетов 5. Повысить производительность: ◦ Переиспользование результатов расчетов через Redis cache ◦ Параллельное выполнение независимых блоков расчета ◦ Оптимизация передачи данных между этапами расчета 6. Обеспечить масштабируемость: Система сможет обрабатывать больше одновременных расчетов без увеличения нагрузки на базу данных, используя горизонтальное масштабирование через Laravel Horizon и Redis.
Артем Никитенко
Purpose and description of task (project)
Разработать и внедрить оптимизированную архитектуру системы асинхронных расчетов для платформы OPTIM, обеспечивающую стабильность, прозрачность и производительность при работе с экономическими, инженерными и геологическими моделями нефтегазовых проектов.