Available:*
Library | Item Barcode | Call Number | Material Type | Item Category 1 | Status |
---|---|---|---|---|---|
Searching... | 30000010139859 | TK5105.52 S34 2007 | Open Access Book | Book | Searching... |
Searching... | 33000000018347 | TK5105.52 S34 2007 | Open Access Book | Gift Book | Searching... |
On Order
Summary
Summary
As a developer, you are aware of the increasing concern amongst developers and site architects that websites be able to handle the vast number of visitors that flood the Internet on a daily basis. Scalable Internet Architectures addresses these concerns by teaching you both good and bad design methodologies for building new sites and how to scale existing websites to robust, high-availability websites. Primarily example-based, the book discusses major topics in web architectural design, presenting existing solutions and how they work. Technology budget tight? This book will work for you, too, as it introduces new and innovative concepts to solving traditionally expensive problems without a large technology budget. Using open source and proprietary examples, you will be engaged in best practice design methodologies for building new sites, as well as appropriately scaling both growing and shrinking sites. Website development help has arrived in the form of Scalable Internet Architectures .
Author Notes
Theo Schlossnagle is a principal at OmniTI Computer Consulting
Table of Contents
Introduction | p. 1 |
1 Scaling Up (and Down) | p. 5 |
Defining Scalability | p. 5 |
Why Do We Need to Scale? | p. 6 |
Scaling Up Gone Wrong | p. 6 |
What Goes Up Should Go Down | p. 7 |
Real-World Considerations | p. 8 |
Being a Good Architect | p. 9 |
2 Principles for Avoiding Failure | p. 11 |
Working in Production Environments | p. 12 |
The Dot Bomb and Its Effect on Building Large Systems | p. 13 |
Stability and Control | p. 14 |
Rapid Development | p. 15 |
Unit Testing | p. 16 |
Version Control | p. 18 |
Version Control in Action | p. 20 |
A Different Approach to Disaster Recovery | p. 22 |
Good Design | p. 23 |
3 Mission-Critical Environments | p. 25 |
High Availability | p. 26 |
Monitoring | p. 27 |
Monitoring Implementations | p. 27 |
Criteria for a Capable Monitoring System | p. 29 |
Coping with Release Cycles | p. 30 |
Internal Release Cycles | p. 31 |
External Release Cycles | p. 33 |
The Cost of Complexity Shackled to Large Architectures | p. 34 |
Looking for Speed | p. 34 |
It's Not a One-Man Mission | p. 36 |
4 High Availability. HA! No Downtime?! | p. 37 |
Why High Availability and Load Balancing Are Different | p. 41 |
Load Balancing Is Not High Availability | p. 42 |
High Availability Is Not Load Balancing | p. 42 |
Traditional High Availability-The Whitepaper Approach | p. 43 |
Surveying the Site | p. 45 |
Pouring Concrete-Foundry ServerIron | p. 45 |
High Availability Rethought (Peer-Based) | p. 49 |
Peer-Based High Availability in the Real World | p. 52 |
Growing Seamlessly | p. 55 |
Diverging from the Web: High Availability for Email, DNS, and So On | p. 55 |
Pouring Concrete | p. 56 |
5 Load Balancing and the Utter Confusion Surrounding It | p. 61 |
Load Balancing Basics | p. 61 |
IP-Friendly Services | p. 63 |
Web Switches | p. 65 |
IP Virtual Servers | p. 67 |
Application Layer Load Balancers | p. 67 |
A Real Use | p. 69 |
Abusing the Term | p. 71 |
The Web and Beyond | p. 72 |
Session Stickiness: A Fatal Misconception | p. 73 |
So, Which One Is the Best? | p. 74 |
6 Static Content Serving for Speed and Glory | p. 75 |
What's So Tricky? | p. 76 |
Context Switching | p. 77 |
Resource Utilization | p. 78 |
The Goal | p. 81 |
Building the Cluster | p. 82 |
Setting Goals | p. 83 |
Tackling Content Distribution | p. 83 |
A Priori Placement | p. 84 |
Cache-on-Demand | p. 86 |
Choosing a Web Serving Platform | p. 88 |
Examining Our Availability Requirements | p. 90 |
Choosing an OS | p. 90 |
Wackamole | p. 91 |
Reasoning | p. 91 |
Installation | p. 91 |
Testing the High Availability | p. 94 |
Serving Content | p. 98 |
World Domination | p. 99 |
DNS Round-Trip Times | p. 101 |
Anycast-Shared IP | p. 102 |
A Final Review | p. 104 |
Was It Worth It? | p. 104 |
7 Static Meets Dynamic Adding Caches to Reduce Costs | p. 105 |
Types of Caches | p. 107 |
Layered/Transparent Cache | p. 107 |
Integrated (Look-Aside) Cache | p. 109 |
Data Cache | p. 112 |
Write-Thru and Write-Back Caches | p. 113 |
Distributed Cache | p. 114 |
Deploying Caches | p. 117 |
Serving a News Site | p. 117 |
Simple Implementation | p. 119 |
Introducing Integrated Caching | p. 122 |
Tackling User Data | p. 127 |
Two-Tier Execution | p. 130 |
Caching Is Powerful | p. 134 |
8 Distributed Databases Are Easy, Just Read the Fine Print | p. 137 |
What Is a Distributed Database? | p. 137 |
Data Resiliency | p. 137 |
Operational Failover | p. 138 |
Increased Query Performance | p. 138 |
Complete Reliability | p. 138 |
Geographically Distributed Operation | p. 139 |
Why Is Replication So Hard? | p. 139 |
Multimaster Replication | p. 140 |
Two-Phase Commit (2PC) | p. 141 |
EVS Engine | p. 142 |
Master-Master Replication | p. 144 |
Master-Slave Replication | p. 144 |
Changing the Scope of the Problem | p. 144 |
Operation and Changeset Replication | p. 145 |
News Site Revisited | p. 148 |
Choosing Technologies and Methods | p. 148 |
Implementing Cross-Vendor Database Replication | p. 151 |
Same Vendor Database Replication Is Easy | p. 166 |
9 Juggling Logs and Other Circus Tricks | p. 169 |
Why Is Logging a Challenge? | p. 169 |
Classic Solutions | p. 171 |
Periodic "Batch" Aggregation | p. 171 |
Real-time Unicast Aggregation | p. 172 |
Passive "Sniffing" Log Aggregation | p. 173 |
Logging Done Right | p. 175 |
The Architecture (Servers, Software, and Roles) | p. 176 |
Building It | p. 177 |
Subscribers-spreadlogd | p. 178 |
Publishers-mod_log_spread | p. 179 |
Understanding the Beauty of the Beast | p. 180 |
Real-time Analysis | p. 181 |
Real-time Monitoring | p. 183 |
Passive Log Aggregation for Metrics | p. 187 |
Visualizing Data with RRDtool | p. 188 |
A Bit About RRDtool | p. 189 |
Setting Up Our Databases | p. 189 |
Collecting Metrics | p. 191 |
Visualizing Data Through RRDtool | p. 194 |
Being Hit in the Face with Data | p. 196 |
Generic Uses | p. 197 |
10 The Right Tool for the Job | p. 199 |
Who's Online? | p. 200 |
Technical Setup | p. 200 |
Defining Scope | p. 206 |
Stepping Back | p. 207 |
Thinking Outside the Box | p. 208 |
Testing the Solution | p. 223 |
Who's Online Reviewed | p. 226 |
Appendix A Spread | p. 227 |
Group Communication | p. 227 |
Introducing...Spread | p. 229 |
Installation and Configuration | p. 231 |
Getting Started | p. 232 |
A Practical Example | p. 241 |
Index | p. 247 |