Software Systems Architecture

Nick Rozanski and Eoin Woods

[ HOME ] [ BOOK ] [ REVIEWS ] [ EVENTS ] [ RESOURCES ] [ LIBRARY ] [ ABOUT ]

News

Big in Japan

A Japanese translation of our book was published on 2 December 2008 and has already received three five-star reviews on Amazon Japan.
Amazon Japan

Architectural Training

Rebecca Wirfs-Brock has developed a course, based in part on our book, which provides software architects with skills and knowledge that enable them to prepare, present, and explain their architectures to diverse stakeholders.
Wirfs-Brock Associates

Amazon Reviews

We now have fifteen five-star reviews on Amazon.com. Thanks to all who have provided such strong endorsements. We are really pleased that people are finding it so useful.
Reviews Page

Performance and Scalability Perspective

This chapter discusses two related quality properties for large information systems: performance and scalability. These properties are important because, in large systems, they can cause more unexpected, complex, and expensive problems late in the system lifecycle than most of the other properties combined.

Intel chief Gordon Moore observed in 1965 that the processing power of computer chips doubled approximately every eighteen to twenty-four months (this became known as "Moore's Law"). This remark seems to apply as much today as it did in 1965, so one would hope that by now performance and scalability would have receded as major concerns for most computer systems. Unfortunately, this isn't the case, for a couple of reasons.

The most fundamental reason for performance concerns is that the tasks we set our systems to perform have become much more complex over time, and the demands we make on the systems (in terms of the complexity, number of transactions, number of users, and so on) have also grown in ways that would have been unimaginable in the 1960s.

To make matters worse, the performance of a computer system depends on much more than the raw processing power of its hardware. The way that hardware is configured, the way resources are allocated and managed, and the way the software is written can have significant impacts (good or bad) on the system's ability to meet its performance goals. The simple fact is that we haven't become much better at managing the performance of our systems since the 1960s - and we've actually gotten worse in some ways, such as our lack of attention to runtime memory use.

The scalability property of a system is closely related to performance, but rather than considering how quickly the system performs its current workload, scalability focuses on the predictability of the system's performance as the workload increases.

  • Even if your system meets its goals today, how confident are you that it still will in the future?
  • Will it be able to cope with increased numbers of users, transactions, or messages?
  • Will it be able to handle increased complexity of processing?
  • How will it behave when unexpectedly presented with a huge increase in workload?

Applying the Performance and Scalability perspective to your architecture will help you answer all of these questions.

Desired Quality The ability of the system to predictably execute within its mandated performance profile and to handle increased processing volumes
Applicability Any system with complex, unclear, or ambitious performance requirements; systems whose architecture includes elements whose performance is unknown; and systems where future expansion is likely to be significant
Concerns- response time
- throughput
- scalability
- predictability
- hardware resource requirements
- peak load behavior
Activities- capture the performance requirements
- create the performance models
- analyze the performance models
- conduct practical testing
- assess against the requirements
- rework the architecture
Tactics- optimize repeated processing
- reduce contention via replication
- prioritize processing
- consolidate related workloads
- distribute processing over time
- minimize the use of shared resources
- partition and parallelize
- use asynchronous processing
- make design compromises
Pitfalls- imprecise performance and scalability goals
- unrealistic models
- use of simple measures for complex cases
- inappropriate partitioning
- invalid environment and platform assumptions
- too much indirection
- concurrency-related contention
- careless allocation of resources
- disregard for network and in-process invocation differences

find out more about the Performance and Scalability perspective ...

Reference

Viewpoints

Introduction

Functional

Information

Concurrency

Development

Deployment

Operational

Main Perspectives

Introduction

Security

Performance and Scalability

Availability and Resilience

Evolution

Other Perspectives

Accessibility

Development Resource

Internationalization

Location

Regulation

Usability