Is Your Website Ever Slow, Unstable or Unavailable? - December 09 Newsletter

Print Friendly Copy

Although online performance has always been crucial to the success of a transactional website, this is now more critical than ever with growing customer expectations of an interactive, personalised, dynamic and responsive experience in an increasingly crowded and competitive marketplace.

Online performance means not only the speed at which your website’s pages are served to the customer and become available to interact with, it also means robustness in terms of stability and availability during the full customer experience across single and multiple sessions.

The following points highlight best practices in online performance and stability, along with some of the most common ways to improve performance, to help you ensure that your website performs quickly and consistently, time and time again:

Performance Best Practices
1. Consider Performance a Top Priority
All too often, web application performance and stability is either an afterthought or not even a thought at all, and yet the consequences are often severe, if not catastrophic.

Whatever the stage in your application’s lifecycle, be this early planning and design of a new development project or two years of live operations, it is never too late to make performance concerns top priority, adapting your approach, investment and processes to ensure they are considered at every step.   Adopting a ‘performance by design’ approach across all areas, be they functional, application or infrastructure, ensures high performance and stability for your customers.

2. Performance is Everybody’s Concern
Online performance is too often seen as the concern of the application development team.  Infrastructure blames the application for poor performance, application development blame the infrastructure for being too slow.
In reality, performance concerns, testing, tuning and planning should include a number of areas across the business working together to ensure optimal performance and stability.  If Marketing plan a mass email promotional campaign for example, Application Development, Infrastructure and Live Operations should all be heavily involved.

3. Constantly Test and Optimise your Application’s Performance
More often than not, after performance testing and tuning is carried out as part of an application delivery project, no further testing or tuning takes place during the lifetime of the application.  Numerous minor and major application releases can go by, sometimes involving significant application architecture of infrastructure changes, with little or no regard for the performance impact of these.

By building performance and stability assurance gates into your development, testing and release processes, the chances of live failure are significantly reduced.  By performing a process of continuous performance tuning and optimisation, this stops your competitors from moving one step ahead.

4. Carry Out Realistic Performance Testing
The effectiveness of Performance Testing is largely based on the underlying test model.  Performance Testing should aim to simulate a realistic blend of user journeys through the web application, against live sized infrastructure using live like test data and volumes.

Although it is never possible to completely simulate live customer load, the more comprehensive and ‘live like’ the performance testing, the greater the chance of identifying performance issues and bottlenecks prior to go live.

Improving Online Performance

1. Optimise the use of Caching, Compression and Session State
Caching is one of the most common and effective ways to increase a web application’s performance and can be implemented across many different layers of the application, ranging from browser caching and web page/partial web page caching to search caching and database query caching.

The use of web content compression is often overlooked when deploying a web application to live, but can have significant performance benefits due to reductions in bandwidth that can be achieved.  This benefit must be weighed against the encoding and decoding overhead required however, and therefore is not suitable for all situations, mainly where dynamic content is served.

Finally, a rationalisation of application session state can have a significant impact on application performance and stability, potentially leading to reduced server load and faster response times.  Many applications use session state by default, which can place an additional processing overhead where it is not required.

2. Architect for Scale Out, Not Up
Although it can be a significant architectural change in many existing online applications, the ability to scale your application tier out, rather than up, can be key to increasing the performance of your web application, whilst also allowing for future visitor growth.  If your web application is stateless then a load balancer can be configured to spread the load across a flexible number of servers.  Where session state is required, central shared session stores can be utilised or in memory session with stickiness maintained by a load balancer.

Whilst scaling out at application tiers is the most common approach, this can often lead to the database becoming the performance bottleneck.  Depending on the database product being utilised, databases can be clustered or the data model / architecture re-designed to spread data transactions across multiple instances.

3. Review and Optimise Database Read and Write Transactions
Many common dynamic web application performance problems relate to the way the application tier queries and writes to the database, perhaps the most common being the reading of an entire query dataset into memory before iterating through it - rather than using a forward only reader pattern.  Although suitable to some situations, this approach can lead to significant page load performance problems and places significant demand on server resources.  Similarly, another common problem is seeing entire datasets read into and updated in memory before being posted back to the database where only a single value change is required.

4. Optimise Server Round Trips and Bandwidth
Reducing the number of server round trips can have a significant impact on individual customer performance along with the overall performance of an online web application.  The optimisation of server side processing versus client side processing can lead to reduced load placed on the web application and database along with reduced bandwidth.  Other improvements include the use of server transfers rather than client side HTTP re-directs and the removal of data passed to the client in order to maintain state in cases where this is unnecessary (e.g. ASP.NET ViewState).

5. Offload Static Content to a CDN Where Possible
Websites are increasingly using Content Delivery Networks provided by a growing range of providers, which provide a way to serve website content from infrastructure external to your core application.

Mainly used for serving static content such as images, media files, documents etc, CDNs not only allow you to reduce the load and bandwidth placed your core application infrastructure, but they also provide a way to deliver content globally from a network of global data centres.

6. Embrace the Cloud
The growth of cloud computing over recent years cannot be ignored and it is fast becoming a serious alternative to traditional application infrastructure hosting.  Cloud services can take away the headaches and associated costs of scaling out your infrastructure in terms of servers, network equipment, bandwidth and global positioning.
Common uses of cloud technologies range from hosting your entire web application infrastructure in the cloud in multiple global data centres, to utilising virtual cloud servers to scale out your web application tier as and when required.
If you want your website to always be fast, stable and available then we recommend that you speak to the team at
Intechnica. They provide performance engineering for the Internet.

Article submitted by: Will Montague
Intechnica – Performance Engineering For The Internet 0161 212 1570