Muutke küpsiste eelistusi

Performance Assurance for IT Systems [Kõva köide]

(City University of Hong Kong)
  • Formaat: Hardback, 376 pages, kõrgus x laius: 234x156 mm, kaal: 662 g
  • Ilmumisaeg: 12-Aug-2004
  • Kirjastus: Auerbach
  • ISBN-10: 0849327784
  • ISBN-13: 9780849327780
Teised raamatud teemal:
  • Formaat: Hardback, 376 pages, kõrgus x laius: 234x156 mm, kaal: 662 g
  • Ilmumisaeg: 12-Aug-2004
  • Kirjastus: Auerbach
  • ISBN-10: 0849327784
  • ISBN-13: 9780849327780
Teised raamatud teemal:
King, a veteran consultant in the information technology industry, promotes the concept of performance assurance throughout the entire system lifecycle, examining not only the technical aspects of performance, but also the relevant processes and topics related to companies and people. His goal is for readers to understand the fundamental issues that surround performance and technology such that they can apply them to formulate a coherent customized approach to performance assurance. He mainly discusses hardware sizing, performance, and scalability for server-based systems; and emphasizes those stages before systems go into production. Distributed in the US by CRC. Annotation ©2004 Book News, Inc., Portland, OR (booknews.com)

Performance Assurance for IT Systems emphasizes the importance of addressing performance and technology-related issues from the beginning of the planning process, at the feasibility and bid stages. It promotes the concept of Performance Assurance throughout the entire system lifecycle, covering technology, relevant processes, and people-related topics.

This accessible, jargon-free book shows how to meet the increasing pressure to deliver proposals and systems in shorter timescales, emphasizing pragmatic, cost-effective, and well-designed systems. The book consists of two major parts: Part I covers the processes deployed throughout the system lifecycle, including the choice of technologies, client requirements, sizing, stress testing, and capacity management; Part II provides a technology foundation made up of brief primers on hardware and software technologies, discussing key factors that influence performance and helping management make informed decisions on technical risk.

