Overview
Performance is not simply a matter of tuning the code or the computing environment - it starts with designing performance into the application from the outset, and spans all phases of the system life cycle. Drawing on his 25 years of experience, Chris Loosley explains the principles of software performance engineering and applies them to all facets of distributed systems architecture and design. Along the way, he summarizes his conclusions in over 250 useful, easily referenced guidelines. And he covers all the key topics, with chapters on Middleware, Architecture, Design, Tools, Databases, Replication, Warehousing, and Transaction Monitors. Loosley's conclusions about the architecture and design of enterprise systems challenge many current middleware trends. Applying the performance principles, Loosley explains why the key to creating truly scalable distributed systems is to decompose complex business applications into multitransaction workflows, and to use asynchronous data replication, parallel processing, and batching techniques.This is a lucid and logically-organized volume that discusses the practical aspects of building and managing stable distributed systems and applications. The premise of this publication is "...that we see performance as a fundamental cornerstone of application quality." To this end, the focus is on performance factors and principles that are used to formulate guidelines and draw conclusions. The book reviews the foundations and issues of client/server technology in an enterprise environment. It discusses models and management challenges, then delves into fundamental considerations of performance. Discusses specific elements that affect performance, perspectives, response times, throughput, workloads, benchmarks and system resources. It also analyzes the software performance engineering process and activities such as evaluating applications, identifying business priorities and objectives, database and system design alternatives and tuning applications. These activities are used to predict future performance. The authors introduce performance models, compare and analyze simulations and discuss benchmarking issues. A strong emphasis is placed on performance principles, and each of them is discussed in-depth, from software engineering design principles to workloads, efficiencies, locality (matching components to usage), sharing, parallelism and the trade-off principle.