Cloud Computing boot camp
 on the Google App Engine


                   by Matthew McCullough of Ambient Ideas, LLC
Twitter
 @matthewmccull             Matthew
Blog
 http://www.ambientideas.com/blog
         sidebar has all my social media links


Email
 matthewm@ambientideas.com
GitHub
 http://github.com/matthewmccullough
http://flushirts.spreadshirt.com/us/US/Shop/
nd
                         o   u
                      g r
                   c k
                B a
          y &
    o r
 h e
T
                                           ic e
                                        c t
                                     r a
                                    P
➊
1960
“computation may
someday be organized as a
public utility”
                -John McCarthy
circa 2000
“Cloud Computing”
       coined
“A style of computing in which
dynamically scalable and
often virtualized resources are
provided as a service over the
Internet.”

                         -Wikipedia
“Users need not have knowledge
of, expertise in, or control over the
technology infrastructure in
the "cloud" that supports them.”

                             -Wikipedia
What is the Cloud?
Scalable
Dynamic
Pay-per-use
Stateless
Affinity-less
Scale up
Scale down
Grid
Why the Cloud?
Cost of startup
Experimentation
Transition to
 Production
No licensing fees
Instant availability
What’s the most
  expensive item on a
startup’s balance sheet?
You!
Time savings
Hardware setup time
OS setup time
Database setup time
Web container setup time
Server setup
Server destruction
Cloud Players
From most open to
most constrained
Rackspace Cloud Servers
       (formerly Mosso)
Rackspace Cloud Sites
Amazon EC2
Mor.ph
Google App Engine
Levels of
Abstraction
Operating System
     Images
Predetermined
or abstracted away
Programming
languages?
Ruby?
Java?
PHP?
Python?
Anything?
File Systems
Rackspace Cloud
Traditional File System
Amazon EC2
 S3 Buckets
Amazon EC2
Elastic Block Storage
Mor.ph
Traditional File System
Google App Engine
     BigTable
Databases
Rackspace Cloud
Microsoft SQL Server
Rackspace Cloud
   MySQL
Rackspace Cloud
  <any db>
Amazon EC2
Simple DB
Amazon EC2
 IBM DB2
Mor.ph
PostgreSQL
Mor.ph
MySQL
Google App Engine
  Big Table
Operating
 Systems
Debian, Fedora, Ubuntu
   on Rackspace Cloud
Windows Server
 on Amazon EC2
1000 variants of Linux
    on Amazon EC2
CentOS Linux
  on Mor.ph
Custom Linux
on Google App Engine
Pricing
Rackspace Cloud
1.5¢ per hour
Amazon EC2
Mor.ph
Fully supported level
    $1500/month
Mor.ph
  Free human inside
specially marked boxes!
Google App Engine
We’ll give it away free
and make up for it in
        volume!
➋
Google   App Engine
April 8th,   2008
small company
Python!
April 7th,   2009
Java!
But more like
Banned




         Java
Getting Started with
     GAE
Free to start
Cell Phone #
Regular Google
   Account
10,000: first wave
95 minutes
25,000: second wave
Everyone: third wave
➌
Technology Stack
SDK
Shell scripts to manage
          apps
Source code included
SDK-version-locked
 by the SDK JARs you
        include
Subset of JDK 1.6
Custom Class Loaders
“Sandbox”
Whitelist of Classes
Caution!
Can work on desktop,
    not on GAE
Application ID
Globally Unique
required for
 deployment
xxxxx.appspot.com
Servlet API
Jetty
JSPs
Java Mail API
Google Web Toolkit
Authentication
    (2 options)
Integration with
 Google Accounts
Admin & User Level
   Permissions
Roll your own
(hint: use SpringSecurity)
Memcache
(as an alternative to persistent disk storage)
Low level API
JSR-107 / JCache
    (javax.cache)
BigTable
Relational Database?
Relational Database
Can import from
   existing DB
JDO
JPA
Limited GORM-JPA
DataNucleus
Logging
java.util.logging
System.out == info
System.err == warning
Log4j
a few NOs
No Hibernate
No file writing
No threads
No server affinity
Even for sequential
     requests
No sockets
But... you can use URLFetch
     for HTTP/HTTPS resources
No JNI
No more than 30s
Ouch!
Custom
timeout response
❹
Admin Console
Statistics
Graphs of Usage
System Health
Logs
Pay for
large usage
Daily Budgets
Budget per resource type
Dev Tools
Eclipse
Jetty Demo Container
Bundled with
GWT plugin
Ant
Maven
Grails Plugin
❺
Ideas & Demos
http://appengine.google.com/
http://*.appspot.com
❻
Ecosphere
Hyperic
Yup, those guys
CloudStatus.com
Mor.ph
Remember, that layer
 on top of EC2?
Humans
Cloud Fallout
Large Setups more
economical to self-host
Out of your hands
Uptime?
Do you trust the
    vendor?
Persistence can be
       weird
Give it a try!
Resources

• http://mor.ph
• http://appengine.google.com
• http://www.rackspacecloud.com/
  cloud_hosting_products/servers
  (formerly http://mosso.com)

• http://aws.amazon.com/ec2/

Cloud Computing Bootcamp On The Google App Engine v1.2.1