Running a website: Google App Engine vs. Amazon EC2
Since there are numerous articles about GAE and AWS, this article's point will be solely on running small to medium sized websites on both services.
Setting up the server
We tend to ignore the most important cost in any website project: Man hours.
Getting your server running, even with minimum viable configuration, is quite a task with AWS. Not to mention that you'll have to harden the server's security to a bearable level.
But, after perfecting your server, you can save a snapshot of the instance. The snapshot can instantly spawn you a perfect server for your new projects.
App Engine's initial setup is much easier: Just create a new project from the web interface and you're ready to go.
Tradeoff: GAE gets you up & running in seconds. AWS' initial setup will consume your precious man hours.
You'll get a free year of one EC2 micro instance when you first sign up.
With Google App Engine, you'll get free daily quota for each project you set up. Practically enough to keep a small site running 24/7.
Personal note: I found the GAE quotas
don't even count count only the outgoing bandwidth for the static requests (static HTML + CSS). So this site should never cost page could be served 250K times/day before costing me a buck.
On customization point, App Engine will lose the battle. You have different sets of instance classes that vary at performance level, but nothing else.
Google App Engine is a full platform as a service (PaaS). It means you shouldn't ever need to worry about operating systems or other sysadmin stuff. It just works.
But reliable, maintenance-free service doesn't come without costs. App Engine can be a pain if your project needs some custom software.
The absolute opposite is Amazon EC2. The Amazon Web Services is an infrastructure as a service (IaaS), that means you will be in charge of the servers themselves.
You can customize the OS, server software, plugins, connections.. Everything.
But practically you'll have to hire a sysadmin just to keep your servers up & running.
Tradeoff: Google bounds you to their choices. Amazon gives you total freedom.
When you develop with Amazon, you're practically free to do your choices about what programming languages, frameworks or plugins to use.
Google App Engine is more restricted. For instance, you don't have cURL support installed with PHP.
You can only use PHP, Python, Java and Go with App Engine.
Using PHP, you will get Wordpress installed on GAE, but some of the plugins are just unusable.
The good news is, that App Engine is designed to scale. Once you get the code running, everything will scale up to a huge amount of simultaneous users.
With EC2, you of course can double the server's performance a couple of times. But after that, you'll be bound to those unscalable technical decisions you made on day one.
Tradeoff: You can do all the fancy things with EC2. But GAE is always scaleable and reliable.
When developing with EC2 instances, you will need to understand the nature of virtual servers.
You have a portion of a physical server that you can play with however you want to.
But if that physical server experiences a fault, so will your server.
So running on a single EC2 micro instance is, while cheap, not the recommended solution for any production environment.
Running your site on GAE can also have some unwanted side-effects. For that, we can blame the big ol' mr. Google.
Since Google shares it's servers within it's all products, you can bump into some interesting problems.
For example: Since Turkey's government has blocked Youtube servers, it has also blocked some of the shared servers App Engine uses.
Overall, both are great platforms to build your site upon.
If you can afford a sysadmin, you can go with Amazon. But if you're just a small company building websites, you should give App Engine a shot.
If you're building static sites or basic Wordpress/Django is good enough for you, go with Google.
But if the project requires node.js or custom plugins like wkhtmltopdf, your choice is Amazon EC2.
Permanent link to this post: http://putrats.com/blog/1