Reduction in processing time, support invoicing and reporting for increasing larger accounts, and reduce hosting costs.
Finetune, a long-term partner of ZEAL, faced persistent challenges with their invoice and report processing that is tasked with fetch, analyzing, and doing calculations of ten of thousands of records. Recognizing the need for improvement and onboarding increasing larger accounts, ZEAL took on enhancing performance to address slow processing time, system crashes, timeouts, and excessive memory usage.
To enhance the efficiency of Finetune’s invoice and report processing, addressing performance issues and reducing operational costs.
We began by conducting a thorough analysis of Finetune’s existing processes, auditing runtime metrics, and identifying areas for improvement. Our focus was to identify areas of invoicing and report processing that were using slow and excessive database queries, and ensuring the process ran more efficiently using less memory.
By utilizing New Relic's transaction metrics, we pinpointed performance bottlenecks in our Ruby on Rails application. The first issue we tackled was the excessive use of database queries, known as the "n+1 query problem." These queries not only slowed execution but also burdened runtime due to object initialization and garbage collection. We resolved this by restructuring our invoicing and reporting pipeline, optimizing queries during initialization and memoization to reduce additional queries.
Another issue we addressed was the time-consuming data filtering performed in Ruby, especially with large datasets in the invoices and reports. We shifted some of this filtering to the database through query restructuring, significantly speeding up workflows.
As a result, our system's capacity for handling invoices and reports expanded, leading to improved report speed and volume. These changes streamlined processes and enhanced resource efficiency.
Queries for invoicing and report processing were enhanced, reducing memory usage, decreasing query time, and optimizing code.
This initiative highlighted the importance of regular performance monitoring and optimization for established systems. Our team’s expertise in identifying and addressing performance was a key factor in the initiative's success. We recognize the importance of exploring newer technology and efficient processing methods to further enhance system performance.