Intranet Journal   Earthweb  
Images Events Jobs Premium Services Media Kit Network Map E-mail Offers Vendor Solutions Webcasts

   Intranet Journal Subjects
Search Earthweb

Privacy Policy



internet.com
IT
Developer
Internet News
Small Business
Personal Technology
International

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers

internet commerce
Be a Commerce Partner
















 

[ Home | Discussion Forum | How Do I... | Lotus Notes Intranets | Microsoft SharePoint | Products | Shopping  ]

free news!

Performance Matters: Guidelines for Building a More Responsive Intranet


Gordon Benett

Printer Friendly Version

Much of what drives consumer behavior on the Web is also true for corporate intranets, and nothing kills a business Web site like poor performance. E-commerce consultants cite an attention span on the order of eight seconds as the threshold for abandoning a slow retail site. On an intranet, where broadband connections are the norm, user expectations are higher still. Pages that don't appear instantly stand a good chance of never being seen. Different norms apply, of course, to research sites and rich media, such as online training videos. But for an important class of intranet applications - portals, discussion forums, sales force automation and priority content delivery (e.g., regulatory updates) - slow pages might as well be no pages.

Yet performance is often overlooked during intranet development. Reasons for this are several: some performance factors, such as slow remote-office links or overall network traffic, lie outside the developer's control; response times are rarely part of an application's requirements; conditions for load testing tend to be guesswork; coordination between those responsible for building, administering and maintaining distributed systems is the exception, not the norm.

Nevertheless, developers interested in building usable systems have an obligation to take account of performance during the design process. System performance is a pervasive design consideration that impacts every step of the development life cycle. From specification and analysis to design, testing and deployment, decisions are made that influence application speed and scalability. Because Web applications are distributed and can be complex, optimizing end-to-end performance is a challenging problem that requires both science and art to solve. Best practices for building well performing intranets fall into five categories: planning for performance, performance-aware design, testing and optimizing, deployment and configuration, and system tuning.

Planning for performance
It seems obvious but it's rarely stated: systems can only be designed to meet performance goals if those goals have been identified. The first step toward meeting user performance expectations is to ask users early on what range of response times will be acceptable. Do this while specifying the system, in your Use Cases (or User Stories, or wherever client expectations are captured in your methodology). Including performance criteria in Use Cases provides guidance for all subsequent optimizations: it helps developers choose between alternative implementations, informs deployment and configuration decisions, and sets criteria for acceptance and load testing.

Performance-aware design
"Getting your web applications to do what you want is one thing; getting them to do it fast and efficiently is often another" (Professional JSP 2nd Edition, Wrox Press, Inc., 2001). It's hard enough making your pages work. Learning the factors that affect performance on a given platform can seem like studying for a Ph.D. The way to look at this somewhat daunting task, particularly in adverse economic times, is as an opportunity. One way of distinguishing yourself from the growing mass of developers who know ASP, JSP or SQL syntax is by digging deep to understand the performance impacts of your design decisions. The Resources section below is a good place to start.

Testing and optimizing
Even experts can be surprised. The impact of some design choices can be hard to predict and may remain unclear before testing. In addition, the only way to know whether a system meets user expectations is to test it, not just in isolation but under conditions that simulate real patterns of use. Start by testing your individual pages, scripts and applications, a process called unit testing that should go hand-in-glove with performance-aware design. If a page takes twenty seconds to render on your local machine, it's not going to get faster over a remote link with dozens of users hitting the server. Fix it before the source of the problem gets lost in a large distributed system.

While unit testing can expose flagrant design flaws, subtler bottlenecks can remain hidden until the system is tested as a whole. Even then, so-called intermittent problems - a troubleshooter's nightmare - might appear only under certain, hard-to-repeat conditions, requiring extensive testing under simulated load to discover, isolate and repair. Intranet applications rarely warrant this level of scrubbing, of course - unless they drive corporate revenue, as for instance an executive dashboard or trading application might. In other words, where the cost of poor performance is high, it pays to invest in rigorous testing, whether the system is a B2C shopping cart application or a decisionmaker's intranet portal.

Deployment and configuration
Decisions in the deployment phase can have a strong effect on overall system performance. Many of these decisions actually occur during the planning phase, such as the decision to use a particular server architecture (e.g., Microsoft IIS/ASP versus JSP/Servlets) or a mandate to use a company-standard browser version (e.g., IE 5.5 versus NN 6.0). The performance impact of such decisions is implicit, and assessing that impact early in the lifecycle is a strong argument for using a rapid, iterative development process in combination with frequent performance testing. Other deployment decisions, such as the selection of a native code compiler for Java or a particular clustering product, are more flexible and can be made with specified performance goals in mind.

Beyond selection, most system elements need to be configured, and small changes in memory, cache size, locking parameters, etc. can hugely impact response. As with design, getting setups right is a matter of education and experimenting with particular platforms and versions. A good rule of thumb for optimizing configurations is, "Don't reinvent the wheel." Participate in platform-specific forums and newsgroups to take advantage of others' hard won experiences. Then, keep a journal of what works to leverage your own experiences into corporate best practices.

Tuning
Enhancing performance in the final stages of development and subsequently in production is largely a matter of tuning. Whether of an application server, load balancer, database, or Java Virtual Machine (JVM), tuning can be a powerful means of bolstering throughput and scalability. That's no excuse for relying excessively on late-phase tuning to cover a lack of up-front planning, however. As a remedy for performance bottlenecks tuning is often too little, too late.

