Hi folks, my name is Johanna White, and I’m a senior product
manager in Microsoft’s Online Services group. I’ve been at Microsoft for three
years, first running the Ramp Up program
(a free online learning program for developers), and then working on the SharePoint team before I moved to
Online Services to focus on developers. I’ll always have a special place in my
heart for developers – I was a Java/VB developer in my previous life : )
I recently attended a Seattle GTUG (Google Technology User
Group) meeting, and it got me thinking about how much more Windows Azure has to
offer, compared with Google App Engine. I have a great deal to say on that
topic (and not just in this post). But before we talk more about that, let’s
establish a few cloud computing definitions first.
As you can see in Figure 1 below, we can look at cloud
computing as a stack of 7 components. The bottom two levels, Hardware and the
Virtualized Instance, are typically provided by Infrastructure as a Service
(IaaS) vendors, such as Amazon’s Elastic Compute Cloud (EC2) or in the future, Windows
Azure as announced at the 2009 Professional Developer’s Conference. This
allows developers the freedom to customize their own operating system,
services, web server and framework for running their application.
Figure 1: Seven layers of a cloud computing
Platform as a Service (PaaS) vendors such as Microsoft’s
Windows Azure provide all the components necessary for developers to deploy
applications, up through and including a set of frameworks. The option of using
alternative frameworks and web servers is an important one as it enables a
hybrid of Microsoft and non-Microsoft software to run on the same platform. Now
that we have a working definition of PaaS, let’s compare Microsoft’s Windows
Azure to Google’s App Engine. Today, since storage is critical to every
application, we’ll restrict the discussion to the topic of storage. Coming
soon, we’ll look at the other pieces of the stack between the two systems.
If we don’t dwell on Google’s inflated brand, there are a
few features that we can use to compare the two offerings, summarized in Figure
2. The thing you will find is Google at the surface, Google’s solution sounds
good but in the end, it’s something you may want to use for prototyping but not
deploy your production system on. With Azure, you can build on it from
prototype through deployment since it will scale based on your needs.
Figure 2: feature-level comparison between GAE and
GAE only provides two methods of storage for developers
looking to write applications on their platform: the Blobstore and the
Datastore. The Blobstore is optimized for binary objects (the space used
contributes to the Stored
Data (billable) quota). The Datastore is optimized for non-relational
entities. So, while the storage options for GAE are usable, they are very
basic. With no option for volume or relational storage, GAE is simply unable to
handle larger, transactional requirements. (Read: Google App Engine is not
enterprise-ready.) Contrast this with Microsoft’s track record in enterprise-readiness
and Azure’s diverse customer base, which includes several names from the
Fortune 500. (See here
for published Azure case studies.)
What about JDBC calls? Oh, you can make them – they’ll just
throw an exception since GAE only supports a subset of the Java Library known
as the JRE Class White List. (Read: Google App Engine is not developer-friendly
In terms of SLAs, Azure has one, Google does not. Google
has announced intentions
to introduce an SLA for GAE which we will look at when it becomes available.
However, as of right now, if GAE goes down, you have no recourse for your lost
time and money.
Compare what you get in GAE vs Azure and you see a very
different story. With Azure, you get an SLA, multiple API and runtime
environment support and in the area of storage, the ability to select the type
of storage you want from semi-structured through relational storage with SQL
Azure. While Google announced intentions to support hosted SQL at some
point, we have yet to see whether this addition will truly satisfy business
customers. Oh, and this functionality , along with other services considered
“advanced” will cost customers extra, too. On the
flip side, since SQL Server is one of the most popular databases in the world,
having a compatible cloud version of SQL Server allows developers to move
their existing applications to SQL Azure very easily. Heck, you can
even use Microsoft
Access against SQL Azure. Plus, you have tools like the SQL Azure
data sync tool which synchronizes your local SQL Server data to your SQL
Azure deployment. If you want to migrate, check out the SQL Azure Migration Wizard.
So, let’s summarize:
lacks a true RDBMS. Azure has SQL Azure.
has limited support for database APIs. Azure supports ADO.NET.
has no SLA.
the above constraints, GAE is good for prototyping but not for production
deployments. Azure can scale from prototype to staging to production.
I have to conclude: Google App Engine is most definitely not