In consumer and business sectors, slow software means obsolete software. The days of watching loading screens, buffering bars, and endless hourglass icons are rapidly fading to newer, faster, and more productive applications that value the user’s time as much as the user does. If an application falters for even a few seconds, potential users are already searching for a faster alternative.
“The speed of loading of an application, the ease of use of the interface, and the few “touches” the application requires all improve the “stickiness” of an application once it is adopted,” explains Nisith Naik, Regional CEO – UAE, Asia Pacific and Australia, Focus Softnet.
It is important, however, to be a savvy speed seeker, and ensure that delays are indeed due to the application, and not a problem with the device or network on which it is running. This can be a tricky task, akin to finding the one burned out bulb in a string of lights that causes the whole line to go dark. It is vital for companies to know when to optimise a current program or application, and when to check the system for other potential problems.
Fortunately, there are solutions to determine when and how to optimise applications that are slowing down to the point of damaging the end-user experience. Sridhar Iyengar, Vice President, ManageEngine, explains, “The way to detect slowness or poor availability for applications is to use an application performance monitoring (APM) solution. Ideally, the APM solution should have application dependency mapping and root cause analysis capabilities, which can help users understand dependencies between the application and underlying infrastructure components like the server.” He goes on to explain that an APM tool can monitor both the application and the server availability and health, and can therefore determine if the problem is due to the application or the underlying server.
By using an APM solution, a company’s IT department can quickly and effectively determine the cause of any problems a programme may be experiencing. As Iyengar states, it is vital that the APM solution utilised includes dependency mapping and root cause analysis in order for companies to differentiate between problems with applications and the servers on which those applications are running.
Vimal Sethi, Managing Director, Synechron Middle East agrees, suggesting that companies take a more holistic approach to finding solutions. “The amount of time users spend interacting with applications and the devices is critical to success,” he says. “Some evident symptoms include application slowness, frequent application crashing and freezing. The reason why it requires a holistic approach is that these symptoms do not explicitly indicate whether the issue is occurring because of the application or the device where it is installed or hosted.”
As with any problem a company faces, there is more than one way to resolve issues of slow application speed and performance. In terms of solutions to such problems, Sethi has this to offer, “For web and mobile apps, reducing page size, total number of requests and page rendering time are some of the techniques for performance optimisation. Media and streaming applications can leverage CDN technologies. With the advent of cloud computing, CDN solutions have now become cheaper as compared to the past.”
When looking under the hood of an application in order to optimise its performance, IT may find problems that previously remained hidden. Symptoms such as slow performance can be indicators of many different problems, and bottlenecking is certainly one of them. Optimising an application has the potential to help eliminate this problem.
“Sometimes application code could be badly written and hardware resources not leveraged in the most efficient way,” says Zaher Haydar, Senior Regional Manager, Systems Engineers, Turkey, Africa and Middle East, EMC. “An application might be making redundant read/write cycles to the storage, a fast thread might be dependent on a much slower one, some lengthy sequential scans are being done where a sort of indexing would be the better approach, etc. A thorough application optimisation is needed in these cases to spot the bottlenecks and fix the code accordingly.”
However, optimisation may not always be a perfect fit for the problems at hand. Once IT starts investigating, it is possible that the program is so complex that to optimise it is not a cost effective solution. In cases like these Haydar suggests a potential work around. “Bringing flash into this picture could have the effect of alleviating the situation relatively quick,” he says, “since flash will improve latency and response time even with non-optimised queries. This solution of “hiding” the software problem with higher performance hardware might not be ideal but works practically and the overall cost impact could be lower.”
This of course brings to mind the potential pros and cons of optimisation. Haydar goes on to explain what the trade-off could potentially look like. “Application optimisation generally focuses on multiple aspects of performance, such as execution time, memory usage, disk space and more,” he says. “In most cases, there will be multiple bottlenecks in a given system – if you make the storage faster, the compute or the network – or the application itself – might become the next bottleneck. It is an iterative exercise to identify and fix one bottleneck after another.”
A company must weigh the costs and benefits of optimisation in order to know if it is the right move. If a company does decide to move forward with optimisation, it is key to determine the specific part of a program that needs to be optimised. “For programmers,” Shadi Alkhatib, SE Manager, Levant, Aruba Networks, explains, “the most important thing to optimise is the application protocol. The programmers should use a common protocol, not a proprietary application protocol.”
Sethi also weighs in on the subject. He says, “As a general practice, programmers should always look for efficient algorithms for achieving the task at hand. Some general techniques like hot-spot analysis and application profiling assist programmers to identify the areas which have bottlenecks.” For development, programmers need to have certain benchmarks established for different use cases. In execution environments, violation of these benchmarks can indicate the need of code path optimisation.
The ultimate goal of optimisation is to increase an application’s speed and efficiency. There are several ways to make this happen, including bypassing optimisation all together. Flash storage presents another option for improving a company’s operations. It has the potential to increase efficiency, and help applications operate more productively.
Vimal goes on to say, “SSD leads to faster reading and writing time for application data, which translates to dramatic improvement in application performance. So, SSDs can be better for hosting application databases or persistence storage.”
Iyengar agrees adding, “Flash storage support will help to improve the read operations. Programmers can determine what data is read many times and written just a few times – like user profiles – and make use of flash storage support to improve performance for read-intensive applications.”
Flash storage certainly has the potential to increase performance and aid in the optimisation process. Hayder concludes, “The high level message is that flash can help with increased throughput if the application asks for increased throughput and faster response time.” This means websites will load faster and OLTP transactions will complete more efficiently.
Traditionally, code optimisation to improve application performance is a time consuming and costly exercise resulting in marginal improvement in performance. A much more efficient approach is to look at the entire application development environment and see if new innovations in technology can improve not only the application performance but the entire application lifecycle.
There are a number of options when it comes to application performance optimisation. They key is first to determine what is slowing down the application, and then choose the appropriate solution for the underlying issue.