May 12, 2015
Cloud ConstraintsHarper Reed
[email protected]@harper
Hi!
I build a lot of applications.
BIG
Cloud Computing is Awesome
Cloud computing has a lot of constraints
ArchitectureDevelopmentDeployment
Architecture
You never know if a resource may disappear/fail.
Examples:EC2 InstancesCloud Server Resources
Development
The languages and supported technologies may be limited
Examples: App Engine: python/javaHeroku: ruby
Deployment
Old style simple deployment is gone.
Examples:App engine deploy toolsEC2 Tool chainHeroku tool chain
Google App Engine
Google App Engine
A platform for developing and hosting web applications in Google-managed data centers.
App Engine
Time per request: 30 secBlobstore size: 2 GBHTTP response size: 10 MBDatastore item size: 1 MBApplication code size: 150 MB
Time per request
Limit the time allowed per request
Query Constraints
App Engine used to only return resultsets with 1000 results.
Datastore
Often PaaS providers limit the type and kind of queries you can do over a datastore.
Joins are not your friend
Port 80
You can only serve and make requests on port 80.
Misc tools/apis
QueueSearchMap ReduceDatastoreEmail
see: http://addons.heroku.com/
Servers
EC2 and Rackspace Cloud
Servers offer a lot of freedom. They are also a pain in the ass (don't trust them).
Architecture
Architecting server infrastructures in clouded environments is MUCH different than the old fashioned big iron way.
see: elastic scaling, IaaS vs PaaS
Cloud Server Constraints
Less constraints than PaaS providers. Often emulates a real server.
see: rackspace cloud
Some real constaints
Transient serversArchitect for failureDeployment
Transient servers
Your servers may/will disappear. You need to build that assumption into your infrastructure.
Architect for failure
When you don't control the resource and hardware - you will experience failures.
Build around the potential for failure.
Deployment
The nature of cloud servers let's you pop up 100s or 1000s of boxes. This is a nightmare to manage without awesome tools like puppet, chef, etc.
The Magic
Work within these constraints even when you don't have them
Your apps will be better.They will respond better.They will be more efficient.
Your users will be happier