Is Google App Engine the wrong product for the market?
25hoursaday.com
25hoursaday.com
First, App Engine will really only run things that are written for App Engine. If you have a Python web application, there's a good likelihood that it won't run on App Engine because it does things that App Engine doesn't (like relational database stuff or cron jobs or whatnot). Enterprise applications are things already written.
Second, enterprise applications are usually things that don't need to support millions of users so much as they need to have features. You're not serving like Digg or Google so much as doing non-real-time data processing. So, App Engine's infiniscale thing isn't as important as a relational database's ability to have triggers.
Third, App Engine doesn't have an SLA. That's a harsh sell for enterprise stuff. It doesn't even have a way to make a backup of the database in a dump file. That makes it an absolute no-go.
Fourth, App Engine's low cost usually isn't a concern on the enterprise level (even if it should be).
App Engine is a cool service, but whether it will become important is yet to be seen. If you're running a small site (say, 1,000,000 pageviews per month), you aren't going to have trouble scaling a MySQL/PostgreSQL database and application. You'll normally be showing one pageview per second at that rate. So, it's just as easy to go with Slicehost or Amazon. And using Amazon or Slicehost or the like has advantages - you get to use any software you find useful, you can have relational databases, etc. So, for small sites, App Engine's scaling capabilities aren't so important.
For larger sites, you just can't deal without a backup strategy, SLA, and cron jobs. It's too limiting. Plus, when you're a big site, you can hire people to deal with scaling issues.
So, it misses a little on both sides. I really want to love it, but there are just some gaps in the offering that are really important. I don't think Google needs to worry about the low side since they can't practically offer things like JOINs off their architecture, but on the high side, they need to offer data dumps and cron jobs and a little more information about the data integrity in the system (how many copies, how fast is it replicated, etc.)
It is significantly easier to go with App Engine, though. There's a sizable group of people who don't want to deal with all the messy details of SliceHost or EC2. When you consider that all they really want to do is host a web application and have it scale, requiring them to start with a bare metal VM is total overkill.
Examples:
You are doing something location-based and what to find things within 10 miles of a location. With SQL, you can do a crude bounding box query if it doesn't have to be that accurate. You can even do better geometric queries with PostGIS. With App Engine, you can't even do a bounding box query. Inequality queries can only be on one field at a time. Beyond the location example, you can't say get me the items where comment_count > 5 and author_karma > 10.
You can't do joins and so you have to denormalize a lot of data that will perform fine as normalized data.
There is no OR operator at all.
Saying that it allows you to ignore the messy details is like saying that you can avoid having to get egg on your fingers making an omelet if you create a machine that can automatically create food. It is not easier to go with App Engine for the majority of applications which would benefit from simple things that App Engine doesn't support.
It is far easier to scale something written for App Engine. That's the payoff. Even if you have to port away from App Engine, you've still created a data storage strategy that doesn't require joins; you've still moved a lot of the data processing out of the database and into Python manually; you've still made it so that you aren't using any advanced queries. App Engine forces you to write applications in a way that scales. App Engine doesn't allow you to do any of the operations that make programming quick to do. It's a trade-off and depending on whether your application needs it, it can be worthwhile or not.
I've got my own colocation facility with virtual machines and the like as well as an amazon ec2 account with several vms, but I still make use of google app engine any time I want to write a facebook/orkut/myspace app.
For values of easier which include:
1) Learn to program in Python.
2) Forget everything you know about databases.
3) Lose the accumulated value of all reference work on the Internet on, e.g., "How do I send an email to someone 3 days after they sign up for my free trial?"
How many SLAs actually pay for the incurred loss? Sure, a month of free hosting is nice, but does it really make up for the loss of a day?
> It doesn't even have a way to make a backup of the database in a dump file. That makes it an absolute no-go.
Why does the backup format matter?
http://code.google.com/appengine/docs/roadmap.html
-- @mdrcode / App Engine PM
But that's today, and I think the business will grow up fast. Hosting apps and databases rather than VMs and block devices (Amazon's current model) allow more granular control of resource allocation. At the same time the app hosting model lets you export problems such as geographic replication and failover to the hosting provider. The app hosting business can be accelerated by building on top of VM hosting infrastructure from companies like Amazon.
The way I see this playing out: VM hosting will continue to proliferate. App hosting will start to get popular and the frameworks will get fleshed out with the functionality 80% app developers need. App hosting companies will build their infrastructure on top of VM hosting infrastructure. Interoperability standards will get created (probably in the form of extensions to frameworks like Rails and Django). As there are more companies offering app hosting and the hosting environments get more feature-complete companies will start to switch for new development. In another 3-5 years we will see most new services being built on app hosting rather than dedicated/shared/VM hosting.
For legacy apps and apps that don't fit in the limitations of something like App Engine the VM hosting model works well. I've written one app on App Engine and I'm in the process of moving my company's legacy code base to EC2 hosting right now. VM hosting is always going to give you more control than app hosting just like running your own hardware will always give you more control than VM hosting. That said app hosting will give developers more pre-built infrastructure. How many devs actually want to patch servers or set up MySQL site-site replication? Negotiate bandwidth contracts? Rack servers? Not only is that stuff irritating to deal with, it costs money. App hosting is a pretty big win.
So is App Engine the wrong product? I don't think so, it's just not done yet.
Any small team of developers can deploy a successful web application with no system administrators and no VP of operations. GAE takes away all the complexity of databases, replication, redundancy, monitoring.
For my last project (http://www.btexty.com , an open mobile messaging platform), we switched to Python and GAE, moving away from a Ruby On Rails setup on dedicated hosting, that we used from a previous project (http://www.moqpon.com mobile coupons).
I'm very happy with that decision. For a duo of developers, forgetting about the hosting platform allows to focus on product development and dramatically increases productivity.
As a platform for startups, rather than the enterprise, GAE makes a lot of sense.
I can also imagine applications that designed for the user to be able to install it on their own AppEngine account. Maybe something like Wordpress for GAE, or imagine a distributed/federated version of Twitter. People might find a new app very useful, but have concerns about investing time and effort in an application from some startup that could vanish on short notice. If they had it instaled on their own app engine account, they'd at least have a chance to move their data over to another application before entropy took its toll.
http://code.google.com/appengine/docs/roadmap.html
-- @mdrcode / App Engine PM
The main drawback is it doesn't scale, but you can move things to S3 or App Engine if you really need to. Use client-side processing with AJAX, CDN, etc.
Google's lock-in architecture isn't tempting for starters unless you plan to have a massive number of visitors.
Hobbyists either don't spend money or spend relatively little so I discounted them as a target audience of interest.
But App Engine is a free service... people who don't want to spend money are exactly the target audience.