The author includes references to problems encountered on "real life" projects, and provides insight valuable to a variety of IT professionals, from technical architects and developers to IT management.
WHAT THIS BOOK IS ABOUT xvii
ACKNOWLEDGMENTS xxv
PART 1: INDIVIDUAL AREAS OF INTEREST
1. Preparing for the Challenge
3(16)
1.1 Abstract
3(1)
1.2 Introduction
4(1)
1.3 In The Beginning
4(1)
1.4 The Need to Address New Applications
5(1)
1.5 Definition of Performance
5(2)
1.6 The Required Skills
7(5)
1.6.1 Understanding Hardware and Software Technologies
7(2)
1.6.2 Application Design
9(1)
1.6.3 Vendors
9(2)
1.6.4 Tools and Techniques
11(1)
1.7 Performance Assurance Within a Project Lifecycle
12(4)
1.7.1 Requirements/Functional Specification Stage
13(1)
1.7.2 Design Stage
13(1)
1.7.3 Code and Test
14(1)
1.7.4 Performance Acceptance Testing
15(1)
1.7.5 The All-Phases Stage
16(1)
1.7.6 Post-Implementation
16(1)
1.8 Summary
16(3)
2. Caveat Emptor (Let the Buyer Beware)
19(16)
2.1 Abstract
19(1)
2.2 Software Product Lifecycle
19(1)
2.3 Hardware Product Lifecycle
20(1)
2.4 Marketing
21(1)
2.5 Technical Reviews of Products
22(13)
2.5.1 Preparation
24(1)
2.5.2 Reading Vendor Literature
25(1)
2.5.3 Vendor Meetings
26(1)
2.5.4 Technical Review Checklist
27(5)
2.5.4.1 Architecture
27(1)
2.5.4.2 Scalability
28(1)
2.5.4.3 Resilience
29(1)
2.5.4.4 Performance
30(1)
2.5.4.5 Other Elements
31(1)
2.5.5 Custom Software Versus Product
32(1)
2.5.6 Drawing Conclusions
32(3)
3. Lies, Damned Lies, and Benchmarks
35(16)
3.1 Abstract
35(1)
3.2 Introduction
36(1)
3.3 Industry Benchmarks
36(2)
3.4 Vendor Benchmarks
38(1)
3.5 Independent Benchmarking
39(1)
3.6 In-House Benchmarking
39(1)
3.7 Tricks of the Trade
40(5)
3.7.1 Simplifying the Problem
40(1)
3.7.2 Improving Disk Performance
41(1)
3.7.3 Unrepresentative Deployment
42(1)
3.7.4 Minimizing Overheads
43(1)
3.7.5 Reporting
44(1)
3.8 Using Benchmarks
45(7)
3.8.1 Using Published Benchmarks
45(1)
3.8.2 Requesting Benchmarks
46(1)
3.8.3 In-House Benchmarks
47(1)
3.8.4 Drawing Conclusions from Benchmarks
48(3)
4. Nonfunctional Requirements and Solutions
51(1)
4.1 Abstract
51(1)
4.2 Introduction
52(1)
4.3 The Problems
52(21)
4.3.1 Authors of Requirements
53(1)
4.3.2 Poor Quality Requirements
53(2)
4.3.2.1 Poorly Written Requirements
54(1)
4.3.2.2 Introducing Risk by Requesting Bleeding-Edge Technology
54(1)
4.3.2.3 Technically Unrealistic Requirements
54(1)
4.3.2.4 Requirements That Bear No Resemblance to the Available Budget
54(1)
4.3.2.5 No Explanation of Any Ground Rules
55(1)
4.3.2.6 Inadequate Sizing Information
55(1)
4.3.2.7 Ambiguous and Even Contradictory Requirements
55(1)
4.3.3 What Do They Want?
55(2)
4.3.4 And Now for Something Completely Different
57(1)
4.4 Sizing Information
57(2)
4.5 Performance Requirements
59(3)
4.6 Hardware Sizing
62(1)
4.7 Hardware Deployment and Scalability
63(1)
4.7.1 Deployment Approaches
63(1)
4.7.2 Software Scalability
64(1)
4.8 Availability
65(1)
4.8.1 General Observations
65(2)
4.8.2 Building in Resilience
67(1)
4.9 The Need for Business Continuity
68(2)
4.10 Summary
70(3)
5. Hardware Sizing: The Crystal Ball Gazing Act
73(1)
5.1 Abstract
73(1)
5.2 The Challenge
74(1)
5.3 Summary of Hardware Sizing Approaches
75(32)
5.3.1 By Simple Analogy
75(1)
5.3.2 Vendor Sizing
75(1)
5.3.3 Using Benchmarks
76(1)
5.3.4 Detailed Transaction-Level Hardware Sizing
77(1)
5.3.5 High-Level Sizing
77(1)
5.4 High-Level Sizing Method
78(1)
5.4.1 Step 1: Information Gathering
78(4)
5.4.1.1 Raw Data Volumes
79(1)
5.4.1.2 Peak Period
79(1)
5.4.1.3 Identify Workloads and Users
79(2)
5.4.1.4 Transaction Rates
81(1)
5.4.2 Step 2: Assess the Credibility of the Available Information
82(2)
5.4.3 Step 3: Establish the Resource Profiles
84(2)
5.4.3.1 Magic Numbers
84(1)
5.4.3.2 Use of Benchmark Figures
84(1)
5.4.3.3 New Software Technology
85(1)
5.4.3.4 Adjusting Resource Profiles
86(1)
5.4.4 Step 4: Sizing Calculations
86(10)
5.4.4.1 The System to Be Sized
86(1)
5.4.4.2 Disk Capacity: Stage 1
87(2)
5.4.4.3 Resource Profiles: Stage 2
89(2)
5.4.4.4 Main Calculations: Stage 3
91(5)
5.4.5 Step 5: Consider Deployment Options
96(3)
5.4.5.1 Issues
96(1)
5.4.5.2 Other Environments
97(1)
5.5 Batch Processing Considerations
97(176)
5.5.1 Simple Background Batch
99(1)
5.5.2 Overnight Batch
99(1)
5.6 Sizing Software Products
100(1)
5.7 Sizing Reviews
101(1)
5.7.1 The Battleground
101(1)
5.7.2 Productive Approach
101(1)
5.7.3 Unproductive Approaches
102(2)
5.8 Deliverables
104(1)
5.9 Hardware Sizing Revisited
104(1)
5.10 Change
105(1)
5.11 Summary
106(1)
6. Bid Logistics
107(1)
6.1 Abstract
107(1)
6.2 The Challenge
107(1)
6.3 Bid Qualification
108(1)
6.4 The Political Dimension
109(1)
6.5 Teaming
109(1)
6.6 Dealing with Hardware and Software Vendors
110(2)
6.7 Iterative Sizing
112(1)
6.8 Bid Reviews
113(1)
6.9 Prototypes
113(1)
6.10 BAFO
114(1)
6.11 Documentation
114(1)
6.12 Summary
115(2)
7. Designing for Performance, Scalability, and Resilience
117(28)
7.1 Abstract
117(1)
7.2 Initial Observations
117(3)
7.2.1 Understanding the Work Done in Previous Stages
117(1)
7.2.2 Nirvana
118(1)
7.2.3 Does It Cost More?
119(1)
7.2.4 QA
119(1)
7.2.5 In-House Benchmarks
120(1)
7.2.6 Change
120(1)
7.3 Basic Design Principles
120(6)
7.3.1 Understanding Resource Usage Costs
120(1)
7.3.2 Balanced Hardware Configurations
121(1)
7.3.3 Partitioning
122(3)
7.3.4 Resilience
125(1)
7.4 General Thoughts and Guidelines
126(1)
7.4.1 Threads
126(1)
7.4.2 Communication Between Software Components
127(1)
7.4.3 Minimizing Overheads
128(1)
7.4.4 Going with the Flow
129(1)
7.4.5 The Only Transaction in the World
130(1)
7.4.6 Under the Covers
130(1)
7.4.7 Relational Databases
130(1)
7.4.8 Database Transactions
131(1)
7.4.9 File Handling
132(1)
7.4.10 Network Performance
133(1)
7.4.11 Publish and Subscribe
133(1)
7.4.12 Gluing Software
134(1)
7.4.13 Data Replication
135(1)
7.4.14 Partitioning the Problem
135(2)
7.4.15 Some Basic Hardware Considerations
137(1)
7.4.16 Server-Side Batch Processing
138(1)
7.4.17 Application Resilience
139(1)
7.4.18 Security Implications
139(1)
7.4.19 Evaluating Design Approaches
139(1)
7.4.20 Something for the Back Pocket
140(1)
7.4.21 Data Migration
141(1)
7.4.22 Backup and Recovery
142(1)
7.4.23 Archiving
143(1)
7.5 Coding and Testing
143(1)
7.6 Summary
144(1)
8. Awareness of Queues
145(6)
8.1 Abstract
145(1)
8.2 Queues
145(2)
8.3 Locks
147(1)
8.4 Tackling Delays
148(1)
8.5 Analytic and Simulation Modeling Tools
148(1)
8.6 Alternative Approaches
149(1)
8.7 Summary
150(1)
9. Nonfunctional Acceptance
151(10)
9.1 Abstract
151(1)
9.2 The Issues
151(1)
9.3 Stress Testing
152(7)
9.3.1 Scope and Logistics
152(1)
9.3.2 Planning
153(1)
9.3.3 Tools
153(2)
9.3.4 Workloads
155(1)
9.3.5 Data
156(1)
9.3.6 Test Environment
157(1)
9.3.7 Preparation
157(1)
9.3.8 Test Logistics
158(1)
9.3.9 Analyzing Results
159(1)
9.4 Soak Testing
159(1)
9.5 Operational-Readiness Testing
160(1)
9.6 Summary
160(1)
10. Post-Production
161(1)
10.1 Abstract
161(1)
10.2 Introduction
161(1)
10.3 Classic Capacity Management
162(5)
10.3.1 Performance Monitoring/Reporting
162(2)
10.3.2 Workload Management
164(1)
10.3.3 Capacity Planning
165(1)
10.3.4 Service Level Management
165(1)
10.3.5 Cost Management
166(1)
10.4 A Minimalist Approach to Capacity Management
167(2)
11. Softer Issues
169(1)
11.1 Abstract
169(1)
11.2 Introduction
169(1)
11.3 Devil's Advocate and Seductive Technology
171(1)
11.4 Communication
171(6)
11.4.1 Meetings
172(1)
11.4.2 Communication Within the Project Team
172(1)
11.4.3 Communication Across the Organization
173(1)
11.4.4 Communication Between Organizations
173(2)
11.5 Awareness of Cost
175(1)
11.6 Awareness of Time
175(1)
11.7 Overengineering
176(1)
11.8 Smoke-Filled Rooms
176(1)
11.9 Team Balance
177(1)
11.10 Multi-Tasking
177(1)
11.11 Client Responsibilities
178(1)
11.12 Technical Postmortem
179(1)
11.13 All-Rounders
179(2)
12. So What?
181(1)
12.1 "My Way"
181(2)
12.2 Informed Approach
183(4)
PART 2: TECHNICAL FOUNDATION
13. Introduction to Technology Tasters
187(1)
14. Operating Systems
189(150)
14.1 Basic Terminology
189(1)
14.2 Technology Outline
189(3)
14.2.1 Processes and Threads
190(1)
14.2.2 Memory Management
191(1)
14.2.3 Scheduling
192(1)
14.2.4 Device Management
192(1)
14.3 Performance
192(2)
14.4 General Observations
194(1)
14.5 Further Reading
194(1)
15. CPU Basics
195(1)
15.1 Basic Terminology
195(1)
15.2 Technology Outline
195(4)
15.2.1 Data and Instruction Caching
196(1)
15.2.2 Bit Width
196(1)
15.2.3 Pipelining Instructions
197(1)
15.2.4 Branch Prediction
198(1)
15.2.5 Parallelism
198(1)
15.3 Performance
199(1)
15.4 General Observations
199(1)
15.5 Further Reading
200(1)
16. Memory
201(1)
16.1 Basic Terminology
201(1)
16.2 Technology Outline
201(4)
16.2.1 SRAM (Static Random Access Memory)
203(1)
16.2.2 DRAM (Dynamic Random Access Memory)
203(2)
16.3 Performance
205(1)
16.4 General Observations
206(1)
16.5 Further Reading
206(1)
17. Hard Disk Basics
207(1)
17.1 Basic Terminology
207(1)
17.2 Technology Outline
207(7)
17.2.1 Basic Disk Accessing
208(4)
17.2.2 Logical Volumes
212(1)
17.2.3 RAID
212(2)
17.3 Performance
214(2)
17.4 General Observations
216(1)
17.5 Further Reading
216(1)
18. Server Infrastructure
217(1)
18.1 Basic Terminology
217(1)
18.2 Technology Outline
217(4)
18.2.1 System Bus
217(1)
18.2.2 CPUs
218(1)
18.2.3 Memory Controller
219(1)
18.2.4 IO Bus Bridge
219(1)
18.2.5 SMP Implementation
219(2)
18.3 Performance
221(1)
18.4 General Observations
222(1)
18.5 Further Reading
222(3)
19. Multiprocessors (Shared Memory)
225(1)
19.1 Basic Terminology
225(1)
19.2 Technology Outline
225(4)
19.2.1 SMP (or UMA)
226(1)
19.2.2 ccNUMA
227(1)
19.2.3 S-COMA
228(1)
19.2.4 R-NUMA
229(1)
19.2.5 Vendor Implementations
229(1)
19.3 Performance
229(1)
19.4 General Observations
230(1)
19.5 Further Reading
231(2)
20. Hard Disk: Fibre Channel, SAN, and NAS
233(1)
20.1 Basic Terminology
233(1)
20.2 Technology Outline
233(7)
20.2.1 Fibre Channel
233(3)
20.2.2 SAN
236(1)
20.2.3 Top-of-the-Range Disk Subsystems
237(1)
20.2.4 NAS (Network Attached Storage)
238(2)
20.3 Performance
240(1)
20.4 General Observations
240(3)
20.5 Further Reading
21. File Access Basics
243(1)
21.1 Basic Terminology
243(1)
21.2 Technology Outline
243(7)
21.2.1 UNIX File System Basics
243(2)
21.2.2 UNIX File System Refinements
245(1)
21.2.3 NTFS
246(1)
21.2.4 Network File System
247(2)
21.2.5 Cache-Coherent Shared File System
249(1)
21.2.6 Shared File System - Direct Connections via SAN
249(1)
21.3 Performance
250(1)
21.4 General Observations
251(1)
21.5 Further Reading
251(2)
22. Relational Database Basics
253(1)
22.1 Basic Terminology
253(1)
22.2 Technology Outline
253(10)
22.2.1 Network Communication
255(1)
22.2.2 SQL Processing
256(4)
22.2.3 Data Access
260(1)
22.2.4 Transactions
261(1)
22.2.5 Parallel SQL Processing
262(1)
22.3 Performance
263(1)
22.4 General Observations
264(1)
22.5 Further Reading
265(2)
23. Back-End Server Clusters
267(1)
23.1 Basic Terminology
267(1)
23.2 Technology Outline
268(7)
23.2.1 Background
268(1)
23.2.2 High Availability
268(4)
23.2.3 Shared Resources
272(1)
23.2.4 Scalability
273(2)
23.2.4.1 Multiple Server Shared File System
273(1)
23.2.4.2 Multiple Node Database
273(2)
23.3 Performance
275(2)
23.3.1 Heartbeat Checking
275(1)
23.3.2 Speed of Service Fail-Over
276(1)
23.3.3 Full Site Fail-Over
276(1)
23.3.4 Clusterwide Disk Sharing
276(1)
23.4 General Observations
277(1)
23.5 Further Reading
278(1)
24. Network Basics
279(1)
24.1 Basic Terminology
279(1)
24.2 Technology Outline
279(11)
24.2.1 The Seven Layers
279(1)
24.2.2 IP
280(1)
24.2.3 Brief Overview of WAN Technologies
281(2)
24.2.4 Basic LAN Topologies
283(1)
24.2.5 Hubs and Switches
284(1)
24.2.6 Inter-Ethernet LAN Connectivity
284(4)
24.2.7 Inter-Data Center Communication
288(1)
24.2.8 Scalable Networks
288(1)
24.2.9 Citrix and Microsoft Terminal Servers
288(2)
24.3 Performance
290(2)
24.4 General Observations
292(1)
24.5 Further Reading
293(2)
25. Firewalls
295(1)
25.1 Basic Terminology
295(1)
25.2 Technology Outline
295(2)
25.2.1 Functionality
295(2)
25.2.2 High Availability (HA)
297(1)
25.2.3 Scalability
297(1)
25.3 Performance
297(1)
25.4 General Observations
298(1)
25.5 Further Reading
299(2)
26. Server Load Balancing
301(1)
26.1 Basic Terminology
301(1)
26.2 Technology Outline
302(5)
26.2.1 Load Balancing Approaches
302(1)
26.2.2 Software Load Balancing
302(1)
26.2.3 Hardware Approach
303(1)
26.2.4 Resilience
304(1)
26.2.5 The Implications of State
305(2)
26.3 Performance
307(1)
26.4 General Observations
308(1)
26.5 Further Reading
309(2)
27. Web Server and Cache Server
311(1)
27.1 Basic Terminology
311(1)
27.2 Technology Outline
312(7)
27.2.1 Web Server
312(3)
27.2.1.1 Static Content
312(2)
27.2.1.2 Dynamic Content
314(1)
27.2.2 Cache Server
315(4)
27.3 Performance
319(1)
27.4 General Observations
320(1)
27.5 Further Reading
320(1)
28. LDAP Server
321(1)
28.1 Basic Terminology
321(1)
28.2 Technology Outline
321(2)
28.2.1 Client/Server Communication
322(1)
28.2.2 Replication
322(1)
28.2.3 Deployment
323(1)
28.3 Performance
323(1)
28.4 General Observations
324(1)
28.5 Further Reading
324(3)
29. Modern Server-Side Development Technologies
327(1)
29.1 Basic Terminology
327(1)
29.2 Technology Outline
328(3)
29.2.1 Background
328(1)
29.2.2 Architecture
329(1)
29.2.2.1 Presentation
329(1)
29.2.2.2 Business Logic
329(1)
29.2.2.3 Connectivity
329(1)
29.2.2.4 Execution
330(1)
29.2.2.5 Services
330(1)
29.2.3 Programming Languages
330(1)
29.2.4 Memory
330(1)
29.2.5 Hardware Deployment Options
331(1)
29.3 Performance
331(1)
29.3.1 Threading
331(1)
29.3.2 Run-Time Environment
332(1)
29.3.3 Garbage Collection
332(1)
29.3.4 Intercomponent Communication
333(1)
29.3.5 Mixing Technologies
333(1)
29.3.6 Reusing Objects
334(1)
29.3.7 General Design Issues
334(1)
29.3.8 Session State
334(1)
29.3.9 Data Access
335(1)
29.3.10 Transactions
335(1)
29.3.11 XML and Web Services
335(1)
29.3.12 Programming Language
336(1)
29.4 General Observations
336(1)
29.5 Further Reading
337(2)
Index 339
King, Brian