Price: 0
Number of applications: 5
09.01.26 (inclusive)
contractual
Finished product
ICT tasks
Extraction and processing of hydrocarbons raw materials
Geological and physical research methods
Software/ IS
The current system for calculating economic and engineering cases for oil and gas projects is based on a complex graph of interdependent asynchronous tasks (DAG). The system uses a deduplication mechanism for calculations through hashing data, which leads to the following problems: 1. Loss of calculations in case of unsaved changes: The user changes the parameters of the case, starts the calculation, but does not save the case. When reopening, the calculation is not found, because the hash of the case data does not match the hash of the calculation. 2. Accumulation of "junk" calculations: Calculations accumulate in the database that are not linked to any saved case, creating performance problems and taking up disk space. 3. Complexity of dependency graph support: The system creates up to 40-80 interconnected subtasks for a single economic calculation (Production, Sales, CAPEX, OPEX, Taxes, Engineer, etc.). Managing links between tasks, tracking shared sub-jobs, and securely deleting them becomes extremely difficult. 4. Duplication of code for fixed and probabilistic calculations: To prevent the creation of records in the database during interactive work with sliders, fixed calculations are implemented separately, bypassing the jobs system. This led to the creation of two parallel code branches for performing calculations, which complicates support, increases the risk of errors when synchronizing changes, and requires duplication of calculation logic. 5. Hashing instability: Differences in the order of JSON keys, the accuracy of float numbers, and the processing of null values lead to the creation of duplicate calculations with the same data.
The implementation of an optimized settlement system architecture will allow: 1. Eliminate the loss of calculations: Ensure that every calculation can always be found when opening the case, regardless of whether the case was saved before or after the calculation. 2. Reduce the load on the database: Reduce the number of records in the database by 60-80% by: Caching intermediate results in Redis ◦ In-memory calculations for interactive mode (without writing to the database) , Automatic cleaning of outdated calculations 3. Simplify the architecture: Transition from a complex dependency graph to a monolithic calculation with caching of intermediate results, which will reduce code complexity by 70% and simplify debugging. 4. Improve the user experience: Instant response to parameter changes in interactive mode (slider) Transparent progress of long-term Monte Carlo simulations ◦ Uniform behavior for all types of calculations 5. Improve productivity: Reuse of calculation results via Redis cache Parallel execution of independent calculation blocks ◦ Optimization of data transfer between calculation stages 6. Provide scalability: The system will be able to handle more simultaneous calculations without increasing the load on the database, using horizontal scaling via Laravel Horizon and Redis.
Artem Nikitenko
Purpose and description of task (project)
To develop and implement an optimized asynchronous calculation system architecture for the OPTIM platform, ensuring stability, transparency and productivity when working with economic, engineering and geological models of oil and gas projects.