GOOGLE JAVA APPENGINE VS. AMAZON EC2
Google Java AppEngine
Pros:
- Easiest way to deploy your *basic* Java Web Applications (WARs) into *basic* scalable environment
- Bunch of instrumentation out-of-the-box (like GAE Dashboard)
- Developers productivity is a focus (Eclipse plugin, overall techy-oriented Google approach)
- If you use integrated technologies (like memcache or URL Fetch, for example) the payoff can be quite substantial as your memcache or URL Fetch will seamlessly scale on Google infrastructure (no less)
- Free sandbox
Cons:
- Current limitations are quite significant (if not downright killing) for many real-life Java web applications
- Prohibits practically any types of additional middleware; you can't use GigaSpaces, GridGain, Terracotta, Coherence, etc. on GAE (at least for now, and at least in some practical way); most of the such software won't even work on GAE (remember - everything must be a servlet in GAE)
- Doesn't really solve (for now) the problem of... "Where is my RDBMS?!?" How many web application do you know that can live without being connected to your database (hosted, incidentally, NOT at Google)?
- Absolute Google technology lock-in
Amazon EC2
Pros:
- Full freedom and no restrictions (almost) to run any application, any language, any framework or middleware - embodies traditional cloud computing idea
- More enterprise-grade services like S3
- Rich 3rd party management application ecosystem
- Did I mention freedom and lack of any restrictions?
- Much less of the lock-in (comparing to GAE)
Cons:
- Takes more time initially to setup
- There are no free sandbox-ing
- Somewhat expensive for 24/7 operations
- Less developer-oriented (comparatively to GAE)