Software Architecture in Practice Introduction to Performance Engineering.

Slides:



Advertisements
Similar presentations
Tales from the Lab: Experiences and Methodology Demand Technology User Group December 5, 2005 Ellen Friedman SRM Associates, Ltd.
Advertisements

ITIL Foundation Course V1
Client/Server Computing (the wave of the future) Rajkumar Buyya School of Computer Science & Software Engineering Monash University Melbourne, Australia.
Cultural Heritage in REGional NETworks REGNET Project Meeting Content Group
Welcome to Middleware Joseph Amrithraj
Performance and Reliability 101 Brent Cromarty Ping Identity
1 Real-time End-to-End Transaction Visibility into Distributed and Mainframe Applications Steve Saville Mainframe Technical Account Manager – Compuware.
ITIL: Service Transition
Introduction CSCI 444/544 Operating Systems Fall 2008.
1 SEDA: An Architecture for Well- Conditioned, Scalable Internet Services Matt Welsh, David Culler, and Eric Brewer Computer Science Division University.
Capacity Planning and Predicting Growth for Vista Amy Edwards, Ezra Freeloe and George Hernandez University System of Georgia 2007.
8.
Software Engineering and Middleware: a Roadmap by Wolfgang Emmerich Ebru Dincel Sahitya Gupta.
Introduction to z/OS Basics © 2006 IBM Corporation Chapter 8: Designing and developing applications for z/OS.
©Company confidential 1 Performance Testing for TM & D – An Overview.
Chapter 9: Moving to Design
Advanced Distributed Software Architectures and Technology group ADSaT 1 Scalability & Availability Paul Greenfield CSIRO.
Capacity planning for web sites. Promoting a web site Thoughts on increasing web site traffic but… Two possible scenarios…
Introduction to client/server architecture
How to Cluster both Servers and Storage W. Curtis Preston President The Storage Group.
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Chapter 9 Overview  Reasons to monitor SQL Server  Performance Monitoring and Tuning  Tools for Monitoring SQL Server  Common Monitoring and Tuning.
H-1 Network Management Network management is the process of controlling a complex data network to maximize its efficiency and productivity The overall.
Web Application Architecture: multi-tier (2-tier, 3-tier) & mvc
Measuring zSeries System Performance Dr. Chu J. Jong School of Information Technology Illinois State University 06/11/2012 Sponsored in part by Deer &
Computer System Lifecycle Chapter 1. Introduction Computer System users, administrators, and designers are all interested in performance evaluation. Whether.
Self-Adaptive QoS Guarantees and Optimization in Clouds Jim (Zhanwen) Li (Carleton University) Murray Woodside (Carleton University) John Chinneck (Carleton.
SANPoint Foundation Suite HA Robert Soderbery Sr. Director, Product Management VERITAS Software Corporation.
Cloud Computing for the Enterprise November 18th, This work is licensed under a Creative Commons.
Research on cloud computing application in the peer-to-peer based video-on-demand systems Speaker : 吳靖緯 MA0G rd International Workshop.
Chapter 9 Elements of Systems Design
Cloud Computing 1. Outline  Introduction  Evolution  Cloud architecture  Map reduce operation  Platform 2.
Performance Concepts Mark A. Magumba. Introduction Research done on 1058 correspondents in 2006 found that 75% OF them would not return to a website that.
© Pearson Education Limited, Chapter 16 Physical Database Design – Step 7 (Monitor and Tune the Operational System) Transparencies.
◦ What is an Operating System? What is an Operating System? ◦ Operating System Objectives Operating System Objectives ◦ Services Provided by the Operating.
Lecture on Computer Science as a Discipline. 2 Computer “Science” some people argue that computer science is not a science in the same sense that biology.
Building Quality into Web Applications - Meeting the Challenges of Testing and Usability Paula Duchnowski CQA, CSTE (608)
© 2009 IBM Corporation Best Practices in making production - grade applications -A Performance Architect’s View Archanaa Panda, Bharathraj – IBM, HiPODS,
Module 10: Maintaining High-Availability. Overview Introduction to Availability Increasing Availability Using Failover Clustering Standby Servers and.
Deploy With Confidence Minimize risks Improve business output Optimize resources.
April 26, CSE8380 Parallel and Distributed Processing Presentation Hong Yue Department of Computer Science & Engineering Southern Methodist University.
Kyung Hee University 1/41 Introduction Chapter 1.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
11 CLUSTERING AND AVAILABILITY Chapter 11. Chapter 11: CLUSTERING AND AVAILABILITY2 OVERVIEW  Describe the clustering capabilities of Microsoft Windows.
Data Communications and Networks Chapter 9 – Distributed Systems ICT-BVF8.1- Data Communications and Network Trainer: Dr. Abbes Sebihi.
1 Copyright © 2005, Oracle. All rights reserved. Following a Tuning Methodology.
Tackling I/O Issues 1 David Race 16 March 2010.
Capacity Planning in a Virtual Environment Chris Chesley, Sr. Systems Engineer
Cloud Computing from a Developer’s Perspective Shlomo Swidler CTO & Founder mydrifts.com 25 January 2009.
Configuring SQL Server for a successful SharePoint Server Deployment Haaron Gonzalez Solution Architect & Consultant Microsoft MVP SharePoint Server
Cofax Scalability Document Version Scaling Cofax in General The scalability of Cofax is directly related to the system software, hardware and network.
9 Systems Analysis and Design in a Changing World, Fifth Edition.
ITIL: Service Transition
Software Architecture in Practice
Informatica PowerCenter Performance Tuning Tips
Job Scheduling in a Grid Computing Environment
GlassFish in the Real World
CHAPTER 3 Architectures for Distributed Systems
Hyper-V Cloud Proof of Concept Kickoff Meeting <Customer Name>
Introduction to client/server architecture
Software Architecture in Practice
#01 Client/Server Computing
Software Project Planning &
Upgrading to Microsoft SQL Server 2014
CSE8380 Parallel and Distributed Processing Presentation
Subject Name: Operating System Concepts Subject Number:
Database System Architectures
From Use Cases to Implementation
#01 Client/Server Computing
Presentation transcript:

Software Architecture in Practice Introduction to Performance Engineering

Credits Jens Edlef Møller –Executive IT Architect in IBM Global Business Services. –Typical role as lead architect on complex delivery projects around the world. –IBMs Nordic leader of performance engineering consultancy. –M.Sc. in computer science from University of Southern Denmark (1993).

Agenda : - Introduction to Performance Engineering - Mathematical models of performance and scalability - Exercise (theoretical) : Lunch (sponsored by the institute) : - Architecture and factors influencing performance - Performance test and analysis - Exercise (practical) - Designing for performance - Introduction to mandatory project

What is Performance? Definition: –Performance: The degree to which a system or component accomplishes its designated functions within given constraints, such as speed, accuracy, or memory usage. [IEEE ] In general: –Predictability and timeliness of response is what performance is about. –A “faster” system is not always enough; for example, a real-time system requires repeatable, predictable results

Performance Requirements You need to understand what the true requirements are. A simple general statement such as “response times below 1 second” is not sufficient. You must clarify exactly what it means –What is the requirement? (Response time, transaction time or throughput?) –Under which circumstances? (24*7 ?) –How and where is it measured? (end user or server side?) –For which workload is it valid? (transactions and data) –For which users or systems? (how many users?) –Which evidence is needed? (95% percentile? Average?) Even if your client doesn’t give you well defined requirements he will most likely not accept a solution with poor performance !

Performance Terminology The terms most often used –Response time Amount of time system takes to process a transaction This is typically what people perceives as the performance! –Througput Transactions per second your application can handle (online) Number of records your application can handle over time (batch) … but these should also be considered –Capacity The amount of work that can be completed over a period of time –Utilization The current amount of work being completed divided by the capacity –Scalability The ability to support more work by increasing the ressources in the system –Latency The amount of time a message takes to traverse a system

Terminology – a highway analogy The response time is the time required for me to drive from Aarhus to the office in Copenhagen. (Measured in time units) The capacity is the maximum number of cars per hour the E45 can handle without congestion. (Measured in cars per time unit) The utilization is the throughput divided by the capacity. (Measured as percentage) The throughput is the number of cars passing E45 in a certain hour. (Measured in cars per time unit)

Balance performance and other QAs

End users’ perception of performance Interaction perception: –People treat computers as people too. –The steps in people’s sense of time are as follows: Instantaneous: < 0.2 seconds (for example, typing) Immediate: < 1 second (like-minded colleague / aggressive stranger) Fast: < 2 seconds (frequent or standard request) Normal: 3 seconds (typical conversation) Extended: 5 seconds (slow speaker - ideally needs to make sound in the long pauses to show they are still speaking) Too long: about 17 seconds (Other party gives up. “Get back to me when you have an answer”) (Miller, 1968: “Response time in man-computer conversational transactions”) Performance does not mean very high speed. It means an acceptable and predictable level of responsiveness

Cheaper to address performance early "Software Defect Reduction Top 10 List," Basili and Boehm, The IEEE Computing Journal, IEEE Computer Society, Vol. 34, No. 1, January 2001

Performance Engineering “Performance engineering within systems engineering, encompasses the set of roles, skills, activities, practices, tools, and deliverables applied at every phase of the Systems Development Life Cycle which ensures that a solution will be designed, implemented, and operationally supported to meet the non-functional performance requirements defined for the solution.” –Wikipedia Performance should never come as a surprise at the end of the project. The two approaches to managing system performance are: –1. Cross your fingers, close your eyes, and hope. –2. Consider performance from the start. Always take the second approach!

Good performance engineering begins early Can I tune my way out of this production performance problem? Can I reduce performance problems in production by better testing? Can I reduce performance problems in test by better design and development? Can I prevent performance issues by good NFRs, architectural decisions and planning? The sooner I start thinking about performance the better Solution timeline FeasibilityDesignDevelopmentTestRun & Maintain

Performance Engineering Process Performance Engineering is a full lifecycle process –from project launch and until operation IBM “Performance Engineering and Management Method” (PEMM)

Performance Engineering Process Know what to do in the different phases –Architecture and Design Ensure well defined and reasonable performance requirements Estimation and performance modeling Design the system to meet the performance requirements –Development and Test Code with good performance in mind. Good performance doesn’t come accidentially! Do the right amount of performance testing in due time to allow for optimizations –Operations Monitor the performance of the system Implement capacity and performance management processes

Testing and Optimization An iterative problem-solving process … which must follow a structured approach Beyond performance testing, part 2:

Performance Engineering must continue into the operation of the system Mature Capacity Management processes comprise three sub- processes, according to ITIL –Business Capacity Management Purpose: To translate business needs and plans into capacity and performance requirements for services and IT infrastructure and to ensure that future capacity and performance needs can be fulfilled. –Service Capacity Management Purpose: To manage, control and predict the performance and capacity of operational services. This includes initiating proactive and reactive action to ensure that the performances and capacities of services meet their agreed targets. –Resource Capacity Management Purpose: To manage, control and predict the performance, utilization and capacity of IT resources and individual IT components

But don’t consider it too late! To minimise the risk of performance issues, capacity management practices must interlock with delivery projects The ITIL® Application Management life cycle

Web Layer Architecture Browser Simplified view - no network equipment - no storage - single string - … Web Server Application Server Database Server

Web Layer Architecture Browser End user response time is the sum of all elements Web Server Application Server Database Server App Server DB Server Web Server LAN WAN Browser t Service time Wait time

Improving performance App Server DB Server Web Server LAN WAN Browser t Service time Wait time Improving performance is typically a matter of reducing the response time of one or more parts of the total chain

Every system has a limit When the load on the system is increased it will eventually reach a point where performance degrades Wait times grow in a busy system (More on this in next session) Beyound this point non-linear scalability

In a scalable system the limit can be moved Scalability is the ability to support more work by increasing the ressources in the system –Typically by upgrading/adding hardware SW must scale as well as HW –Logical’ resources such as locks, shared data structures, thread pools, and connection pools can be critical Application design often limits scale-out goals, e.g. because of: –Single threaded designs –Session state management –Shared data access

2 types of scalability Vertical Scaling (Scaling up) –Upgrade the configuration of nodes in the system Processors Memory I/O Storage Horizontal Scaling (Scaling out) –Parallellize processing Additional servers Load balancing Must design scalability in from the start –Difficult to retrofit during build! –Very difficult in live system … Browser Web Server DB Server Browser Web Server DB Server Browser Web Server DB Server Browser Web Server DB Server Web Server Load Balancer

Scalability and the other NFR’s Typically, horizontal scaling increases the availability of the clustered application at the cost of increased maintenance Active-Active clustering –All nodes in the cluster participate in servicing requests –Typically requires load balancer to distribute load Active-Passive clustering –One (primary) node service requests –Another (secondary) node is standby to take over if primary node fails –Typically requires shared storage or synchronization In a complex system a combination is often used