For a long time, many have compared Amazon AWS and Google Apps Engine as a cloud-based solution — although the comparisons were not entirely correct — because, after all, these are solutions of different “weight categories”. If Amazon offered Infrastructure as a Service (IaaS), then GAE is pure Platform as a Service.
And Amazon went on the offensive - today announced Amazon Elastic Beanstalk.

So - what is the fundamental difference between IaaS and PaaS. IAAS is essentially a computer - on which you want what you are doing. Connect drives, install OSes, set up all the software. Amazon simply allowed to build and configure such a computer through web services, and also provided a number of additional services that, for example, could launch another such computer in case of increased load (well, a lot of other things). This is if brief and exaggerated.
PaaS did everything for you - they built the computer, installed the operating system, and even started all the software and set it up - you just need to download your specific program that will use it all - and not think at all (in theory) how it all works , scaled, cached, backed up, etc.
Each solution has its pros and cons. Amazon AWS and IAAS are more functional - but harder to use, GAE and, accordingly, PaaS is easier to use, but imposes a number of limitations.
And today, Amazon has gone on the offensive - a PaaS solution based on Amazon AWS services has been announced:
Amazon Elastic Beanstalk . Essentially, this is Tomcat (that is, only java) running on EC2 instances that are scaled using Amazon CloudWatch, which can use (including) and Amazon RDS (MySQL in the Cloud) as a database. Everything is managed through the convenient Amazon AWS Managment Console (including application deployment). That is - the convenience of GAE - but without its limitations.
I must say that Amazon is not the first here - there have already been projects on organizing PaaS for Java on top of Amazon services, this is
Mor.ph (they switched to a slightly different area), and
Stax and
CloudFoundry from SpringSource.
Amazon has every chance to succeed (if of course such a service will be demanded by users — why not, see below).
')
So - what does Amazon CloudFoundry offer?
1. Simple deployment - really simple - you just specify the name of the application and load the cook-nick (well, almost like in GAE)

2. Versioning (in GAE too)
3. Run any Java applications - no restrictions on the API (a clear breakthrough compared to GAE)
4. The use of any database (again, one of the main claims of developers to GAE). True, in this case you should think about scaling yourself - if you use the built-in HSQL - then how will this work when you have not one - but two volumes?
5. You have a file system !!! (well, well - in GAE, if you wish, it also exists - but with limitations).
5. Monitoring resources used, viewing logs (again, this is similar to GAE)
6. Automatic scaling (same as GAE)
7. Access to the system via SSH (if you really need to tighten something with handles)
So - in the black, the complete freedom of Amazon AWS with the same simplicity of deployment, management and monitoring.
Well, what's in the red?
1. Only Java (at least for GAE there is a Python).
2. Absolutely automatic scaling will not work. Since the application can be anything in principle - you yourself should take care of the correct work in the cluster of such things as (for example) hibernate cache or lucene indices.
3. The main thing is probably the price. On GAE, most sit in the free limit, then you have to pay. And if Amazon Elastic Beanstalk itself will cost you free, then you will have to pay for all the services used (EC2, EBS, CloudWatch, etc.) and immediately. Calculation on the
site gives a minimum of
$ 37.22 per month - and this is with one t1.micro instance! And if you add a base on Amazon RDS, yes, a normal instance, and let the cluster turn on ...
That is - for a startup - where one machine is enough - it turns out to be expensive. For a developed project - where the question of scaling arises - then yes - it can help - but usually such issues are already being resolved by that moment.
Although - if someone already uses Amazon to host java applications, this solution may be useful - considering that for free an additional opportunity is provided for monitoring and managing simplified deployments.