SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
Following the familiar “Design Patterns” format, expert cloud developer Chris Moyer introduces proven patterns for cloud platforms from Amazon, Google, and other providers. Moyer demonstrates these patterns at work through extensive example code and case study applications for Amazon Web Services (AWS). As you increasingly move to the cloud, you’ll constantly encounter the challenges this book solves. You’ll rely on it for years–whenever you need a cloud solution you can trust.
Cloud Computing Conundrum: An Interview with Chris Moyer
Cloud Computing Reference Architecture: Data Ingress and Storage Access
Building Applications in the Cloud: Making Software a Service
Download the sample pages (includes Chapter 2 and Index)
Preface xv
About the Author xx
Introduction 1
What Is Cloud Computing? 1
The Evolution of Cloud Computing 2
The Main Frame 3
The PC Revolution 4
The Fast Internet 5
The Cloud 6
HTML5 and Local Storage 7
The Dawn of Mobile Devices 9
Threading, Parallel Processing, and Parallel Computing 10
How Does Cloud-Based Development Differ from Other Application Development? 11
What to Avoid 13
Getting Started in the Cloud 14
Selecting a Cloud Pattern 16
Implementing a Cloud Pattern 17
PART I: CONCEPTS
Chapter 1 Fundamentals of Cloud Services 21
Origins of Cloud Computing 21
What Is a Cloud Service? 23
Compute 24
Storage 24
Connectivity 24
The Legacy Pattern 25
Just Because It’s in the Cloud Doesn’t Mean It Scales 26
Failure as a Feature 27
Consistency, Availability, and Partition Tolerance 28
Consistency 29
Availability 30
Partition Tolerance 30
Eventual Consistency 31
Summary 32
Chapter 2 Making Software a Service 33
Tools Used in This Book 34
Signing Up for Amazon Web Services 34
Installing boto 35
Setting Up the Environment 36
Testing It All 38
What Does Your Application Need? 39
Data Layer 40
Introducing the AWS Databases 41
Application Layer 47
Using Elastic Load Balancing 47
Adding Servers to the Load Balancer 49
Automatically Registering an Instance with a Load Balancer 51
HTTP and REST 53
The Header 53
The Body 57
Methods 58
Authorization Layer 62
Client Layer 64
Browser-Based Clients 65
Native Applications 66
Summary 67
Chapter 3 Cloud Service Providers 69
Amazon Web Services 69
Simple Storage Service (S3) 71
CloudFront 77
Simple Queue Service (SQS) 80
Elastic Compute Cloud (EC2) 83
Elastic Block Storage (EBS) 88
Elastic Load Balancing (ELB) 91
SimpleDB 93
Relational Database Service (RDS) 95
Simple Notification Service (SNS) 102
Virtual Private Cloud (VPC) 106
Google Cloud 108
AppEngine 108
Google Storage 111
Rackspace Cloud 112
CloudFiles 112
CloudServers 113
CloudSites 113
Summary 114
PART II: PATTERNS
Chapter 4 Designing an Image 117
Prepackaged Images 119
Overview 119
Reasons for Usage 119
Description 120
Implementation 120
Example 122
Summary 125
Singleton Instances 127
Overview 127
Reasons for Usage 127
Description 128
Implementation 128
Example 128
Summary 130
Prototype Images 131
Overview 131
Reasons for Usage 131
Description 132
Implementation 132
Example 133
Summary 135
Chapter 5 Designing an Architecture 137
Adapters 139
Overview 139
Reasons for Usage 140
Description 140
Implementation 140
Example 141
Summary 146
Facades 147
Overview 147
Reasons for Usage 148
Description 148
Implementation 148
Example 149
Summary 152
Proxies and Balancers 153
Overview 153
Reasons for Usage 153
Description 154
Implementation 154
Example 155
Summary 158
Chapter 6 Executing Actions on Data 159
Queuing 161
Overview 161
Reasons for Usage 162
Description 162
Implementation 163
Example 163
Summary 170
Command 173
Overview 173
Reasons for Usage 173
Description 174
Implementation 174
Example 175
Summary 179
Iterator 181
Overview 181
Reasons for Usage 181
Description 182
Implementation 182
Example 183
Summary 185
Observer 187
Overview 187
Reasons for Usage 188
Description 188
Implementation 188
Example 189
Summary 191
Chapter 7 Clustering 193
The n-Tier Web Pattern 195
Overview 195
Reasons for Usage 196
Description 196
Implementation 197
Example 198
Summary 210
Semaphores and Locking 211
Overview 211
Reasons for Usage 211
Description 212
Implementation 212
Example 213
Summary 218
Map/Reduce 219
Overview 219
Reasons for Usage 220
Description 220
Implementation 220
Example 222
Summary 226
PART III: PROJECTS
Chapter 8 A Simple Weblog 229
Storage 229
Creating a Domain 231
The User Object 232
The Post Object 234
The Comment Object 237
Application 240
A Brief Introduction to WSGI 241
The DB Handler 243
The User, Post, and Comment Handlers 248
Spam Classification 249
Presentation 253
Setting Up the HTTP Proxy 254
Posts 255
Comments 266
Deploying 272
Starting the Base Instance 272
Installing the Software 273
Installing the Application 275
Installing Apache 276
Bundling the Image 277
Creating the Proxy 279
Summary 279
Chapter 9 A Weblog Using Marajo 281
Initializing the Environment 282
handlers 283
resources 283
static 283
templates 283
Creating the Resources 284
Creating the Handlers 286
Configuring the Application 287
Creating the Templates 288
Running the Application 289
Creating Custom Templates 289
The List Template 289
The Edit Template 292
Summary 296
Glossary 297
Index 307