A professional services firm needed to improve their application. There were issues such as page load times and service downtime. These were a result of business growth as the system was not built for such high traffic volumes.
The Business Challenge
This Professional Services business was having real issues with its primary business application. The software, developed several years ago under a previous CTO and by a development team that is now no longer in the business, is used by our customer and their end users for transaction management, project tracking and to do complex external searchers, using multiple data sources. The software is required by this Professional Services firm to enable them to provide their core services to their customers.
The page load times in specific areas of the software had become almost unusable at certain times of the month. In addition, month end reporting for compliance purposes was bringing the business to a standstill once a month as the application couldn’t be used for two days whilst the compliance team manually collated data and ran essential reports required by the regulator. These issues had come about through growth and the success the business had experienced over the last few years as the system was not designed to cope with such large volumes of traffic.
The issues with the business application and our customers struggle to resolve the problems were a mix a mix of three main reasons:
- The customer had a mix of internal, contract and external third party supplier resources who had worked on the application for almost a decade, creating a tangled web of code that meant easy fixes were not readily available without impacting on other areas of the system.
- The application was 10 years old and therefore was suffering from technical debt as a result of old code, multiple inconsistent revisions and updates to that code, and poor documentation; all often the result of implementing the quickest fix as opposed to following best practice and looking at the long-term viability and robustness of the solution.
- There were additional internal sensitivities with the internal development team, including a number of key-person dependencies that created bottlenecks and meant the team were often slow to respond to and fix ongoing technical issues.
Synetec were asked by the senior management to assist and guide the team towards an action plan to fix the problems being experienced as they were starting to impact customer satisfaction and in turn directly impacting on revenue.
Synetec has created an off the shelf product to assist businesses that are having problems with the performance of a software application: Software Application Health Check. The service is designed to take a root and branch review approach to looking at every aspect of the development lifecycle and existing status for the core business software to uncover inefficiencies and problems. The Software Application Health Check service is designed to ultimately provide a prioritised list of recommendations for how to make things better moving forward, with a focus on either resolving or mitigating the identified issues. This is the service that we adopted in this case to improve the core business application performance for the customer in this situation.
To do this we looked at two key areas, the first was from the business angle and the second was from the technical angle.
To review the business perspective, we first reviewed the business processes that the application is supporting and defined the specific application areas which were the most critical. This meant we aligned most of the time spent reviewing a complicated application to the areas of the software that provided the most value to the customer. To get quick results you have to prioritise and look at the code that delivers the most value. Without this key direction you can spend a lot of time looking for a needle in a haystack.
At the end of this stage we were able to produce a detailed business process map and associated KPI’s that the business deemed important. These were things like: process transactions in less than 3 seconds, page load times in under 1 second, run key compliance reports in less a minute, etc. Without understanding the targets the business is aiming for it is would not have been possible for us to produce meaningful recommendations for how to fix the application in the short term without a complete re-write.
The second detailed stage was to conduct a very detailed review of the technical side of the application. This took the form of implementing a pre-designed monitoring template built within New Relic software. This particular business only had native Windows monitoring built into the environment which offered some, but very little, detail of what was happening in the software. This was implemented to run for a month so we could capture all the nuances of the application including peak times of day, week and month.
We also conducted a technical review of the deployment mechanism. One of the key areas where errors and mistakes are typically introduced into an application is during the deployment and change process. We made sure this was operating. Although the problems in this case didn’t come from this area there were nevertheless risks identified that we offered mitigation advice on to improve and streamline the process.
And lastly, we conducted a code review that focused on those areas that were identified as the trouble spots, both by the internal development team and through outputs from the monitoring, as well as those with the highest business value related to them.
Results and Client Benefits
The results of the technical review were that we identified two key areas of code with discrepancies that were inefficiently implemented. Essentially, whilst these areas hadn’t been changed in a long time, a lot of the application around these areas of code was dependent on calling resources from them. This was leading to a bottle neck in resources which, as our customer continue to grow and scale its use of the software, meant user experience was suffering dramatically.
This highlighted the need for a better testing process to emphasize the inter-dependencies within the code and we were able to recommend some best practice changes to the deployment process as well as a gentle move for the organisation to a more structured Agile and DevOps based way of working.
Upon implementation of the majority of recommendations from the Software Application Health Check report our customer has since reported a number of business benefits. The main business benefit has been improved customer satisfaction; something they forecast will have a direct and positive effect on revenue. This was achieved through:
- Drastically reduced page load times improving the overall user experience
- Improved and condensed month end reporting cycle that reduces the required system downtime for reporting and account reconciliations
Additionally, the technical team now has some of its key processes clearly documented to go alongside a set of recommendations to implement to enable further system improvements.