IBM Global Services
Designing performance into your Web-based applications Key Topics Addressing and meeting performance objectives Performance engineering Modeling and testing Developing application templates Acquiring the right skills
A demanding Internet environment How certain are you that your enterprise’s Web-based applications are designed to meet the demands of your employees, vendors, business partners and customers? How do you measure the potential losses — in terms of productivity, ineffective communication and lost revenue — when your customers click to another Web site? In today’s environment, timely Web response and availability can mean the difference between leading or trailing the industry. Whether your Web applications support your internal business functions or a dynamic Internet client community, successful Web-application design will focus on addressing and meeting specific performance objectives. Due to the rapid growth of the Internet, the development life cycle of Web applications has been greatly compressed. Many applications were developed simply to demonstrate a new technology or capability. In some cases, they have become fully functional production applications supporting new business capabilities. Yet because of the origins of these applications, performance issues were not understood or addressed until the testing or delivery phase. Weekly press articles highlight the “war stories” of several major Web application rollouts that either were unable to attain their response-time objectives or failed to meet large surges in demand.
The key lesson to learn from these unpleasant stories is that you need to design performance into an application from the beginning at the conceptual design phase. A focus on performance itself is not sufficient. Successful deployment involves performance engineering. Performance engineering helps ensure good application design and development and enables the inclusion of performance principles and practices from start to end. Using information from several systems management processes provides quantifiable data to measure the implications of architectural and application logic changes.
Figure 1. Performance engineering focuses key processes on application performance.
IT operations • Performance management • Capacity management
Application development life cycle • Testing • Modeling
Performance engineering
A standard approach to performance engineering For complex business applications, employ each activity of performance engineering for thorough planning. The activities related to the performance engineering process are detailed in Figure 2. These activities, which must be performed at each major stage in the application development life cycle, include: 1. Model: A model represents an application’s key logic flows, and describes the expected flow of messages through the entire application from end to end. Creation of an application logic model is facilitated by creating use cases and message sequence diagrams. 2. Test: Conduct tests to capture empirical data, which can be used in the model for key application logic flows. When test data isn’t available (such as during an early life-cycle phase), use reasonable estimates based on comparable applications or experience.
2
Figure 2. Cycle of performance engineering activities 1. Model
4. Recalibrate
5. Conduct performance analysis
2. Test
3. Validate assumptions and scenarios
3. Validate assumptions and scenarios: Along with the model’s representation of the application logic, you need a set of scenarios that reflect expected business and application transaction volumes. Test and revisit these scenarios at each phase of the life cycle. 4. Recalibrate: When running models, you may uncover new insights regarding an application’s performance behavior. As test data comes in, you may also need to recalibrate to better reflect the environment. 5. Conduct performance analysis: Each activity involves the review and analysis of performance data to learn about the application, develop ways to improve performance or design alternative means for delivering the function faster. The performance engineering goal at each stage of application development is to better understand an application’s performance behavior and the effects of various application-logic and architecture options. Performance engineering, like capacity planning, employs an evolutionary approach. As an application is developed, you gain more information about its characteristics and target environment. This information helps you develop recommendations and make improvements prior to the application’s release.
3
Modeling is a key process of performance engineering and is used to understand the behavior of an application in different operating environments and implementations. Following are three levels of modeling used in this process, as seen in Figure 3.
Figure 3. Three levels of modeling
Enterprisewide
IT component Level of modeling
Application logic
Initiation
Design
Development Test
Transition
Production
Application Development Life Cycle phases
Use the application logic model as early as the conceptual design phase. Once the basic logic of the application and the key IT components (i.e., servers, network, database) are known, you can then create a model representing the application and use it to perform what-if scenarios. This process helps you examine application performance under various conditions. The IT component model explores in detail the application’s effect on a particular IT component, such as a database or an application server. Using the application logic model identifies the application’s “hot spots,” critical points of high demand. An understanding of these points identifies the specific components which should be modeled. Toward the end of the development life cycle, the enterprise model uses what you now know about the overall target environment, and helps you understand how this application performs with shared IT components and resources. The model results show the effect of other applications, as well as different load volume stresses on the developed application.
4
Logic templates enable quick development The Web environment poses new challenges to the performance engineering process by requiring that design choices be made quickly and accurately within a very compressed development life cycle. This change is driven both by the development of new business applications and the transition of legacy applications to the Web. The typical cycle of modeling, testing, validating and recalibrating shown in Figure 2 in many cases is unaffordable and too lengthy to support these rapid changes. However, there is a new approach that addresses these issues. The first step requires that you develop an overall, generic, systemwide model of your current Web environment. Next, you design a series of application logic templates that reflect the top ten application logic flows that you expect to use for the new applications. This assumes that these top ten logic flows are supported by a well defined reference architecture. Once these steps are completed and documented, you can quickly model new applications, providing that they map closely to one of the initial application flows. New application development requires a few hours with a performance engineer to describe the basic logic flow of the proposed application and map it into one of the modeling templates. You can then conduct a series of “what-if” analyses to determine whether the application will perform to expectations. This approach enables analysts to implement modeling and produce performance results in hours instead of weeks. In a Web application environment, where actual development may only take two weeks, this greatly improves your ability to plan for performance. The benefits of this approach can only be realized by investing in the time and effort necessary to develop the overall model and prototypes. The payoff is rapid turnaround in modeling application logic and architecture choices, based on the information you have gathered. Template-based modeling is an effective way to obtain the benefits of performance engineering in a Web development environment. The results can help ensure that business-critical applications perform well on the first day of production, while continuing to support a rapid application development cycle.
5
The skills of a performance engineer Implementing a quick or standard approach to Web-application performance engineering requires the skills of an analyst with experience in several competencies. Performance engineers are multitalented IT architects. They must be as savvy in current application technologies as they are in capacity planning, modeling and performance tuning. This unique combination of skills makes for an effective performance engineer, who can quickly capture and identify the performance impact of application design and architecture choices. Typical job responsibilities are included in the following job description:
Performance engineers — A challenging and never-ending job • Provide application performance design advice to developers, architects and technical support people who are involved in the design and deployment of the application • Ensure that good performance design principles and practices are applied by developers throughout an application’s development life cycle • Develop guidelines, checklists and acceptance criteria for performance walkthroughs, code reviews and performance tests • Conduct performance walkthroughs • Design, build, test, execute and validate application performance models.
6
Summary As Web applications expand to support e-business transactions and effective communications, performance engineering processes can help you effectively meet the growing demands of users. You may choose to implement a standard approach for more complex and strategic projects, and a template-based approach for projects that have quicker implementation requirements. Whatever choice you make, the return on investment in performance engineering can result in more satisfied users, increased availability of business functions and reduced risk of losing valuable customers.
For more information For more information on IBM Performance Management and Capacity Planning Services, call 1-800-426-4682 (in the U.S.), and 919-301-4141 (from outside the U.S.). You can also send an e-mail to us at
[email protected].
7
© Copyright
IBM Corporation 2000
IBM Global Services Route 100 Somers, NY 10589 U.S.A. Produced in the United States of America 06-00 All Rights Reserved IBM and the e-business logo are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. Other company, product and service names may be trademarks or service marks of others. References in this publication to IBM products and services do not imply that IBM intends to make them available in all countries in which IBM operates. IBM Integrated Technology Services organization in the United States, part of IBM Global Services, design and development of services offerings, has successfully achieved registration to the ISO 9001, 1994 international quality standard.
G563-0337-00