Learn how to build high-performance client/server systems from the leading expert on database and client/server software performance. Chris Loosley is the recognized expert on high-performance client/server, and here he shows software developers how to build client/server applications that run fast without hogging computer resources. This book reviews the basic principles of software performance engineering and how they apply to client/server systems, and then describes specific techniques and tools for building fast client/server applications.
Review By: Jim Simmons 05/11/2004
The primary focus of this book is Software Performance Engineering (SPE) as it applies to client/server systems. The authors view performance as a fundamental cornerstone of application quality. The emphasis is on proactive performance management, i.e. building performance into a system from the outset and making performance an integral part of all phases of the system lifecycle.
In the book’s introduction the authors state their three primary aims for the book: 1) to explain clearly the five performance factors and six basic principles of all performance-related thinking; 2) to draw conclusions and give guidelines that show how to apply those principles systematically to design, develop, and deploy effective applications for the distributed enterprise; and 3) to do so using language and examples that are understandable and interesting to any professional working with today’s information technologies.
The book comprises six parts.
Part I: Foundations covers basic foundational material needed throughout the book. It provides an overview of SPE, Client/Server technology and performance fundamentals. At the end of chapter 1 the authors provide a checklist of forty potential performance factors in a client/server environment, and in chapter 3 they provide a list of twenty-three components of an application’s flow that can contribute to four different response time measures.
Part II: Process covers the SPE process. The authors identify the ten fundamental activities of SPE:
- identify sensitivity of the application design to key business factors - specify business priorities and performance objectives - evaluate application, database and system design - summarize application performance profiles - predict performance on the target platform - monitor ongoing software performance - analyze observed performance data - confirm performance expectations - tune application or system performance - manage ongoing system capacity
They also discuss the performance lifecycle that every application goes through, and the various ways of approaching the lifecycle.
Part III: Principles covers SPE design principles. The authors explain how performance as a design goal fits into the larger subject of software engineering and discusses, in detail, the six SPE design principles:
- The Workload Principle--deals with minimizing total processing load - The Efficiency Principle--deals with maximizing the ratio of useful work to overhead - The Locality Principle--deals with grouping components based on their usage - The Sharing Principle--deals with sharing resources without creating bottlenecks - The Parallelism Principle--deals with exploiting opportunities for parallel processing - The Tradeoff Principle--deals with the need to make tradeoffs among workloads, computing resources and the SPE design principles themselves depending on the situation
Part IV: Applications takes the ideas and principles presented in the earlier sections to help answer the question: How should we use the technologies of distributed computing to build high-performance systems in the enterprise client/server environment?
Part V: Technologies looks at various technologies such as performance tools, relational database management systems, transaction managers and monitors, and data warehousing technologies, and discusses when and how they are useful, explains their performance characteristics, gives examples of their uses and suggests performance-related usage guidelines.
Part VI: Resources consists of a performance-oriented glossary of terms used in the book and an index of all the guidelines presented in the book grouped according to various topics.
The book is an excellent and very readable book on a topic that is often neglected in a systems engineering and development environment, namely system performance engineering and the need to make performance engineering an integral part of the lifecycle of a system. Performance is one area of software design that is frequently misunderstood, overlooked, ignored, or postponed, often with disastrous results. The complexity of a distributed, client/server environment only amplifies the problem.
To achieve and maintain acceptable levels of application performance and to achieve desired scalability of a system requires more than simple code tuning or tweaking of the computing environment. It requires an integrated approach that includes performance issues in all phases of the system lifecycle, namely System Performance Engineering. This book is as much a “sales pitch” for SPE as it is a treatise on the subject and should be required reading for all professional software systems engineers and software development engineers.
The book provides an outstanding overview of the performance engineering discipline with a focus on its application to client/server architectures and presents specific techniques and tools for building high-performance client/server applications.
Despite its size (700+ pages) the authors pepper the work with amusing anecdotes and insightful one-liners, with due credit to the contributors, which makes for easy reading. Scattered throughout the book are more than 250 guidelines, in shaded boxes, which summarize most of the key points in the book. An index of these guidelines is presented in the back of the book grouped by subject area.
The authors are recognized experts in the field of performance engineering of client/server systems. They draw from their years of experience to share their insights on how to build well designed, high performance client/server applications. Chris Loosley is one of the original developers of DB2, a principal of DataBase Associates International, and a regular speaker on client/server performance issues. Frank Douglas is a consultant specializing in the design and implementation of enterprise-wide distributed database systems.