I was grocery shopping the other day and wanted to find out what a hothouse tomato is so I spoke the words “hothouse tomatoes” into the Google Mobile App for the iPhone and it returned “penthouse letters”. Not exactly what I was expecting.
Normally this app is amazing in how well it figures out what I said but I can’t figure out how it got this one so wrong. Strange indeed.
Google announced their App Engine initiative today. It’s a web application building environment that provides the runtime, the application framework, the database and the storage space. The first version supports Python and comes with enough storage, CPU and data transfer for most initial applications.
I signed up and got my beta account tonight. They’re giving out 10,000 accounts during the beta. I got going on the tutorial and got to the next to last section where they talk about static files and mapping them with the application description and boom! it breaks. I mean, I take exactly what the tutorial shows about mapping in external stylesheets and it won’t load the application descriptor any longer. I traced into some of the code in their appserver Python code and there seems to be a problem with how they’re mapping the file paths with regular expressions. I’m not a Python guru so I’ll let them figure it out (plus I’m tired) but it’s not like I’m on an exotic system (Thinkpad running XP with Python 2.5.2) and I already saw a few others in the user group talking about this same issue.
I was able to get around it by mapping the css files directly using a static_files descriptor vs. a static_dir descriptor so I can keep going at least.
Overall the environment seems pretty cool to begin with. Creating tables in the BigTable store via Python seems pretty damn easy. Scaling should be pretty easy as well unless you do stupid things. Also, being able to tie in directly to the Google user accounts makes things very very easy as well.
I think a lot of folks will gravitate towards this to try it out but I do wonder how many will really build apps on this system since its same advantages are also its biggest disadvantage. You’re tied to the Google platform now. Sure, you got going fast but now how do you scale your app/company when you need more control? Yes, the app will scale but we all know that once you get to a certain size you end up with more than just a web application. Then again, you could probably host some of your application on your own servers and then just connect to the Google servers/data store via REST or other web service APIs.
Amazon’s offering, while not as integrated, seems to offer more ultimate flexibility that you can grow with and then not being tied into using them for everything down the road. You can build whatever environment you want on their EC2 platform, use S3 however you want and also build on SimpleDB or just deploy MySQL on EC2 instances for your database access.
Each platform will appeal to people for different reasons. I think I would gravitate towards Google just for its ease of use (so far) and ability to get an application launched quickly but if my app got popular I’d really have to start figuring out how much it will cost to scale on Google once they get out of beta and see if I can live with the constraints it puts on me. I’ll know more when they start to disclose more concrete details about their future plans for App Engine.