
Introduction:
The most interesting part of the development usually falls on the first 33% of the project life cycle. And the most interesting is the creation of a draft prototype demonstrating your idea. After this point, the excitement begins to gradually decline as you begin to look out for something to be nesting, and you try to make your application scalable enough that it can withstand its success. Currently, I am a lonely actor, so on the one hand I don’t have the resources to mess with the hardware myself, but on the other hand my projects have no need for data centers.
The purpose of my analysis is to compare the two main players in the
cloud computing world,
Google App Engine (GAE) and
Amazon Web Services (AWS). Both of them have overclocked in the past few years, but which one is better for me? Let's figure it out.
Requirements:
Java support
- I have been writing in Java for more than ten years (hell, well, I'm an old man), so I feel pretty confident and get the project done to me the fastest in Java, and not in any other language. I also dabbled in Ruby, PHP, and Python, but this is not mine.
Easy and fast development
- I do not want to walk around the rake to do something. Give me a number of tools that solve most of the problems that each web developer faces - and I don’t need anything else.
Standard and future confidence
- You never know which project will launch a rocket and become a general hit. In order not to waste time , the platform should be such that you can add functionality without overwhelming it. Also, the platform should allow an easy move to another platform for cloud computing - if required. I do not want to be locked up in an ancient, closed, proprietary system with which I can not get out.
High availability and ease of maintenance
- The last thing I need is to wake me up at night due to the fact that the server is not working. The service I choose should be guaranteed to work and be fault tolerant. If problems do arise, they should be solved quickly and easily, requiring as little effort from me as possible.
Easy reuploading
- One of the main problems in the industry is laying out assemblies. The number of problems created by a bad update management system can simply be overwhelming. Nor can one underestimate the amount of time and resources devoured by these operations. I do not want to sit out for hours on the scripts, just to lay out the code for several dozen servers.
Easy scaling
- I think BIG. The system should be able to dynamically adjust to any increase in resource requirements. There should be an easy way to increase storage and processor resources — and without programming. The system should be able to work with one user, as well as with millions, without any problems.
Flexibility
- I am going to embody a bunch of ideas in some quantity, I hope good products and I don’t want to be limited in my abilities. Since I still do not know what exactly I will do, the system should allow absolutely everything to make my creativity flourish. I will use as many new technologies as I can, and these tools should not have any problems when working on a cloud computing platform.
Cheapness
- Hey, I'm trying to make money here. I want to get as much as possible, and I agree to pay a fair price for the services I use, but cloud computing should be financially meaningful. If I do not make money, then I would like to avoid bankruptcy while I try to improve the world.
Brief comparison of compliance requirements:
Let's see how GAE and AWS meet some of my important requirements:
Demand | Google App Engine (GAE) | Amazon Web Service (AWS) | Winner |
---|
Java support | Yes limited | Yes | AWS |
Easy and fast development | Yes | Not | GAE |
Standard and future confidence | Limited | Yes | AWS |
High availability | Yes | Yes | Draw |
Easy maintenance | Yes | Not | GAE |
Easy reuploading | Yes | Yes, with extra work | GAE |
Easy scaling | Yes | Yes you can do | GAE |
Flexibility | Limited | Yes | AWS |
Google App Engine fits most requirements very well. GAE is a comprehensive platform that makes development extremely quick and easy, as it provides a set of tools and controls that allow you to create and share programs without serious consequences. In it, you have ready APIs for login, storing and indexing data, sending letters and even for memking. However, due to limitations of the GAE platform, only a limited set of Java libraries are supported. Also, if you want to move your application from GAE to another place, it can be quite difficult, because you are forced to use some libraries that can be used ONLY in GAE. However, there is a platform called
AppScale that allows you to run your GAE applications on Amazon Web Services — and this somewhat reduces the risk of choosing a GAE. The biggest problem with GAE is that because it is a controlled environment, there are whole clouds of applications that you can forget about - and this can limit the scope for creativity.
')
Amazon Web Services is slightly different from Google App Engine, because AWS is more about infrastructure than platform, and this means that you have complete control over the hardware and everything that works on it. You can do whatever you want with the machine, run any programs and use any libraries. But
"the more power, the more responsibility" (as Uncle Ben said in Spider-Man 2). You can
really shoot yourself in AWS because you are on your own with regards to username, database, or memcache. You have the opportunity to do all this, but besides this you must be ready to support all this. For Eclipse, there is a special plugin that makes it easy to lay out builds on AWS, but it's still
very difficult . The AWS learning curve is definitely much higher and it will take a significant amount of time to make it work.
Brief comparison of free resources:
I want to minimize the cost of investments at this stage, since I do not even know what I will develop. Let's see what I get for free!
Demand | Google App Engine (GAE) | Amazon Web Service (AWS) | Winner |
---|
CPU time: | 6.5 CPU hours per day | PAID! | GAE |
Queries: | 1.3 million requests per day | - | - |
Outgoing traffic: | 1 GB per day | 1 GB per month | GAE |
Inbound traffic: | 1 GB per day | 1 GB per month | GAE |
Disk space: | 1 GB | PAID! | GAE |
Number of indexes: | 100 | - | - |
Storage Requests: | 10 million per day | - | - |
Mail API requests: | 7 thousand a day | - | - |
Recipients of letters: | 2,000 recipients per day | - | - |
URL requests: | 657 thousand a day | - | - |
Comparison failed. Google App Engine provides far more free daily resources than Amazon Web Services. Most smaller applications can run completely free on GAE, while AWS will force you to pay for any number of visitors. On GAE, your application may well roll out before you have to increase quotas. However, one thing I like about AWS is that they don’t watch every little thing, they just dump everything and look at CPU time and traffic. And the smaller the number of monitored parameters, the less likely that something will exceed the quota.
Brief comparison of paid resources:
When habraeffekt = D happens to my projects, I will have to prepare for the worst, namely, to pay for the resources that I use. I definitely want the lowest price since I'm trying to make money, not spend it.
Demand | Google App Engine (GAE) | Amazon Web Service (AWS) | Winner |
---|
CPU time: | $ 0.10 / CPU hour | $ 0.085- $ 2.40 / CPU-hour | GAE |
Outgoing traffic: | $ 0.12 / GB | $ 0.08- $ 0.15 / GB | GAE |
Inbound traffic: | $ 0.10 / GB | $ 0.08- $ 0.15 / GB | GAE |
Disk space: | $ 0.15 per gb / month | $ 0.08- $ 0.15 per Gb / month | AWS |
Recipients of letters: | $ 0.0001 per recipient | - | - |
Google App Engine again takes the lead in most cases - with a very reasonable price for CPU time and traffic. The only point where AWS stands out is potentially cheaper disk space, but you have to burn more than 50 TB to see at least some discounts.
Advantages and disadvantages:
Google App Engine (GAE)
pros
- For GAE to quickly and easily develop
- Maintenance free
- Very generously allocated daily free resources
- Quite reasonable prices when quotas are exceeded.
- Easy and quick layup
Minuses
- Some applications will be impossible to implement.
- Controlled environment does not allow using some standard libraries / frameworks.
- Relational databases are not supported.
- Additional work may be required when migrating from GAE (if needed)
Amazon Web Services (AWS)
pros
- Very flexible system, you can do whatever you want
- There is full control over the machine
- Simple payment structure, fewer quotas to watch out for
- You can use any database you want, there is a shell, ftp - everything you think of
- If you want, you can run the application on any server outside of AWS
Minuses
- High learning curve
- A lot of opportunities are left to the developer and you have to deal with everything yourself
- Making a simple web application takes much longer
- Prices are not as liberal as in GAE.
- A bunch of server maintenance concerns
Conclusion:
To be honest, I think this comparison was a bit unfair. My needs are very different from the needs of a typical business, when they are looking for maximum flexibility and can hire full-time engineers to learn everything from and to, and at the same time support the server. I also need a platform on which I can quickly implement the ideas that came to my mind without worrying about high prices, and at the moment Google App Engine is better suited than Amazon Web Services. GAE no doubt imposes more restrictions and in some ways it is worse than AWS, but I think that I am fully capable of working within this framework and making a high-quality product. So I chose Google App Engine as my cloud computing platform - and see what happens.
Winner: Google App EngineReferences:
- http://consultingblogs.emc.com/jaddy/archive/2010/04/09/google-app-engine-amazon-web-services-and-the-cloud.aspx
- http://stackoverflow.com/questions/791447/windows-azure-vs-amazon-ec2-vs-google-app-engine
- http://www.ardentlord.com/apps/blog/show/829881-spring-3-0-on-google-app-engine
- http://www.acrhodes.com/2010/02/spring-3-0-with-google-app-engine/
- http://www.royans.net/arch/google-app-engine-java-edition/
- http://code.google.com/p/appscale/
- http://ru.wikipedia.org/wiki/Google_App_Engine
- http://code.google.com/appengine/
- http://aws.amazon.com/