PDA

View Full Version : Google App Engine



Zeggy
11-25-2010, 12:06 AM
Google App Engine

Google App Engine ('http://code.google.com/appengine') is a cloud hosting platform. This article is going to give a quick overview of the features, advantages and disadvantages of using App Engine as a host.

Features/Advantages
Cost
App Engine is free ('http://code.google.com/appengine/docs/quotas.html#Requests') up to a certain point. After that you can start paying for what you use, and only what you use. No wasted money for resources that you'll never use. And when you start to use a lot of resources, you don't need to worry about upgrading your hosting plan or buying another server.

Scalable
If your app is written well, it can scale on the platform very easily. App Engine will automatically start new server instances whenever your app needs it.

Speed
It's hosted on google servers! How fast does google load for you?

Management
The servers are completely managed by Google. You only ever need to worry about writing your app.

Google User API
You can directly use the google user API and let visitors log in with their gmail address. This might not be useful for every app though.

More APIs ('http://code.google.com/appengine/docs/python/apis.html')
App engine provides a lot of services - memcache, cron jobs, task queues, xmpp, url fetch, and more!

Updates
Some of the disadvantages I list below will be fixed in the next release, and app engine is constantly upgrading the platform with new features and removing limitations.


Disadvantages
Platform
App engine is a platform, not an infrastructure. Chances are, most frameworks and tools you use will NOT work on app engine unless they were specifically designed for it.

Datastore
The app engine datastore is built on Google's BigTable, a nosql database. This means you don't normalize your data, and do most of the necessary computations before you put data into the database. You can't perform aggregate functions like sum or count, you can't join data, you can't use the wildcard, etc. Not every app might be suitable for this. I don't consider this a disadvantage, but some people might.

Programming Languages
At the moment, app engine only supports Python and Java. That means if you want to run something like PHP, you'll need to run a java implementation of php, like Quercus ('http://www.caucho.com/resin-3.0/quercus/'). (New languages may be supported in the future, see the most requested languages here ('http://code.google.com/p/googleappengine/issues/list'). PHP is first!)

File/system access
Your app runs in a somewhat restricted environment. You will have no direct access to the server other than to upload files and migrate database, and your code will have no write access to the filesystem.

Limitations
The platform places some limitations on each app. For example, your client-facing pages must load in under 30 seconds. Your entire app must load into memory in less than 30 seconds. If you're building a very (very) large app or using a very heavy framework, this may cause some problems.


Well, that's it. App Engine isn't suitable for every programmer or for every app, but I do think it's pretty awesome and if you're interested, you should at least consider trying it out. It's got great documentation, and a nice tutorial for beginners. If you've got any questions, feel free to ask me.

a_bertrand
11-25-2010, 06:39 AM
Well... price is not cheap as taken from their site:
"Pricing that makes sense: Each application costs just $8 per user, per month up to a maximum of $1000 a month. Pay only for what you use."
So if you go for a commercial usage (which should be the case at the end of the day) you must make sure you cover at last 8$ per player or users or max 1000$ and this per month. But with 1000$ per month I can assure you that you have quiet some room to host yourself all what you would want. But without tooking this road this is how much it will cost:
http://code.google.com/appengine/docs/billing.html

Now what happen if your budget is over? Well your app will not be accessible. Sorry but for me I do like better to have a slower website in case there is too much usage instead of having a site which works only a couple of hours per day.

The data storage limitation for me is something quiet important. Sure you could try to work around it, but honestly why redo all the work of what a normal SQL database do for you? In some case it is easy to have some limited SQL, but in most case, it will be quiet some work. Yet, by checking carefully it seems that you can store and retrieve basically any objects, which means you work with serialization on the database. Don't know how powerful is the retrieval but storing like that can be convenient.

On the plateform, python or Java are not the road I picked and I will hardly change it now. Other than that, they can be of good choice if you didn't have yet a lot of thing already. Both offer a lot of libraries and a lot of power, even if personally I would choose Java over python.

As you said Zeggy it is interesting, and I remember I checked it a couple of month ago, yet I don't believe I will use their services (beside the fact I'm not such big fan of Google) as I prefer to have a well known monthly cost and have all the freedom I want for my hosting. For example I want an IRC server? ok fine I host one.

Zeggy
11-25-2010, 11:40 AM
That cost per user you looked at shows commercial pricing for businesses, which isn't released yet. The pricing is for company internal apps, which is why they price by users, ie. employee count.

That link is the current billing scheme. Yeah, you need to set a daily budget, otherwise if your website suddenly becomes a huge hit and gets millions of visitors, an unbudgeted account will suddenly find a huge charge on their bill :P And if you go over budget and your website is suspended, it's basically like other web hosts when you use too much resources. The difference is that you simply increase your budget in the admin panel, instead of buying a new server and configuring it, etc., or upgrading your hosting plan which requires you to wait for the hosting company.

Yep, I agree, the datastore isn't suitable for every app.


Don't know how powerful is the retrieval but storing like that can be convenient.
You work with individual objects in the database, and it's possible to use it as an oop database, so objects can have ancestors, children, inheritance, etc.

And about your last point, yeah, I still maintain a vps for non web-based services and whenever I need shell access for some things.