Increasingly (or almost exclusively?) applications are delivered via web based single page applications or cloud based services. This is good thing right? I mean we can access fully interactive applications via a standard web browser, on a variety of platforms, be they desktop or mobile ,and from where ever we may be geographically and where ever the applications may be located.
And most of the time all is good, but when things don’t go exactly to plan, when performance dips, when the video stream buffers how do we best diagnose the problem? Harder still, how do we diagnose connectivity issues in the new Covid working from home environment hen we don’t necessarily have IT staff on call to assist.
If you are like most people, then the first port of call is a speed test – spin up a speed test utility in your browser and check what your download and upload speeds are. Verifying simple upload and download speeds of your Internet tail circuit has a number of issues, firstly it only tests the raw capacity of the ‘last link’ of your Internet connection, the speed is based on a server probably located within (or at least nearby) your ISP’s infrastructure. More importantly though, a simple speed test is a blunt instrument, outside of a performance problem based on raw bandwidth, a speed test provides no insight into the components of an web based application that contribute to user experience.
Turns out (and this should be of no surprise), when your browser opens a web or cloud based application there are a serious of interactions or potential performance bottlenecks any of which can affect the response time experienced by the end user. At a high level things like browser performance, available bandwidth, latency, protocol overheads, server performance and database response all contribute to response time and any one ‘faulty’ component has the potential to slow the application down.
So now that we know how complex a typical web or cloud based application is, how exactly are we meant to diagnose performance issue?
Byte25 have release a ne Web Performance Analyser to address this specific problem. The Web Performance Analyser establishes a connection to a remote web based application, cloud service or web page and provides a detailed report of performance of each component. The Web Performance Analyser analysers each element returned from the application and shows the relevant elapsed times for each component of the connection.
At a high level, the Web Performance Analyser shows the number of elements, the overall page load time, download/upload size as well as the type of responses and errors. This is a great starting point to begin the diagnostics, it shows the overall statistics of the application or webpage as a whole, but the really cool stuff, the stuff we need to pinpoint problems comes further down.
This on its own provides a good level of diagnostic data, but the silver bullet lies in the waterfall graph below. The waterfall graph instantly identifies the worst performing elements and breaks down response time by type. In this way we can clearly identify not only which element is causing potential issues but also what part of the infrastructure is causing problems. Analysis of the waterfall graph will pinpoint the root cause of the issue – the network, the server, a misconfigured application and so on.
For network admins, the other huge advantage of the Byte25 Web Based Performance Analyser is the ability to install a Byte25 Branch appliance at a remote site and run a web performance analysis on a site in exactly the same fashion as an end user. The performance is measured from the Byte25 Appliance to the remote web based application, it is in essence a flexible ad-hoc synthetic transaction generator tailored specifically for web or cloud based applications.
I will post the new release in the next couple of days so feel free to drop by and check it out. Run it against you own website or application, you will be amazed at what you see, I guarantee you’ll be able to improve performance based on what the Web Performance Analyser returns.