Foreword

 

Retired Content

This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

patterns & practices Developer Center

Improving .NET Application Performance and Scalability

J.D. Meier, Srinath Vasireddy, Ashish Babbar, Rico Mariani, and Alex Mackman
Microsoft Corporation

May 2004

Related Links

Home Page for Improving .NET Application Performance and Scalability

Send feedback to Scale@microsoft.com

patterns & practices Library

By Scott Barber

With so many professionals online and relying on the Internet to perform daily operations, application performance has become vital to the success of eBusiness solutions. In an effort to ensure success, many companies have developed tools and methodologies to test and tune applications for performance. Many of these tools and methodologies have focused on optimizing system metrics, such as throughput, rather than optimizing the user experience. But face it, users don't care what your throughput, bandwidth, or hits-per-second metrics are — they just want a positive user experience.

How many times have you surfed to a Web site to accomplish a task only to give up and go to a different Web site because the home page took too long to download? According to Juniper Communications, "46 percent of consumers will leave a preferred site if they experience technical or performance problems." In other words*, if your Web site is slow, your customers will go!* This is a simple concept that all Internet users are familiar with. When a site fails to load quickly, your first thought will not be, "Gee, I wonder what the throughput of the Web server is?" Instead, you think "Man, this is SLOW! I don't have time for this. I'll just find it somewhere else." Now consider this, what if it was YOUR Web site that people were leaving because of poor performance?

Fortunately, there is a laundry list of performance-testing tools and services available to tell you what your site's end-user response time is. Unfortunately, not a single one of them has the ability to tell you WHY the performance is what it is, or even more importantly, how to make it better! So, where do you go for help?

There are a variety of books on the market that discuss how to design and architect for maximum code-level or hardware-level performance. There are even more books that focus on making a Web site intuitive, graphically pleasing, and easy to navigate. These books discuss the benefits of speed, but how do you predict and tune an application for optimized user experience? You must test, firsthand, the user experience! There are two ways to accomplish this. You can design for performance, then release a Web site straight into production, where data can be collected and the system can be tuned, with the great hope that the site doesn't crash or isn't painfully slow. However, the wise choice is to model, design, and develop the system, then simulate actual multiuser activity, tune the application, and repeat (until the system is tuned appropriately), before placing your site into production. Sounds like a simple choice, but how do you do all of that?

Improving .NET Application Performance and Scalability details the most complete, effective, and efficient application life cycle approach to meeting performance and scalability goals that I have found in print. If you are about to embark on a new development project using the .NET Framework and are concerned about performance and scalability, this is a must-read. Even if you aren't using .NET, or are already involved in a project, this guide will provide you with valuable insights and ideas that are widely applicable across platforms, processes, and phases of development. The guide walks you through key considerations and activities for achieving your performance and scalability goals throughout the software development life cycle. If you follow the recommendations from beginning to end, you will learn how to design for performance by understanding what's important to you, your users, and your stakeholders — while identifying risks, issues, and tradeoffs at the earliest possible opportunity. The guide provides frameworks, checklists, expert tips, design and architecture reviews, and implementation reviews to help you avoid common mistakes. It then delves into the performance and scalability aspects of .NET technologies in painstaking detail, leading you through options, choices, tradeoffs, things you should be aware of, and issues that you simply cannot ignore.

Finally, we have information for both developers and testers about developing for performance, testing performance, and tuning performance under one cover. Ever since I entered the performance testing/engineering/analyzing world, I have been a champion of these three activities coming together in a collaborative presentation. While you may not be able to apply everything in this guide to your own environment, just thinking through the activities in the guide, particularly their flow and relationships, will give you keen insight to improve your approach to building well-performing, highly scalable applications.

Scott Barber
System Test Engineer / Quality Assurance Manager
AuthenTec, Inc.
March, 2004

Scott Barber is a system test engineer and quality assurance manager for AuthenTec, Inc., and a member of the Technical Advisory Board for Stanley Reid Consulting, Inc. With a background in network architecture, systems design, and database design as well as administration, programming, and management, Scott has become a recognized thought leader in the context-driven school of the software-testing industry. Before joining AuthenTec, he was a consultant specializing in performance testing/analysis, a company commander in the United States Army, a database administrator, and a government contractor in the transportation industry.

Scott is a discussion facilitator in the Rational Developer Network public forums and a moderator for the performance testing–related forums on QAForums.com. You can see samples of Scott's work in the area of performance testing on his Web site, www.perftestplus.com. You can address questions or comments to him on either forum or by contacting him directly at his e-mail address: sbarber@perftestplus.com.

patterns & practices Developer Center

Retired Content

This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

© Microsoft Corporation. All rights reserved.