Modern browsers are turning into miniature operating systems. They can multi-task browsing processes, allocate and manage memory, collect garbage and much more. They are capable of running complex web applications on their own with minimal server interaction. There is now a paradigm shift in the web application architecture as a majority of application processing is shifting from the server to the web browser. The web browser, once called a “Thin” client has become a big fat cat lately.
The Browser Wars
Meanwhile, leading browser makers are fiercely competing against each for dominance in the web browser market share. This so-called “browser war” has set off major developments in the capabilities of popular browsers like Internet Explorer, Firefox and Chrome as more and more features are built into them. Browsers are now capable of processing data from multiple sources like Content Delivery Networks (CDNs), Ad Networks and Analytics providers and present them to the user. Browser makers are also scrambling hard to bundle as many new features and enhancements as possible to their browsers to stay ahead in the race. Mozilla, for example, recently announced a new rapid release schedule in order to bring faster updates to their Firefox browser. Google has been doing this to its Chrome browser for a while now. However, as browser capabilities are improved, it has also introduced additional complexity to web application architecture.
Mobile Computing and the Rapid Adoption of Newer Web Standards
On the other hand, W3C, the organization that sets Internet standards has also realized the need for newer web standards in this era of mobile computing. HTML, the core technology for structuring and presenting content for the web is undergoing a major upgrade as part of W3C’s new HTML5 specification. Among other things, the new HTML5 standards will make it possible for users to view multimedia and graphical content on the web without having to install proprietary plug-ins and APIs. Related standards like CSS (that defines the layout) and DOM (that defines interaction with data objects) are also getting an overhaul. Technologies like CSS3 and XMLHttpRequest (XHR) are gaining wide adoption and popularity. These newer web standards have put the onus on the web developers and front-end engineers to build interactive web applications that are fast, highly responsive and that behave like a traditional software application.
Web 2.0 and the Semantic Web
At a time when information technology professionals and end-users are getting acquainted with the web 2.0 technologies, work is already underway in defining specifications for web 3.0, what is popularly referred to as the “Semantic Web”. One can only expect rapid developments in this trend in the days ahead and this new web application architecture is here to stay. It is also becoming more and more important that modern web applications are developed to make best use of these technologies.
The Arrival of Mobile and Cloud computing
A recent study by Nielsen research found that 4 in 10 U.S. phones are now smartphones. Morgan Stanley also predicted that the number of mobile Internet users will exceed desktop Internet users by 2015. These studies and predictions aside, there is no doubt that smartphones and tablet PCs have revolutionized the way users browse the web. That being said, speed and performance have become key considerations in mobile web application development as bandwidth has now become a limited and valuable resource.
Rapid adoption of cloud computing technologies like software as a service (SaaS) and platform as a service (PaaS) is in a way forcing this shift in web application architecture as cloud computing providers deliver applications through the Internet.
Why Speed and Performance is Key in this new landscape
One of the key driving factors behind this shift in web application architecture is that end users have become more intolerant to slow page response times and are demanding a highly responsive and enhanced user experience. A recent study finds that an average user will not wait for more than 2 seconds for a web page to load. At the same time, the average user has also become more sophisticated and is demanding a web experience that is interactive, rich in multimedia and easy to use. As a result, speed and performance have taken center stage and have become primary considerations in web application development.
Performance Bottleneck outside the Firewall
As I said earlier, the modern web application architecture has introduced several new components that play a vital role in determining the speed and performance of the web application. These new components are double-edged swords. While they provide huge business benefits, these components can also turn into a potential performance bottlenecks impacting page load times and user experience. Typical performance problems involving some of these components that are outside the application firewall include:
- Issues related to DNS caching, lookup and routing.
- 3rd party widgets, plug-ins and buttons on the web page could be bottlenecks.
- Problems due to inefficient deployment of content delivery network (CDN) solutions, which would mean that the CDN-based performance acceleration is not effective.
- Availability issues arising due to mobile network bandwidth limitations.
- Performance issues as a result of larger file sizes and inefficient loading of
JavaScript & CSS objects and modules. - Web app slowdowns due to Ad networks and analytics tools.
And so on…
And now to the last part… Why Performance Testers should care?
For so long, we performance testers have been focusing our testing efforts mainly (or in many cases, ONLY) on server performance. Rightly so, since a bulk of the application processing was happening at the App and the database tiers. However, the paradigm shift in web application architecture has turned web pages into rich internet applications. This shift not only affects web architects and designers, it also changes the way software testers look for defects in modern web applications. Performance testers, in particular will have to re-think their strategy around testing web applications for performance.
The traditional focus on just server performance and optimization is not adequate anymore. It is like looking at only one side of a coin and as you know, every coin has two sides. A new field within performance engineering called web performance and optimization is emerging and it is high time performance testers take a note of it.
What do you think? I’d be happy to hear your thoughts and feedback in the comments section below.
[Note: In my next article, I will focus in depth on the common Web performance problems, ways to detect them and some best practices for optimizing Client-side performance.]
About the Author
Suraj Sundarrajan is passionate about making web applications run faster. As a Senior Performance Test Engineer at TransUnion, he helps optimize the performance of their Web & Mobile applications. He has been in the field of performance engineering for more than 8 years with extensive experience in designing, building and executing performance, scalability and capacity tests for high-volume and business-critical enterprise applications. He currently focuses on developments in the Web performance and Cloud computing areas. Follow him on twitter @perfengineering and LinkedIn http://www.linkedin.com/in/ssuraj