Here are some reasons to use Google App Engine (GAE) and advantages of the platform compared to Azure
- Want to write code in Java, Python/Django or any language that runs on the JVM
- Need integrated mail functionality
- Azure requires your own SMTP server outside of the cloud environment
- Need integrated XMPP messaging
- Again, Azure would need an external server.
- Need scheduled processing jobs
- You can be creative and write something with queues and/or worker roles or perhaps a service running elsewhere to ping your web server on a schedule to run a job.
- Need distributed caching via memcahe
- There has been some talk of adding Velocity to Azure which would be comparable to memcache. Otherwise, if you only have one web instance you can use ASP.NET caching. If you have multiple web instances, then you need a way to invalidate the other server’s cache. Inter-role communication is coming soon which would make this possible. In the mean time you could use .NET service bus to communicate between web role instances (in theory it seems like this would work)
- Want mostly free hosting for small applications – GAE has a free quota
- Azure is free up to a limit in the CTP, but once live nothing is free. I’d really like to see Microsoft keep some free version for developers to experiment with or include CTP-like free quotas to BizSpark members. Developers like to tinker and release small apps. If App Engine is free, they are going to chose that and will probably be less likely to chose Azure once comfortable with GAE. It seems like a good approach to provide some level of free support until an app becomes large enough where a developer can afford to pay (or it’s too costly to provide them free service)
- GAE has a ridiculously fast deployment time. One click in GAE launcher or a console command and the application deploys in less than a minute
- Azure deployment is just brutally slow. Make a sandwich, grab a good book – it’s going to be awhile. This is especially an issue when you consider the next bullet point. Every time you deploy to Azure it’s provisioning a new virtual machine unlike GAE which is just copying files. I’m sure there are good reasons why this needs to be done, but I really wish it had some quick deploy / file copy option. There is nothing more gut wrenching then waiting 30 mins to finish deploying and you forgot to to change one line of code. Now you are stuck waiting another 30-45 mins to delete the current instance and redeploy.
- and much much more…