Consider a database application found late in the development cycle to scale poorly. By that point, database tuning may seem like the best (or only) cure, and the DBAs happily bring down the staging system - postponing further testing and development - to work their magic. But do the database caches really need to be resized, or is the bottleneck due to an archaic ODBC driver? Would connection pooling help? Or is the culprit an inappropriate use of container-managed persistence? The best way to avoid this kind of last-minute floundering is to follow a program of performance-aware design and testing throughout the lifecycle.

Planning for performance, adhering to best coding practices, testing and optimizing, deploying with an eye to performance, and judicious system tuning constitute the means to meeting system performance expectations. Often, executing this plan requires expertise across a wide range of products and technologies. By taking account of the guidelines introduced here and by studying performance-aware design on the platforms you use, you'll be doing your part in keeping the intranet a vibrant, responsive resource.

Resources

Online

"Maximizing the Performance of Your Active Server Pages," by Nancy Winnick Cluts, MSDN Library

"25+ ASP Tips to Improve Performance and Style," by Len Cardinal, MSDN Library

"Exchange 2000 Application Development: Performance Optimizations," by Loren Curtis and Dale Koetke, MSDN Library

"Performance and Scalability Testing," by James Francisco, MSDN Library. One of the first articles to address performance testing of Web services.

"Performance," Chapter 20, Professional JSP 2nd Edition (see Books listing below for details).

Java Performance Tuning Tips

"Web Load Test Planning: Predicting how your Web site will respond to stress," article by Alberto Savoia, STQE Magazine

"Mining Gold from Server Logs: Using existing site data to improve Web testing," by Karen Johnson, STQE Magazine

Books

Scaling for E-Business: Technologies, Models, Performance, and Capacity Planning, by Menasce, Daniel A., and Virgilio A. F. Almeida (Prentice Hall, May 2000).

Quality Web Systems: Performance, Security, and Usability, by Elfriede Dustin, Jeff Rashka, Douglas McDiarmid (Addison-Wesley, August 2001).

Web Performance Tuning: Speeding Up the Web, by Patrick Killelea (O'Reilly & Associates, October 1998). Aging material scants Microsoft platforms, but still interesting for coverage of general principles.

Professional JSP 2nd Edition, by Simon Brown, et al. (Wrox Press, Inc., April 2001)

Practical Java: Programming Language Guide, by Peter Haggar (Addison-Wesley, February 2000). Pages 97-160 focus on performance considerations for object-oriented programming languages in general, Java in particular.

Java Performance Tuning, by Jack Shirazi (O'Reilly & Associates, September 2000).

ASP Application Performance and Tuning, by Jeff Niblack (New Riders Publishing, January 2002). Coming soon.

Gordon Benett is a technology strategist with over 16 years experience analyzing, architecting and developing information systems. He is currently with Aberdeen Group (Boston, MA), where as a Senior Research Analyst he follows the Enterprise Java and Middleware markets. Gordon founded Intranet Journal in 1996 and remains a reader and contributing author. He welcomes your comments at gbenett@mediaone.net.

Printer Friendly Version

Of Interest
· Intranet eXchange Discussion Board

· Advice and Opinions

email this page

Tutorials
and more at:
Intranet Journal's Tutorials
Intranet Journal Favorites

Creating a PHP-Based Content Management System

The Spyware Guide

Introduction to Microsoft SharePoint Portal

Intranet Journal
Part of the EarthWeb Network

Managing Editor
Intranet Journal

Tom Dunlap

EarthWeb Home Page
Jupitermedia Home Page

Media Kit





JupiterOnlineMedia

internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

Jupitermedia Corporate Info


Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

Advertise | Newsletters | Tech Jobs | Shopping | E-mail Offers

Solutions
Whitepapers and eBooks
Intel PDF: Virtualization Delivers Data Center Efficiency
Intel eBook: Managing the Evolving Data Center
Microsoft Article: BitLocker Brings Encryption to Windows Server 2008
Symantec eBook: The Guide to E-Mail Archiving and Management
Microsoft Article: RODCs Transform Branch Office Security
Go Parallel Article: James Reinders on the Intel Parallel Studio Beta Program
Avaya Article: Advancing the State of the Art in Customer Service
Adobe Acrobat Connect Pro: Web Conferencing and eLearning Whitepapers
Avaya Article: Avaya AE Services Provide Rapid Telephony Integration with Facebook
Go Parallel Article: Getting Started with TBB on Windows
HP eBook: Storage Networking , Part 1
MORE WHITEPAPERS, EBOOKS, AND ARTICLES
Webcasts
Intel Seminar: Efficiencies in Hardware/Software Virtualization
HP Webcast: Disaster Recovery Planning
Go Parallel Video: Performance and Threading Tools for Game Developers
HP Video: StorageWorks EVA4400 and Oracle
HP Webcast: Storage Is Changing Fast - Be Ready or Be Left Behind
MORE WEBCASTS, PODCASTS, AND VIDEOS
Downloads and eKits
IBM TCO eKIT: Your IT Budget is Under Attack, Get in Control
IBM Energy Efficiency eKIT: Learn How to Reduce Costs
30-Day Trial: SPAMfighter Exchange Module
Red Gate Download: SQL Toolbelt and free High-Performance SQL Code eBook
Iron Speed Designer Application Generator
MORE DOWNLOADS, EKITS, AND FREE TRIALS
Tutorials and Demos
Microsoft Article: Silverlight Streaming--Free Video Hosting for All
Featured Algorithm: Intel Threading Building Blocks - parallel_reduce
HP Demo: StorageWorks EVA4400
MORE TUTORIALS, DEMOS AND STEP-BY-STEP GUIDES