Fowa Miami 09 Cloud Computing Workshop
-
Upload
mark-masterson -
Category
Technology
-
view
8.933 -
download
5
description
Transcript of Fowa Miami 09 Cloud Computing Workshop
Mark Masterson | http://jroller.com/MasterMark
How to build your app quickly (and cheaply?) using the Cloud
Mark Masterson | http://jroller.com/MasterMark
Intro(Admin, facilities, who I am)
Mark Masterson | http://jroller.com/MasterMark
Agenda
•Overview•Walk-through deployment on PaaS and IaaS•Break•Considerations
•Costs / Economics•Architecture
•Discussion
Mark Masterson | http://jroller.com/MasterMark
Goals for the workshop
Mark Masterson | http://jroller.com/MasterMark
Cloud computing. WTF?
Mark Masterson | http://jroller.com/MasterMark
WAN
(Frame Relay, ISDN,
etc.)
Router
Router
LAN A
LAN B
Mark Masterson | http://jroller.com/MasterMark
For this workshop, it means: elastic compute resources, charged for like
a utility
Mark Masterson | http://jroller.com/MasterMark
Why bother?
Mark Masterson | http://jroller.com/MasterMark
What’s a “web app”?
Mark Masterson | http://jroller.com/MasterMark
http://www.flickr.com/photos/psd/6732568/in/set-666533/
Mark Masterson | http://jroller.com/MasterMark
http://www.flickr.com/photos/psd/6733371/in/set-666533/
Mark Masterson | http://jroller.com/MasterMark
http://www.flickr.com/photos/psd/6733187/in/set-666533/
Mark Masterson | http://jroller.com/MasterMark
http://www.flickr.com/photos/gopal1035/322084210/
Mark Masterson | http://jroller.com/MasterMark
http://www.flickr.com/photos/psd/58054545/
Mark Masterson | http://jroller.com/MasterMark
Mark Masterson | http://jroller.com/MasterMark
Mark Masterson | http://jroller.com/MasterMark
It’s more than static content.
Mark Masterson | http://jroller.com/MasterMark
So that means, it’s about any and all commercial web sites, right?
Mark Masterson | http://jroller.com/MasterMark
No. Don’t think so.
Mark Masterson | http://jroller.com/MasterMark
Griefer alert: is this just flamebait?
Mark Masterson | http://jroller.com/MasterMark
No. In the context of cloud computing, it makes a difference.
Mark Masterson | http://jroller.com/MasterMark
A big difference.
Mark Masterson | http://jroller.com/MasterMark
Apps do something.
Mark Masterson | http://jroller.com/MasterMark
Content doesn’t.
Mark Masterson | http://jroller.com/MasterMark
Cloud computing is about doing something.
Mark Masterson | http://jroller.com/MasterMark
http://www.nytimes.com/2006/06/14/technology/14search.html
Mark Masterson | http://jroller.com/MasterMark
“Microsoft is adding 10k servers a month to their infrastructure”
http://blogs.zdnet.com/microsoft/?p=1391
Mark Masterson | http://jroller.com/MasterMark
“That’s one Facebook per month”
http://www.datacenterknowledge.com/archives/2008/04/23/facebook-now-running-10000-web-servers/http://www.istartedsomething.com/20080812/microsoft-enviroment-video-reveals-server-numbers-power/
Mark Masterson | http://jroller.com/MasterMark
Amazon talks a lot about the demand…
Mark Masterson | http://jroller.com/MasterMark
Animoto went from 50 to 3400 Amazon virtual servers in two days
Mark Masterson | http://jroller.com/MasterMark
http://aws.typepad.com/aws/2008/04/animoto---scali.html
Mark Masterson | http://jroller.com/MasterMark
The New York Times converted 4TB of TIFFs to PDFs in a day.
For $240
Mark Masterson | http://jroller.com/MasterMark
http://open.blogs.nytimes.com/2007/11/01/self-service-prorated-super-computing-fun/http://open.blogs.nytimes.com/2008/05/21/the-new-york-times-archives-amazon-web-services-timesmachine/
http://www.roughtype.com/archives/2008/11/the_new_economi.php
Mark Masterson | http://jroller.com/MasterMark
And Amazon shows everyone who will sit still for more than 5 seconds
the following picture:
Mark Masterson | http://jroller.com/MasterMark
http://aws.typepad.com/aws/2008/05/lots-of-bits.html
Mark Masterson | http://jroller.com/MasterMark
Assumption: Mom+Pop ISP ™ cannot compete with this.
Mark Masterson | http://jroller.com/MasterMark
Are Mom+Pop doomed?
Mark Masterson | http://jroller.com/MasterMark
Ultimately, that depends on you, the developers of web apps.
Mark Masterson | http://jroller.com/MasterMark
It’s going to depend on decisions you make about architectural and
engineering concerns.
Mark Masterson | http://jroller.com/MasterMark
Architecture is about making design choices. Engineering is about knowing your materials.
Mark Masterson | http://jroller.com/MasterMark
Making use of the Cloud is an architectural and engineering
challenge.
Mark Masterson | http://jroller.com/MasterMark
So what are the architectural choices? What are the materials?
Mark Masterson | http://jroller.com/MasterMark
http://rationalsecurity.typepad.com/blog/2009/01/cloud-computing-taxonomy-ontology-please-review.html
http://cloudcomputing.sys-con.com/node/811519
http://www.collab-ogce.org/gce08/images/7/76/LamiaYouseff.pdf
SADIST-PIMP
SPI (SaaS, Paas, IaaS)
Mark Masterson | http://jroller.com/MasterMark
http://www.mindmeister.com/maps/show_public/15936058
Mark Masterson | http://jroller.com/MasterMark
But wait! Once that’s sorted, you have to consider contextual
dimensions…
Mark Masterson | http://jroller.com/MasterMark
http://cloudforum.googlegroups.com/web/Metaverse+Decomposition.pdf
The Radeztsky Cube
Mark Masterson | http://jroller.com/MasterMark
http://cloudforum.googlegroups.com/web/Metaverse+Decomposition.pdf
Mark Masterson | http://jroller.com/MasterMark
IOW, your choices are influenced by whether you are integrating established apps, or writing a
green-field app….
Mark Masterson | http://jroller.com/MasterMark
And whether your architecture will be entirely in the public Cloud, or a
mix of public and private resources.
Mark Masterson | http://jroller.com/MasterMark
For the sake of this workshop, we’re going to refer to the SPI
model…
Mark Masterson | http://jroller.com/MasterMark
SaaS
PaaS
IaaS
SPI Model
Mark Masterson | http://jroller.com/MasterMark
We’re going to assume a green-field app, deployed entirely on the
public Cloud…
Mark Masterson | http://jroller.com/MasterMark
We’re going to focus on the scenario of “your code, running
elsewhere” – not so much on mashups and re-use of SaaS
Mark Masterson | http://jroller.com/MasterMark
And we’re going to examine the question of PaaS vs. IaaS for that
app.
Mark Masterson | http://jroller.com/MasterMark
Goals for the workshop
Mark Masterson | http://jroller.com/MasterMark
OK. So what is PaaS?
Mark Masterson | http://jroller.com/MasterMark
Platform As A Service
Mark Masterson | http://jroller.com/MasterMark
Some examples: Google App Engine, Bungee, Force.com,
Heroku
Mark Masterson | http://jroller.com/MasterMark
Characterized by…
Mark Masterson | http://jroller.com/MasterMark
Constraints on language and design
Mark Masterson | http://jroller.com/MasterMark
A high level programming model
Mark Masterson | http://jroller.com/MasterMark
A specific model of multi-tenancy
Mark Masterson | http://jroller.com/MasterMark
Takes care of low level concerns
Mark Masterson | http://jroller.com/MasterMark
Google App Engine
Mark Masterson | http://jroller.com/MasterMark
Mark Masterson | http://jroller.com/MasterMark
Mark Masterson | http://jroller.com/MasterMark
Mark Masterson | http://jroller.com/MasterMark
Mark Masterson | http://jroller.com/MasterMark
Mark Masterson | http://jroller.com/MasterMark
That’s it.
Mark Masterson | http://jroller.com/MasterMark
Constraints on language and design
(Python + BigTable + Goog Svcs)
Mark Masterson | http://jroller.com/MasterMark
A high level programming model(The WebApp (or other Python)
framework, Datastore APIs, Memcache, etc.)
Mark Masterson | http://jroller.com/MasterMark
A specific model of multi-tenancy
(Google’s BigTable + GFS platform)
Mark Masterson | http://jroller.com/MasterMark
Takes care of the low level concerns
(Scales for you (up and down), distribution across cluster nodes,
load balancing, replication of data, etc. )
Mark Masterson | http://jroller.com/MasterMark
Pretty cool.
Mark Masterson | http://jroller.com/MasterMark
Infrastructure As A Service
Mark Masterson | http://jroller.com/MasterMark
Characterized by…
Mark Masterson | http://jroller.com/MasterMark
No constraints on language or design
Mark Masterson | http://jroller.com/MasterMark
A high level architectural model
Mark Masterson | http://jroller.com/MasterMark
A specific model of multi-tenancy
Mark Masterson | http://jroller.com/MasterMark
Takes care of very few low level concerns
Mark Masterson | http://jroller.com/MasterMark
This is a LOT more work. ;)
Mark Masterson | http://jroller.com/MasterMark
Amazon Web Services
Mark Masterson | http://jroller.com/MasterMark
Amazon Web Services•Elastic Compute Cloud (EC2)•SimpleDB•Simple Storage Service (S3)•Simple Queue Service (SQS)•EC2 Elastic Block Store (EBS)•Other stuff…
•Cloudfront•DevPay•Flexible Payments Service (FPS)•Mechanical Turk•Alexa
Mark Masterson | http://jroller.com/MasterMark
By and large, “Amazon” means “EC2”
Mark Masterson | http://jroller.com/MasterMark
EC2 is the only AWS service that one deploys to
Mark Masterson | http://jroller.com/MasterMark
You just use the other services – whether from an EC2 instance or
anywhere else on the Web is irrelevant
Mark Masterson | http://jroller.com/MasterMark
The core “unit” of EC2 is the Amazon Machine Image – AMI
Mark Masterson | http://jroller.com/MasterMark
An AMI is a virtual machine image – a VM
Mark Masterson | http://jroller.com/MasterMark
A VM is just a (very large) file. Like a live ISO disk image. Typically, it is
some distro of Linux.
Mark Masterson | http://jroller.com/MasterMark
Amazon uses Xen, an open source VM system
http://www.xen.org/
Mark Masterson | http://jroller.com/MasterMark
The key to IaaS is that you can use any app architecture you like
Mark Masterson | http://jroller.com/MasterMark
The drawback with IaaS is that you therefore have to design your own
app architecture
Mark Masterson | http://jroller.com/MasterMark
Generally speaking, this is the same task (with the same effort) that you would need for physical
hardware hosted at an ISP
Mark Masterson | http://jroller.com/MasterMark
App servers, load balancers, databases, clusters, replication,
networking…
Mark Masterson | http://jroller.com/MasterMark
You sort it out yourself
Mark Masterson | http://jroller.com/MasterMark
With Amazon, this begins with obtaining your credentials
Mark Masterson | http://jroller.com/MasterMark
Mark Masterson | http://jroller.com/MasterMark
Then you download the command line tools and set them up…
Mark Masterson | http://jroller.com/MasterMark
Mark Masterson | http://jroller.com/MasterMark
You use the tools to proceed through the AMI workflow
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
AMI ID
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
Mark Masterson | http://jroller.com/MasterMark
•Create keypair•Save the private key locally•ec2-add-keypair <descriptive keypair name>
•Launch selected instance•Using AMI ID and keypair name•ec2-run-instances <AMI ID> -k <keypair name>•Returns the Instance ID
•Examine the running instance•ec2-describe-instances <instance ID>
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
…
Mark Masterson | http://jroller.com/MasterMark
Let’s pick that apart…
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
…Reservation ID
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
…AWS Access Key ID
Mark Masterson | http://jroller.com/MasterMark
AWS Access Key ID
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
…Security Group ID
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
…Instance ID
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
…AMI ID
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
…External DNS host name
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
… Internal DNS host name
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
…
Current state of the instance
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
…
Keypair name
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
…
AMI Launch Index
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
…
Instance type
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
…
Launch time
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
…
Availability Zone ID
Mark Masterson | http://jroller.com/MasterMark
Availability zones are a bit complicated…
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
Mark Masterson | http://jroller.com/MasterMark
Other IaaS providers may (or may not) have similar capabilities
Mark Masterson | http://jroller.com/MasterMark
The point is that, unlike GAE, here is yet another detail that you need
to think about
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
Mark Masterson | http://jroller.com/MasterMark
•Open network access to the instance•ec2-authorize <security group name> -p <port number> •Can include options like restricting access to a specific (public) IP address
•-s <IP address/CIDR subnet range>•Eg. “-s your_public_IP_address/32”* for just your host
•At a minimum, you need to configure port 22 for SSH access•Connect to the instance with SSH
•ssh –i <private keyfile> root@<public DNS host name>•Note: with “ec2-get-console-output”, you can get (among other things) the SSH host key fingerprint, before logging on with SSH. At login, you can compare to be sure there’s no “man in the middle”
•Begin modifying the instance
Mark Masterson | http://jroller.com/MasterMark
Once you’ve modified the image, you “bundle” it (which is a kind of snapshot), upload the bundle to
S3, and register it with EC2
Mark Masterson | http://jroller.com/MasterMark
There are hundreds of publicly available AMIs for use as templates
Mark Masterson | http://jroller.com/MasterMark
And, finally, with some set of your own AMIs, you can begin running
instances of your app
Mark Masterson | http://jroller.com/MasterMark
And that brings us to the runtime considerations…
Mark Masterson | http://jroller.com/MasterMark
AKA – how does your app scale horizontally?
Mark Masterson | http://jroller.com/MasterMark
A brief scalability refresher: vertical scalability is “get a bigger box”
Mark Masterson | http://jroller.com/MasterMark
Horizontal scalability is “add more copies of the same box”
Mark Masterson | http://jroller.com/MasterMark
To put it bluntly, if your app can't efficiently scale in a horizontal
fashion, you’re wasting your time on the Cloud
Mark Masterson | http://jroller.com/MasterMark
On GAE, under the covers tech like BigTable, GFS and the legendary
Map/Reduce are taking care of this for you
Mark Masterson | http://jroller.com/MasterMark
In an IaaS context like AWS, you have to solve the problem yourself
Mark Masterson | http://jroller.com/MasterMark
EC2 has a SOAP API that you can invoke – whether you do so from
outside EC2, or from within a running AMI is irrelevant
Mark Masterson | http://jroller.com/MasterMark
Invoking the EC2 API to launch and terminate instances from a running
instance gives you the ability to create dynamic horizontal
scalability
Mark Masterson | http://jroller.com/MasterMark
Your load balancer AMI could start extra instances of your web server
AMI to meet demand…
Mark Masterson | http://jroller.com/MasterMark
And turn them back off, when demand subsides
Mark Masterson | http://jroller.com/MasterMark
And there are numerous ways to exploit this capability
Mark Masterson | http://jroller.com/MasterMark
From RightScale to Scalr to Gigaspaces, Hadoop, Terracotta
and countless others
Mark Masterson | http://jroller.com/MasterMark
Combined with the other elements of AWS, like S3, SQS, EBS and
SimpleDB, you can design a system that competes favorably with GAE
Mark Masterson | http://jroller.com/MasterMark
This is what “elastic” means
Mark Masterson | http://jroller.com/MasterMark
To repeat: this is a LOT more work. ;)
Mark Masterson | http://jroller.com/MasterMark
No constraints on language or design
(AMIs can be any Linux or Windows server platform, and your
app can be anything that runs on those platforms)
Mark Masterson | http://jroller.com/MasterMark
A high level architectural model
(The core services of AWS provide a foundation, and do constrain your design – for example, you
need horizontal scalability)
Mark Masterson | http://jroller.com/MasterMark
A specific model of multi-tenancy
(AMIs are securely isolated from one another, but the underlying
hardware is all shared)
Mark Masterson | http://jroller.com/MasterMark
Takes care of very few low level concerns
(You roll your own)
Mark Masterson | http://jroller.com/MasterMark
Before we wrap up “deploying to AWS”, however, let’s look at some alternatives to the command line
tools from Amazon
Mark Masterson | http://jroller.com/MasterMark
In terms of managing running instances, and the overall
configuration of things, AWS provides its own Web UI
Mark Masterson | http://jroller.com/MasterMark
https://console.aws.amazon.com/ec2/home#c=EC2&s=Home
Mark Masterson | http://jroller.com/MasterMark
https://console.aws.amazon.com/ec2/home#c=EC2&s=Instances
Mark Masterson | http://jroller.com/MasterMark
https://console.aws.amazon.com/ec2/home#c=EC2&s=Images
Mark Masterson | http://jroller.com/MasterMark
https://console.aws.amazon.com/ec2/home#c=EC2&s=BundleTasks
Mark Masterson | http://jroller.com/MasterMark
http://status.aws.amazon.com/
Mark Masterson | http://jroller.com/MasterMark
An ecosystem of 3rd party providers has emerged around AWS
Mark Masterson | http://jroller.com/MasterMark
Some of them are specialized in managing VMs
Mark Masterson | http://jroller.com/MasterMark
http://elasticserver.com/
Mark Masterson | http://jroller.com/MasterMark
http://elasticserver.com/portals
Mark Masterson | http://jroller.com/MasterMark
http://elasticserver.com/site/lamp
Mark Masterson | http://jroller.com/MasterMark
http://elasticserver.com/site/lamp
Mark Masterson | http://jroller.com/MasterMark
http://elasticserver.com/build-status
Mark Masterson | http://jroller.com/MasterMark
Mark Masterson | http://jroller.com/MasterMark
https://elasticserver.com/ec2/
Mark Masterson | http://jroller.com/MasterMark
Mark Masterson | http://jroller.com/MasterMark
Mark Masterson | http://jroller.com/MasterMark
https://elasticserver.com/byo/create
Mark Masterson | http://jroller.com/MasterMark
https://elasticserver.com/my/packages
Mark Masterson | http://jroller.com/MasterMark
https://elasticserver.com/new-server
Mark Masterson | http://jroller.com/MasterMark
There are other vendors offering similar services, eg. rPath
Mark Masterson | http://jroller.com/MasterMark
And there is a spectrum between the simplicity of GAE and the
complexity of AWS…
Mark Masterson | http://jroller.com/MasterMark
Let’s take a look at Elastra, for example
Mark Masterson | http://jroller.com/MasterMark
https://cloud.elastra.com/elastra/
Mark Masterson | http://jroller.com/MasterMark
https://cloud.elastra.com/elastra/
Mark Masterson | http://jroller.com/MasterMark
https://cloud.elastra.com/elastra/
Mark Masterson | http://jroller.com/MasterMark
https://cloud.elastra.com/elastra/
Mark Masterson | http://jroller.com/MasterMark
https://cloud.elastra.com/elastra/
Mark Masterson | http://jroller.com/MasterMark
https://cloud.elastra.com/elastra/
Mark Masterson | http://jroller.com/MasterMark
https://cloud.elastra.com/elastra/
Mark Masterson | http://jroller.com/MasterMark
Finally, to wrap up our quick overview of IaaS, let’s look at
Rightscale…
Mark Masterson | http://jroller.com/MasterMark
https://my.rightscale.com/dashboard
Mark Masterson | http://jroller.com/MasterMark
https://my.rightscale.com/dashboard
Mark Masterson | http://jroller.com/MasterMark
https://my.rightscale.com/dashboard
Mark Masterson | http://jroller.com/MasterMark
https://my.rightscale.com/dashboard
Mark Masterson | http://jroller.com/MasterMark
https://my.rightscale.com/dashboard
Mark Masterson | http://jroller.com/MasterMark
https://my.rightscale.com/dashboard
Mark Masterson | http://jroller.com/MasterMark
https://my.rightscale.com/dashboard
Mark Masterson | http://jroller.com/MasterMark
https://my.rightscale.com/dashboard
Mark Masterson | http://jroller.com/MasterMark
Goals for the workshop
Mark Masterson | http://jroller.com/MasterMark
But first, a short break…(Jeopardy theme song plays)
Mark Masterson | http://jroller.com/MasterMark
Goals for the workshop
Mark Masterson | http://jroller.com/MasterMark
What are some of the questions you need to answer, to decide
between PaaS and Iaas?
Mark Masterson | http://jroller.com/MasterMark
How quickly do you need to go to market?
Mark Masterson | http://jroller.com/MasterMark
How fast do you need to iterate versions of the app?
Mark Masterson | http://jroller.com/MasterMark
What are your pre-existing platform needs, if any?
Mark Masterson | http://jroller.com/MasterMark
What are your security, compliance, regulatory
requirements?
Mark Masterson | http://jroller.com/MasterMark
What is your capacity for system architecture and design work?
Mark Masterson | http://jroller.com/MasterMark
SaaS
PaaS
IaaSFree
dom
FRO
M C
onsid
erati
ons
Freedom TO
Differentiate
SPI Model
http://twitter.com/gblnetwkr
Mark Masterson | http://jroller.com/MasterMark
SaaS
PaaS
IaaS
POW
ER o
f spe
ed a
nd a
gilit
yPO
WER to control
SPI Model
http://twitter.com/gblnetwkr
Mark Masterson | http://jroller.com/MasterMark
Goals for the workshop
Mark Masterson | http://jroller.com/MasterMark
What do things really cost?
Mark Masterson | http://jroller.com/MasterMark
Simple LAMP app. 1 box as a load balancer / proxy, 4 web server boxes, and one larger box for a
database server
Mark Masterson | http://jroller.com/MasterMark
http://laughingsquid.net/hosting/
$84 / month
(6 x Giant)
Mark Masterson | http://jroller.com/MasterMark
http://order.1and1.com:80/xml/order/ServerRoot
$900 / month(1 x Biz1 + 4 x Biz1 +
1 x Enterprise II)
Mark Masterson | http://jroller.com/MasterMark
So, let’s see what the equivalent setup costs on AWS…
Mark Masterson | http://jroller.com/MasterMark
Now, AWS bills in units of things like server hours, IOs per month,
GB of storage and bandwidth actually used, etc.
Mark Masterson | http://jroller.com/MasterMark
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/
Mark Masterson | http://jroller.com/MasterMark
24 hours × 30 days =
---------------------- 720 hours in a month
----------------------
720 hours × 5 small AWS Instances =
---------------------- 3600 hours
----------------------
+ 720 hours of a large AWS instance+ 5000 GB network bandwidth
+ 3200 GB disk space (added to the default space on the instances)+ 50 mil. IORs
+ 30 daily backups----------------------
roughly equivalent to 1+1 …
Mark Masterson | http://jroller.com/MasterMark
http://calculator.s3.amazonaws.com/calc5.html
$2233 / month
Mark Masterson | http://jroller.com/MasterMark
http://calculator.s3.amazonaws.com/calc5.html
Mark Masterson | http://jroller.com/MasterMark
Despite best efforts, this is still quite imprecise, and apples vs.
oranges, but…
Mark Masterson | http://jroller.com/MasterMark
Even more importantly…
Mark Masterson | http://jroller.com/MasterMark
This is an incredibly stupid way to set up and use AWS
Mark Masterson | http://jroller.com/MasterMark
http://calculator.s3.amazonaws.com/calc5.html
$528/ month
Mark Masterson | http://jroller.com/MasterMark
Still not “cheap”, though…
Mark Masterson | http://jroller.com/MasterMark
That’s because the key to “elastic computing” isn’t being able to turn
on servers at will…
Mark Masterson | http://jroller.com/MasterMark
It’s about being able to turn them off.
Mark Masterson | http://jroller.com/MasterMark
Let’s rewind to the an earlier part of this discussion…
Mark Masterson | http://jroller.com/MasterMark
What’s a web app?
Mark Masterson | http://jroller.com/MasterMark
Whatever it is, we said “it’s not static content”…
Mark Masterson | http://jroller.com/MasterMark
And I said that makes a big difference
Mark Masterson | http://jroller.com/MasterMark
Why is that? Well, the unwritten social contract of the ‘Net says:
“you can’t turn static content off”
Mark Masterson | http://jroller.com/MasterMark
Apps do something
Mark Masterson | http://jroller.com/MasterMark
But they generally don’t do it 24x7
Mark Masterson | http://jroller.com/MasterMark
Slicing and dicing your design to strictly demarcate static content from active has always been a
Good Idea ™
Mark Masterson | http://jroller.com/MasterMark
In a cloud computing context, it’s not just a good idea – it’s
imperative
Mark Masterson | http://jroller.com/MasterMark
What are your usage patterns? When are your peak loads, on
average?
Mark Masterson | http://jroller.com/MasterMark
What can you turn off?
Mark Masterson | http://jroller.com/MasterMark
And you have to be clever about it…
Mark Masterson | http://jroller.com/MasterMark
Your production usage may not even be the place you can save the
most money…
Mark Masterson | http://jroller.com/MasterMark
Consider: you want to develop the next version of your app
Mark Masterson | http://jroller.com/MasterMark
You need resources for your developers to do that, and you need a place for them to test
Mark Masterson | http://jroller.com/MasterMark
So, maybe you wind up renting 3 more servers from 1+1
– $300 / month
Mark Masterson | http://jroller.com/MasterMark
But, when you examine usage patterns, you find that your
developers are only using the boxes for 3 hours each day
Mark Masterson | http://jroller.com/MasterMark
http://calculator.s3.amazonaws.com/calc5.html
$17/ month
Mark Masterson | http://jroller.com/MasterMark
Perhaps even more importantly, you’ve made no commitment here
– once your dev / test phase is over, so are the costs
Mark Masterson | http://jroller.com/MasterMark
Calculating costs is complex, and entirely context dependent
Mark Masterson | http://jroller.com/MasterMark
There are significant potential savings, but only if you’re clever
Mark Masterson | http://jroller.com/MasterMark
Goals for the workshop
Mark Masterson | http://jroller.com/MasterMark
Since we worked out, sometime in the early ‘90s, what the
architecture of a “client / server” system design looked like…
Mark Masterson | http://jroller.com/MasterMark
There's been a general consensus about a sort of a canonical
architecture for so-called “N-tier systems”
Mark Masterson | http://jroller.com/MasterMark
Presentation
Service Facáde
Application Logic
Data Persistence
Mark Masterson | http://jroller.com/MasterMark
Web Server
App Server
Database Server
Mark Masterson | http://jroller.com/MasterMark
So, we’ve talked about the need for horizontal scalability in the
Cloud
Mark Masterson | http://jroller.com/MasterMark
What does that imply?
Mark Masterson | http://jroller.com/MasterMark
Well, as already suggested, among other things, parallelism
Mark Masterson | http://jroller.com/MasterMark
Parallelism has significant consequences
Mark Masterson | http://jroller.com/MasterMark
It leads one to try to avoid stateful interactions
Mark Masterson | http://jroller.com/MasterMark
To prefer asynchronous communications (messages)…
Mark Masterson | http://jroller.com/MasterMark
One finds oneself on the front lines of the REST War ™ – the battle of
the RESTafarians vs. the established IT Universe
http://www.dehora.net/journal/2008/07/25/patterns-of-web-architecture/http://www.dehora.net/journal/2008/08/15/rest-as-an-engineering-discipline/
http://www.infoq.com/articles/webber-rest-workflow/http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven/http://www.redmonk.com/jgovernor/2009/02/12/the-rest-of-the-cloud/
http://delicious.com/mastermark/rest/
Mark Masterson | http://jroller.com/MasterMark
And it forces one to think strange things about optimal patterns of
storing and accessing data
Mark Masterson | http://jroller.com/MasterMark
Like sharding one’s data to meet resource demands
http://highscalability.com/unorthodox-approach-database-design-coming-shard/
Mark Masterson | http://jroller.com/MasterMark
Questions like “is two-phase commit a feature? Or a bug?”
begin to seem important
Mark Masterson | http://jroller.com/MasterMark
New terms, like CAP, Paxos and BASE creep into conversations about “eventual consistency”
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.20.1495http://en.wikipedia.org/wiki/Paxos_algorithmhttp://queue.acm.org/detail.cfm?id=1394128
http://www.allthingsdistributed.com/2008/12/eventually_consistent.html
Mark Masterson | http://jroller.com/MasterMark
This was happening anyway, driven by the clash of Web architecture with the established IT universe
Mark Masterson | http://jroller.com/MasterMark
Cloud computing’s possibilities are accelerating the process
Mark Masterson | http://jroller.com/MasterMark
There is an emerging consensus about what the consequences of all this are for app architectures
Mark Masterson | http://jroller.com/MasterMark
“The canonical cloud architecture that has evolved revolves around
dynamically scalable CPUs consuming asynchronous,
persistently queued events.”
http://highscalability.com/canonical-cloud-architecture
Mark Masterson | http://jroller.com/MasterMark
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1632&categoryID=102
Mark Masterson | http://jroller.com/MasterMark
•Use scalable ingredients•Eg. Hadoop on EC2
•Keep ingredients loosely coupled•All communication via persistent messaging
•Assume constant failure•Design things to persist state, restart from last known good, and continue their own tasks even if all around them fail•Consider things like re-tries with exponential back-off•Build IN redundancy
•Learn about things like the POSA Blackboard pattern, tuplespaces, and Map / Reduce
Mark Masterson | http://jroller.com/MasterMark
http://www.amazon.com/How-Write-Parallel-Programs-Course/dp/026203171X/
Read this book!
Mark Masterson | http://jroller.com/MasterMark
And if your needs / budget require or can accommodate it, consider
RAIC
Mark Masterson | http://jroller.com/MasterMark
Redundant Array of Independent Cloud providers
http://www.jroller.com/MasterMark/entry/raic_pronounce_it_rake_please
Mark Masterson | http://jroller.com/MasterMark
http://www.jroller.com/MasterMark/entry/raic_pronounce_it_rake_please
Mark Masterson | http://jroller.com/MasterMark
Why bother?
Mark Masterson | http://jroller.com/MasterMark
Web Server
App Server
Database Server
Mark Masterson | http://jroller.com/MasterMark
Mainframe
Mark Masterson | http://jroller.com/MasterMark
http://www.flickr.com/photos/dvdmerwe/231593469/
Mark Masterson | http://jroller.com/MasterMark
http://www.flickr.com/photos/sigkyrre/1091616886/
Mark Masterson | http://jroller.com/MasterMark
http://twitter.com/gblnetwkrhttp://en.wikipedia.org/wiki/Consumerization
Mark Masterson | http://jroller.com/MasterMark
http://twitter.com/gblnetwkr
Mark Masterson | http://jroller.com/MasterMark
Join the conversation:http://groups.google.com/group/cloud-computing/
http://groups.google.com/group/cloudforumhttp://tech.groups.yahoo.com/group/cloudcomputing-tech/
… and please come talk to us, as well …http://twitter.com/mastermark
http://www.jroller.com/MasterMark/
Thanks!