Google App Engine vs Windows Azure

The war of the Clouds has already begun. As more and more Enterprise, personal apps choose to go online, Cloud is getting richer, more powerful and impact? Every other day we see a new cloud service coming up.

There are 100s of Cloud services that let you host your apps on their Servers with a highly scalable architecture, and High availability (Practically five 9s of uptime), all that at a fraction of cost of ownership.

Without getting into detail of stuff you, probably, already know, let’s give a look at comparing the cloud Computing services from industy’s leaders. Let’s compare : Google`s App Engine vs. Microsoft`s Windows Azure, back to back, feature by feature:

Language Support:
At this year’s PDC, when Microsoft talked about Windows Azure, the announcement came with a surprise that blew everyone away: Support for  .NET (C# and Visual Basic), C++, PHP, Ruby, Python, Java.
On the other hand, Google App Engine does only Java and Python, atleast at this time.

Programming languages is not the only restriction in GAE. Another restriction is that you get only Servlets, JSPs, you can’t host EJB based Apps. Now that’s not good!

Winner: Azure

Application Types
Azure offers two different kinds of application models: Web Roles and Worker Roles. Web roles are your typical request/response HTTP paradigm similar to GAE’s Web based Request model. More interesting is the Worker role that adds processing and logic that does not need to be triggered via a web request, rather, run Natively on the system as Service/process. This gives you the ability to run background tasks and opens up a whole raft of application possibilities. On the contrary, limited stuff can be achieved in AppEngine using Cron Jobs or via Java/Python based application schedulers.

In GAE, it would go like this: The Cron job needs to ping a URL which executes a task, but that task is limited by the request timeout. Basically you have 30 seconds to finish processing while Azure can run for hours on a single task. May be, this is not the best example as it’s asynchronous but I know you got the point.

Winner: Azure


Development/Ease of Migration

Both of them provide a secure access, abstract from the underlying OS, hence both prohibit system level access like Files, Sockets, etc. This introduces an additional step for the the developers to make sure they run independently. Like Microsoft quoted “give us your application in USB drive that can run with .bat file”

Both cloud services offer a number of plugins for IDEs to make application development and deployment easy. Microsoft wants developers to automate the deployment from a bat file or any Windows native runnable, on the contrary, Google gives you Deployment descriptors for directly deploying into the Webserver. Because of this, people would argue that GAE is simpler when it comes to application deployment.

What’s more important is to emulate the GAE and Azure system offline. Developing an application anywhere, anytime for the cloud is a key enabler. Though, both of them claim to be competitive, but in my experience I found AppEngine Emulator works 99% cases, Azure misbehaves, sometimes.

Winner: AppEngine slightly better than Azure

Integration with Other Apps

Google will let you use all your Google Apps (Accounts, Docs, Gmail, IM etc) Pre-integrated with the service at almost no hassle. With this comes integrated email, XMPP IM at zero cost. Azure looks pretty cool, on this too. Microsoft claims that it will integrate well with SharePoint, SQL server, outlook and all other apps that Microsoft has to offer. Of course, you will have to purchase them.

Winner:  -Tie-

Customized solutions

Another important point of consideration is “How customizable the solution is”. What we actually mean is: apart from the default webserver/database can we choose any other? Yes in Azure, No in AppsEngine. Azure will let you run a different database and webserver of choice but Google restrains you to their proprietary solution. I know Google’s solution is awesome but what if my application is written in such a way that it needs AppServer like Weblogic and an Oracle database?

Winner: Azure

Performance

We are not comparing the hardware both clouds have to offer, ofcourse both of them are good. Rather we are comparing the services that come built-in for High performance, distributed applications. AppEngine offers distributed caching using Memcache. I heard Azure plans to include Velocity. 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.

Winner: Hard to compare

Scalability
Azure claims High scalability, but is yet unproven in this area and would remain so until we see their service Officially launched, next year. On the Google’s front, web is the proof that GAE would not hold up against traffic of a serious or sustained nature. Concerns with CPU and storage limitations, caching, database immutability plus one way in and out ( via the Google API ).

In GAE the app automatically scales. In Azure you need to change the config to add new web or worker role instances. For few this is more painful as it requires more monitoring and it’s also harder to write worker roles that balance effectively especially since in code you can’t tell how many are running.

Of course we will have to wait and see how Azure stacks up in this regard practically, so it’s pretty impossible to compare both technologies at this time.

Winner: -Tie-

Storage
Azure offers a few different storage options including Table Storage that leverages the ADO.NET Data Services Framework to get the job done. GAE encourages Persistence and “soft schema” based large tables which are able to achieve High performance using auto-partitioning approach. On the bad side, GAE blobs are stored in the regular data store and are limited to 1MB.  Azure supports 50GB blobs. Which is something serious.

Winner: -Tie- (Both have advantages, flaws)

Cost of Ownership

Though official packages and plans aren’t out for Azure, but there’s one thing we know of for sure: It’s definitely not free. Google gives you a fairly capacitive Engine for free and of course to scale higher, you need to pay an affordable amount.

Google offers a decent resource utilization (CPU and bandwidth) that can serve 5 million pageviews for an average application. For free account, AppEngine restricts total storage to be less than 500mb. But I believe 5 million transactions capacity would be enough for small enterprise or a self-hosted developer webapp.

From what we have learned from the past, there’s no doubt Google’s pricing are much more competitive than Microsoft can ever think of. Credit goes to Open Source.

Winner: AppEngine

Verdict

Google’s offering is fairly proven and competitive when it comes down to prices, scalability and performance. But when it comes to application/language support, Azure takes a big lead. At this point of time, Google is not targeting to serve just-any-other business but rather a “niche of Enterprises, developers” that rely on Python, Java web applications based on simple servlets,  JSPs with decent persistence mechanisms.

Microsoft has really done a great job at expanding the horizon to a wider scope. I definitely applaud them for this achievement but it all nails down to one concern: Would you host your IT Business at the mercy of Windows Servers? You have to decide!

Note: This Blog will be updated as they change. So, make sure you subscribe to us below.

GD Star Rating
loading...
GD Star Rating
loading...
Google App Engine vs Windows Azure, 6.6 out of 10 based on 5 ratings

18 thoughts on “Google App Engine vs Windows Azure”

  1. You should compare Azure vs. Amazon Web Services, since they are more close. App Engine is a completely different thing to compare one by one like this.

    GD Star Rating
    loading...
    GD Star Rating
    loading...
    Reply
  2. Google APP Engine is using Python and Java Virtual Machine. There are more languages that run on top of JVM, not only Java but also Scala, Groovie or JRuby can be used (with some restrictions).

    GD Star Rating
    loading...
    GD Star Rating
    loading...
    Reply
  3. Azure is AWS powered by Microsoft (but on AWS you get even more server options). There are other players in the field – Rackspace also has offerings similar to AWS/Azure.

    App Engine, on the other hand, is very unique because they offer a restricted environment that scales automatically. None of the other players offer this – they offer “server instances” on demand, so, in a sense, it is the same as keeping your own datacenter – without having to take care of the datacenter hardware & network – but still having to manage it. The uniqueness in App Engine is that it doesn't require any server management – and this also explains why they had to restrict the environment that much.

    GD Star Rating
    loading...
    GD Star Rating
    loading...
    Reply
  4. Azure has two storage methods. In addition to the blob/table in Windows Azure, you can also use SQL Azure databases. These databases use T-SQL, giving you most of the power you would expect from SQL Server.

    GD Star Rating
    loading...
    GD Star Rating
    loading...
    Reply
  5. Very nice competency. I feel as comparing windows azure Google's app engine is more powerful. What u think?

    GD Star Rating
    loading...
    GD Star Rating
    loading...
    Reply
  6. 1. You can run other languages on App Engine – anything that runs on the JVM will work. Like Ruby (JRuby) etc.

    2. “AppEngine offers distributed caching using Memcache. I *heard* Azure *plans* to include Velocity. […] Winner: Hard to compare” [emphasis mine] No, that doesn't look hard to compare at all – it's a clear win for App Engine.

    GD Star Rating
    loading...
    GD Star Rating
    loading...
    Reply
    • Usually people would argue they are not even comparable but this comparison tells you what exactly is the purpose of each. There is no winner or loser in actual.

      GD Star Rating
      loading...
      GD Star Rating
      loading...
      Reply
  7. you wrote: “AppEngine restricts total storage to be less than 500mb” that is not true; limit is 1GB;

    GD Star Rating
    loading...
    GD Star Rating
    loading...
    Reply
  8. I had a go at GAE and it impresses me, a lot. Now it does have few weaknesses, like language support (natively, not thru VM) and datastore's max 1000 data retrieval.
    On the other hand, since I am a long time .Net developer.. it should be that Azure Platform is my first choice. However, I am reconsidering base on two important factors! 1. Pricing (google's pricing is so competitive) 2. Reliability (now, this is only my personal opinion but I trust google in this area)

    GD Star Rating
    loading...
    GD Star Rating
    loading...
    Reply
  9. Looks like an old article. However, there are factual errors.
    1. AppEngine supports 50MB blobs in its blobstore.
    2. AppEngine supports JVM class of languages not alone Java in that category.
    3. AppEngine free account storage is 1GB, B/w is 1GB out and 1GB in, 6.5 Cpu Hours and 2000 emails/day
    In reality, where the author has opined a tie, hard to compare are win features on Google App Engine.

    Warm regards.

    GD Star Rating
    loading...
    GD Star Rating
    loading...
    Reply
  10. How is “Integration with Other Apps” a tie?? GAE provides integrations with products that are all web bases and Azure provides integrations with products that work only on Windows……

    this analysis seems much partial to Azure..

    GD Star Rating
    loading...
    GD Star Rating
    loading...
    Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.