The Solü project team worked closely with the client to enhance the application and address these challenging requirements. As part of the engagement, Solü used a proactive and holistic performance-driven development approach to add complex features while improving application performance and scalability. The approach was organized around an Agile software development process, the key activities of which are depicted below.
Performance Development Lifecycle
In addition to delivering a leaner, faster application with new and improved features, the project team developed tools and made process changes to maximize product quality, performance, and scalability.
- Added bulk operation setup and maintenance features, including an import feature capable of secure, synchronous upload of more than 20,000 records in less than two minutes.
- For all user actions and all customer complexity levels the project delivered faster response times across the board. Production monitoring validated that all common user actions complete within a few seconds. Large, complex customers that might have experienced extremely slow performance or even complete failures in the past, are now seeing these actions complete in less than ten seconds. A major reason for the improved user response times was the design and implementation of a new, more compact data storage model. The new storage model provided efficiency across the application stack—reduced number of database rows, server-tier framework objects, and front-end data payload. When the new compact storage model was deployed to production it immediately reduced the database footprint for a critical table by over 50%. The project team estimates that savings will exceed 30M rows as new large/complex clients are added to the application.
- Achieved equally impressive performance gains for a key “export report.” Although new and improved features added major complexity to the application, the team countered with algorithm and database optimizations. Exports saw a dramatic 50%-90% reduction in processing times. Additionally, large/complex customers whose exports consumed significant amounts of server memory and ultimately caused application failures are completing normally and seeing similar improvements in processing times.
- Created a Customer Profile Tool which became vital to development, functional testing, and performance activities. Tool output included a list of almost one hundred customer attributes, in addition to a customer “complexity profile score”—information critical to all functional, performance, and user-acceptance testing activities.
- Provided client with an accurate understanding of real user performance by enabling rich application performance monitoring in production. Enabled monitoring of real user performance for Top 10 desktop and web actions, as well as timing profiles for asynchronous batch jobs. Developed a lightweight Java framework and best practice document to promote use of desktop monitoring tools.
- Integrated application with client’s business intelligence/enterprise data warehouse platform, providing their customers with enhanced template-driven and adhoc reporting capabilities.